www.gusucode.com > mbctools 工具箱 matlab 源码程序 > mbctools/@mdev_local/updateDatumModel.m

    function mdev= updateDatumModel(mdev)
%UPDATEDATUMMODEL
%
% mdev= updateDatumModel(mdev)

%  Copyright 2006-2009 The MathWorks, Inc. 


pdatum= datumlink(mdev);
Ydatum= pdatum.getdata('Y');
Yrf = mdev.RFData.info;
% can only update datum models if data is the same
CanUpdate = isequal(testnum(Yrf),testnum(Ydatum));


if CanUpdate 
    bindex= BMIndex(mdev);
    TS= BestModel(mdev);
    isb= isbest(mdev);
    % undo two-stage model
    mdev=BestModel(mdev,0);
    switch bindex
        case 1
            % rebuild it
            MakeTwoStage(mdev,0);
        case 2
            % put new datum model in two-stage model
            DatumModel= pdatum.model;
            set(TS,'datum',DatumModel);
            if ~mdev.IsLinearised
                % rebuild twostage
                MakeTwoStage(mdev,0);
                mdev= info(mdev);
                mdev.MLE.Model= TS;
                mdev.TwoStage{2}= TS;
                % revalidate
                [~,~,mdev]= mle_validate(mdev);
                % make mle model the best model
                mdev= mle_best(mdev,1);
                % make mle rf models
                mdev= makemlerf(mdev);
                mdev= status(mdev,1);
            else
                % put new datum model in twostage models
                mdev.MLE.Model= TS;
                mdev.TwoStage= {TS,TS};
                % revalidate
                [~,~,mdev]= mle_vallinmeth(mdev);
                mdev= makemlerf(mdev);
                mdev= status(mdev,1);
            end
    end
    
    if isb && ~isbest(mdev)
        % reselect as best model if necessary
        r= Parent(mdev);
        BestModel(r.info,address(mdev));
    end
    mdev= info(mdev);
    
end