www.pudn.com > HMM1.zip > mhmmParzen_train_observed.m


function [initState, transmat, mu, Nproto, pick] = mhmmParzen_train_observed(obsData, hiddenData, ... 
						  nstates, maxNproto, varargin) 
% mhmmParzentrain_observed  with mixture of Gaussian outputs from fully observed sequences 
% function [initState, transmat, mu, Nproto] = mhmm_train_observed_parzen(obsData, hiddenData, ... 
%						  nstates, maxNproto) 
% 
% 
% INPUT 
% If all sequences have the same length 
% obsData(:,t,ex)  
% hiddenData(ex,t)  - must be ROW vector if only one sequence 
% If sequences have different lengths, we use cell arrays 
% obsData{ex}(:,t)  
% hiddenData{ex}(t) 
% 
% Optional argumnets 
% dirichletPriorWeight - for smoothing transition matrix counts 
% mkSymmetric 
% 
% Output 
% mu(:,q) 
% Nproto(q) is the number of prototypes (mixture components) chosen for state q 
 
[transmat, initState] = transmat_train_observed(... 
    hiddenData, nstates, varargin{:}); 
 
% convert to obsData(:,t*nex) 
if ~iscell(obsData) 
  [D T Nex] = size(obsData); 
  obsData = reshape(obsData, D, T*Nex); 
else 
  obsData = cat(2, obsData{:}); 
  hiddenData = cat(2, hiddenData{:}); 
end 
[mu, Nproto, pick] = parzen_fit_select_unif(obsData, hiddenData(:), maxNproto);