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