www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoppoint/AddCage.m
function [op,fact_i,ptr] = AddCage(op,varargin) % op = AddCage(op,index) creates a new value, assigned to factor(index). % The current pointer is overwritten. % A suitable name is generated, based on the original column name. % op = AddCage(op,index,name) assigns the factor as above, using the % given name rather than a generated name. % op = AddCage(op,ptr) adds a new factor to the dataset, assigned to ptr. % (call to addfactor) % op = AddCage(op,name) creates a new value and assigns this to a new % factor. % % [op,index,ptr] = AddCage(...) returns the assigned factor index % and the assigned value pointer. % Copyright 2000-2007 The MathWorks, Inc. and Ford Global Technologies, Inc. name = ''; fact_i = []; addptr = []; if ~isa(op,'cgoppoint') error(message('mbc:cgoppoint:InvalidArgument')); elseif nargin<2 error(message('mbc:cgoppoint:TooFewInputs')); end switch class(varargin{1}) case 'double' fact_i = varargin{1}; if ~ismember(fact_i,1:length(op.ptrlist)) error(message('mbc:cgoppoint:InvalidIndex')); elseif length(fact_i)~=1 error(message('mbc:cgoppoint:InvalidIndex1')); end if nargin>2 && ischar(varargin{2}) % given name name = varargin{2}; elseif isempty(op.orig_name{fact_i}) % Check for orig_name empty - error. error(message('mbc:cgoppoint:InvalidState')); else % don't check name - rely on orig_names being unique % generate suitable name name = op.orig_name{fact_i}; end case 'xregpointer' addptr = varargin{1}; if length(addptr)~=1 error(message('mbc:cgoppoint:InvalidSize')); end case 'char' name = varargin{1}; otherwise error(message('mbc:cgoppoint:InvalidArgument1')); end if ~isempty(name) % dummy range for value % length>1, so that it is a required dataset input % (so if two datasets are in session, relevant input in each dataset % must be assigned to this value for error to be calculated) name = uniquename(op,name,fact_i); newptr = cgvalue(name,[0 1]); end if ~isempty(fact_i) && ~isempty(newptr) % assign new value to factor % Flag as unique to dataset op = set(op,fact_i,'ptr',newptr,'created_flag',1); if ~op.factor_type(fact_i) %'ignore' op = set(op,fact_i,'factor_type',1); end ptr = newptr; elseif ~isempty(addptr) % add factor to dataset op = addfactor(op,addptr,'grid_flag',1); ptr = addptr; fact_i = length(op.ptrlist); %return new factor index elseif ~isempty(newptr) % add new ptr as new factor to dataset op = addfactor(op,newptr,'grid_flag',1,'created_flag',1,... 'orig_name',{name}); ptr = newptr; fact_i = length(op.ptrlist);%return new factor index else error(message('mbc:cgoppoint:InvalidArgument2')); end