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);