www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@localmulti/modelproperties.m
function p = modelproperties(m,p) %MODELPROPERTIES interface to model properties % % p = modelproperties(m,p); % Copyright 2006-2015 The MathWorks, Inc. ID = p.Type; [p,OK] = PersistentStore(p,ID); if ~OK p = addprop(p,'ModelCandidates',... @iGetModelList,... @iSetModelList,... 'cell','',... 'List of candidate models'); p = addprop(p,'SelectionStatistic',... @(m) get( m, 'select' ),... @iSelectStatistic,... 'char','',... 'Selection statistic for automatic model selection'); p = addprop(p,'AutomaticInputRanges',... @( m ) get( m, 'autocoderange' ),... @( m,v ) set( m, 'autocoderange' , v ),... 'boolean',false,... 'Use data range as model input ranges'); % standard localmod properties p = modelproperties(m.localmod,p,m); PersistentStore(p,ID); end %% iGetModelList function mlist = iGetModelList(m) mlist = get(m,'models'); sel = m.SelectionStatistic; AllFitted = get(m,'allfitted') && ~isempty(sel); for i=1:length(mlist); mlist{i}= mbcmodel.CreateModel(mlist{i},'ModelStatus',AllFitted && ~isnan(sel(i))); end %% iSetModelList function m = iSetModelList(m,mlist) nf = nfactors(m); if ~iscell(mlist) error(message('mbc:localmulti:InvalidValue', nf)) end for i=1:length(mlist); if ~(isa(mlist{i},'mbcmodel.model') && ~isa(mlist{i},'mbcmodel.localmodel') && mlist{i}.NumberOfInputs==nf) error(message('mbc:localmulti:InvalidValue', nf)) end mlist{i} = mlist{i}.Object; end set(m,'models',mlist); function m = iSelectStatistic(m,v) m = set(m,'Select',v); if ~strcmp(m.Select,v) && strcmpi(v,'AICc') warning('mbc:localmulti:InvalidStatistics','AICc is not available as a selection statistic. %s is used instead.',m.Select); v = m.Select; end if ~strcmp(m.Select,v) List = StatsList(m); ListStr = sprintf('''%s'',',List{:}); ListStr(end) = '.'; error(message('mbc:localmulti:InvalidValue2', ListStr)) end