www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@localmulti/listmodels.m

    function [L,OK,ColHead,SumStats]= listmodels(L,Xs,Ys)
%LISTMODELS list models for use with Validate_LocalSelect
% 
% [L,OK,ColHead,SumStats]= listmodels(L,Xs,Ys)

%  Copyright 2006-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.

[Xs,Ys]= checkdata(L,Xs,Ys);


SelectionIndex= strcmp(StatsList(L.xregmulti),L.Select);
if ~any(SelectionIndex)
    % try and add 
    L.xregmulti= addSummaryStats(L.xregmulti,L.Select);
    SelectionIndex= strcmp(StatsList(L.xregmulti),L.Select);
    if ~any(SelectionIndex)
        % use default of RMSE
        L.Select = 'RMSE';
    end
end
    
mlist= get(L.xregmulti,'models');
BestIndex= get(L.xregmulti,'currentindex');
ColHead= StatsList(L);
mbest= mlist{BestIndex};
[x,y]= checkdata(mbest,Xs,Ys);
sbest= FitSummary(mbest,x,y);

if length(mlist)>1
    % refit non best models
    Lr=  remove(L,BestIndex);
    [~,~,mout,OKmulti,SumStats]= gls_fitB(Lr,[],[Xs Ys]);
    
    % add back best model
    mlist= [mout(1:BestIndex-1); {mbest}; mout(BestIndex:end)];
    OKmulti = [OKmulti(1:BestIndex-1) true OKmulti(BestIndex:end)];
    SumStats= [SumStats(1:BestIndex-1)
        sbest
        SumStats(BestIndex:end)];
    for i=1:length(SumStats)
        if OKmulti(i)
            [OK,loc]=ismember(ColHead,StatsList(mlist{i}));
            SumStats{i}= SumStats{i}(loc(OK));
            % update selection statistic
            L.SelectionStatistic(i) = SumStats{i}(SelectionIndex);
        else
            SumStats{i} = NaN(1,length(ColHead));
            L.SelectionStatistic(i) = 0;
        end
    end
    
    L.xregmulti= set(L.xregmulti,'allmodels',mlist);
    L.xregmulti= set(L.xregmulti,'currentindex',BestIndex);
    OK = OKmulti;
else
    SumStats= {sbest};
    OK= true;
end
L = set(L,'allfitted',true);