www.gusucode.com > mbcdata 工具箱 matlab 源码程序 > mbcdata/@cgoppoint/get.m
function out = get(P,arg1,arg2) % value = get(p,property) returns the property for all factors % value = get(p,index,property) returns property for selected factor(s) only % get(cgoppoint) shows fields % Copyright 2000-2011 The MathWorks, Inc. and Ford Global Technologies, Inc. out = []; if nargin == 1 out.data = 'data matrix'; out.name = 'operating point set name'; out.numpoints = 'number of operating points'; out.numfactors = 'number of factors'; out.factors = 'cell array of factor names'; out.factor_type = '0 - ignore, 1 - input, 2 - output'; out.orig_name = 'imported data column name'; out.ptrlist = 'vector of pointers to factors'; out.linkptrlist = 'linked pointer (null for no link)'; out.overwrite = 'overwrite flag: 0 - evaluate data, 1 - overwrite'; out.group = 'group number (0 - no group)'; out.grid_flag = 'Grid inputs: 0 - constant, 1 - range, 7 - block'; out.range = 'Internal range for gridding'; out.constant = 'Internal constant for gridding'; out.type = 'Dataset type'; out.rules = 'Rules set for filtering points'; %out.filter %out.outliers elseif nargin>1 if nargin==2 && ischar(arg1) property = arg1; index = []; elseif nargin==3 && isnumeric(arg1) && ischar(arg2) property = arg2; index = arg1; if any(~ismember(index,1:length(P.ptrlist))) error(message('mbc:cgoppoint:InvalidIndex11')); end else error(message('mbc:cgoppoint:InvalidProperty')); end switch lower(property) case 'name' out = P.name; index = []; case 'type' out = 'Dataset'; index = []; case 'data' out = P.data; index = []; case 'numpoints' S = size(P.data); out = S(1); if S(2) == 0 out = 0; end index = []; case 'numfactors' out = length(P.ptrlist); index = []; case 'ptrlist' out = P.ptrlist; case 'linkptrlist' out = P.linkptrlist; case 'rules' out = P.rules; case 'group' out = P.group; case 'overwrite' out = P.overwrite; case 'do_range' warning(message('mbc:cgoppoint:ObsoleteOption')); out = P.grid_flag; case 'grid_flag' out = P.grid_flag; case 'range' out = P.range; case 'constant' out = P.constant; case 'orig_name' out = P.orig_name; case 'factor_type' out = P.factor_type; case 'tolerance' out = P.tolerance; case 'units' out = P.units; case 'created_flag' out = P.created_flag; case 'factors' out = cell(1,length(P.ptrlist)); if isempty(P.ptrlist) ptrOK= false(0,1); else ptrOK = isvalid(P.ptrlist); out(ptrOK)= pveceval(P.ptrlist(ptrOK),@getname); end for i = 1:length(P.ptrlist) if ~ptrOK(i) || P.created_flag(i)==-2 out{i} = P.orig_name{i}; end end case 'assignednames' out = cell(1,length(P.ptrlist)); if isempty(P.ptrlist) ptrOK= false(0,1); else ptrOK = isvalid(P.ptrlist); out(ptrOK)= pveceval(P.ptrlist(ptrOK),@getname); end for i = 1:length(P.ptrlist) if ptrOK(i) if P.created_flag(i)==-2 || P.created_flag(i)==1 out{i} = P.orig_name{i}; else if P.created_flag(i)~=0 && ~isempty(P.orig_name{i}) out{i} = [out{i} ' (' P.orig_name{i} ')']; end end else out{i} = P.orig_name{i}; end end case 'factor_type_names' out = cell(1,length(P.ptrlist)); for i = 1:length(P.ptrlist) switch P.factor_type(i) case 1 out{i} = 'Input'; case 2 out{i} = 'Output'; otherwise out{i} = 'X Ignored'; end end case 'assign_lock' out = cellfun('isempty',P.orig_name); case {'used_overwrite','display_overwrite','iseditable'} if isempty(P.ptrlist) out = []; else out = P.overwrite; out(P.factor_type==0) = 0; % ignored columns % values and unassigned column must be overwritten valid = isvalid(P.ptrlist); if ~isempty(valid) out(~valid) = true; out(valid) = out(valid) | parrayeval(P.ptrlist(valid),@isddvariable,{},@false); end % set all members of non-linked group to overwrite. gno = setdiff(P.group,0); out(ismember(P.group,gno)) = 1; % set linked factors to non-overwrite % set all members of linked group to non-overwrite. link_i = find(isvalid(P.linkptrlist)); gno = setdiff(P.group(link_i),0); link_i = [link_i find(ismember(P.group,gno))]; out(link_i) = 0; end case {'evaldisp_overwrite','isoverwrite'} if isempty(P.ptrlist) out = []; else out = P.overwrite; out(P.factor_type==0) = 0; % ignored columns % values and unassigned column must be overwritten valid = isvalid(P.ptrlist); if ~isempty(valid) out(valid) = out(valid) | parrayeval(P.ptrlist(valid),@isddvariable,{},@false); end % unassigned do not overwrite out(~valid) = 0; % set all members of group to overwrite. gno = setdiff(P.group,0); out(ismember(P.group,gno)) = 1; % set linked factors to overwrite link_i = isvalid(P.linkptrlist) & P.created_flag~=-2; out(link_i) = 1; % set created ptrs to non-overwrite cr_i = P.created_flag==1; out(cr_i) = 0; end case 'isevaluation' % Begin with inverse of overwrite flag. if isempty(P.ptrlist) out = []; else out = ~P.overwrite; valid = isvalid(P.ptrlist); out(P.factor_type==0) = 0; % ignored columns out(valid) = out(valid) | ~parrayeval(P.ptrlist(valid),@isddvariable,{},@false); % unassigned do not evaluate out(~valid) = 0; % set all members of group to overwrite. gno = setdiff(P.group,0); out(ismember(P.group,gno)) = 0; % set linked factors to overwrite link_i = isvalid(P.linkptrlist) & P.created_flag~=-2; out(link_i) = 0; % set created ptrs to non-evaluate cr_i = P.created_flag==1; out(cr_i) = 0; end case 'blocklen' out = P.blocklen; otherwise error(message('mbc:cgoppoint:InvalidProperty1', property)); end if ~isempty(index) out = out(index); if isscalar(index) && iscell(out) out = out{1}; end end end