montecarlo_bic.m

来自「轨迹聚类工具箱及其相关说明和文章(台风路径分类等)。如有问题可与wyljess@」· M 代码 · 共 61 行

M
61
字号
function bicv = MonteCarlo_bic(trajs,Ops)
%MonteCarlo_bic  Run BIC on random subsets of a large dataset.
%   BICV = MonteCarlo_bic(Trajs,Ops)
%

% Scott J Gaffney   20 November 2003
% Department of Information and Computer Science
% University of California, Irvine.

PROGNAME = 'MonteCarlo_bic';
if (~nargin)
  try; help(PROGNAME); catch; end
  return;
end


Ops        = cexist('Ops',[]);
Ops        = SetFieldDef(Ops,'State',[]);  
Ops.State = SetFieldDef(Ops.State,'state',rand('state'));  
Ops.State = SetFieldDef(Ops.State,'nstate',randn('state'));  
Ops.State = SetFieldDef(Ops.State,'sstate',Ops.State.state);  
Ops = SetFieldDef(Ops,'NumRuns',1);
Ops = SetFieldDef(Ops,'MsgHnd',[]);


% Calculate sizes of subsets
n = size(trajs,1);
Ops = SetFieldDef(Ops,'SubsetSize',n);
TrainLen  = Ops.SubsetSize;

% Calculate Random Data Splits
[trash,RandSplitState] = AdvRandState(Ops.State.sstate,n,Ops.NumRuns-1);

% Bring up Message Bar
CreatedMsgBar=0;
if (isempty(Ops.MsgHnd))
  Ops.MsgHnd = msgbar([],'');
  CreatedMsgBar=1;
end

%% Loop over runs
for (r=1:Ops.NumRuns)
  rand('state',RandSplitState(:,r));
  RandIndex = randperm(n);
  
  Ops.MsgPrefix = sprintf('Run %d, ',r);
  TrainTrajs = trajs(RandIndex(1:TrainLen),:);
  [Bic(:,:,r),lhood(:,:,r)] = bic(TrainTrajs,Ops);
end
bicv.bic = Bic;
bicv.lhood = lhood;
bicv.ops = Ops;

if (CreatedMsgBar)
  delete(Ops.MsgHnd);
end




⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?