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

    function mdev = mle(mdev,InitVal,LinAlg,TolFun,ProgressTable,PredMode)
%MLE
%
% mdev = mle(mdev,InitVal,LinAlg,TolFun,ProgressTable,PredMode);

%  Copyright 2000-2007 The MathWorks, Inc. and Ford Global Technologies, Inc.



ModelNo= BMIndex(mdev);
[Xg,Yrf,Sigma] = mledata(mdev,ModelNo,PredMode);
if size(Xg,1)>1000 && ~isempty(ProgressTable);
   opts.Default= 'No';
   opts.Interpreter= 'none';
   opts.CreateMode= 'modal';
   resp= questdlg(['This MLE process is extremely computationally intensive. ',...
         'It could take several hours to complete. Do you wise to continue?'],...
      'MLE Warning','Yes','No',opts);
   drawnow
   if ~strcmp(resp,'Yes')
      return
   end
end
if strcmpi(InitVal,'univariate')
   ModelNo= 1;
   mdev= InitStore(mdev,ModelNo);
   TS= mdev.TwoStage{ModelNo};
   TS= covinit(TS,[]);
else
   ModelNo= 2;
   mdev= InitStore(mdev,ModelNo);
   TS= mdev.TwoStage{ModelNo};
end

TS=mle_Algorithm(TS);
[TS,OK]= pevinit(TS,Xg,Yrf,Sigma);
if OK
	[TS,OK,xfinal]= fitmodel(TS,Xg,Yrf,Sigma,ProgressTable,LinAlg,TolFun);
    if OK
        % initialise PEV calcs
        TS= pevinit(TS,Xg,Yrf,Sigma);

        mdev.MLE.Solution= [1;xfinal];
        mdev.MLE.Model= TS;

        % Store MLE Modes
        mdev.MLE.Modes= [1,PredMode, strcmp(LinAlg,'mle_ExpMaxim')+1,TolFun];

        % make MLE model best
        [s,Models,mdev]= mle_validate(mdev);
        % make mle model the best model
        [mdev,msg]= mle_best(mdev,1);
        if ~isempty(ProgressTable) && ~isempty(msg)
            hFig= msgbox(msg,...
                'Model','modal');
            uiwait(hFig);
        end
    end
elseif ~isempty(ProgressTable)
	errordlg('There is insufficient data available to run MLE','MLE Error','modal')
end
xregpointer(mdev);