資源簡介
混合高斯em算法matlab源碼可算三個參數-混合高斯em算法matlab源碼可算三個參數.rar
混合高斯em算法matlab源碼可算三個參數
混合高斯em算法matlab源碼可算三個參數

代碼片段和文件信息
function?[WMVL]?=?EM_GM(XkltolmaxiterpflagInit)
%?[WMVL]?=?EM_GM(XkltolmaxiterpflagInit)?
%?
%?EM?algorithm?for?k?multidimensional?Gaussian?mixture?estimation
%
%?Inputs:
%???X(nd)?-?input?data?n=number?of?observations?d=dimension?of?variable
%???k?-?maximum?number?of?Gaussian?components?allowed
%???ltol?-?percentage?of?the?log?likelihood?difference?between?2?iterations?([]?for?none)
%???maxiter?-?maximum?number?of?iteration?allowed?([]?for?none)
%???pflag?-?1?for?plotting?GM?for?1D?or?2D?cases?only?0?otherwise?([]?for?none)
%???Init?-?structure?of?initial?W?M?V:?Init.W?Init.M?Init.V?([]?for?none)
%
%?Ouputs:
%???W(1k)?-?estimated?weights?of?GM
%???M(dk)?-?estimated?mean?vectors?of?GM
%???V(ddk)?-?estimated?covariance?matrices?of?GM
%???L?-?log?likelihood?of?estimates
%
%?Written?by
%???Patrick?P.?C.?Tsui
%???PAMI?research?group
%???Department?of?Electrical?and?Computer?Engineering
%???University?of?Waterloo?
%???March?2006
%
%%%%?Validate?inputs?%%%%
if?nargin?<=?1
????disp(‘EM_GM?must?have?at?least?2?inputs:?Xk!/n‘)
????return
elseif?nargin?==?2
????ltol?=?0.1;?maxiter?=?1000;?pflag?=?0;?Init?=?[];
????err_X?=?Verify_X(X);
????err_k?=?Verify_k(k);
????if?err_X?|?err_k?return;?end
elseif?nargin?==?3
????maxiter?=?1000;?pflag?=?0;?Init?=?[];
????err_X?=?Verify_X(X);
????err_k?=?Verify_k(k);
????[ltolerr_ltol]?=?Verify_ltol(ltol);????
????if?err_X?|?err_k?|?err_ltol?return;?end
elseif?nargin?==?4
????pflag?=?0;??Init?=?[];
????err_X?=?Verify_X(X);
????err_k?=?Verify_k(k);
????[ltolerr_ltol]?=?Verify_ltol(ltol);????
????[maxitererr_maxiter]?=?Verify_maxiter(maxiter);
????if?err_X?|?err_k?|?err_ltol?|?err_maxiter?return;?end
elseif?nargin?==?5
?????Init?=?[];
????err_X?=?Verify_X(X);
????err_k?=?Verify_k(k);
????[ltolerr_ltol]?=?Verify_ltol(ltol);????
????[maxitererr_maxiter]?=?Verify_maxiter(maxiter);
????[pflagerr_pflag]?=?Verify_pflag(pflag);
????if?err_X?|?err_k?|?err_ltol?|?err_maxiter?|?err_pflag?return;?end
elseif?nargin?==?6
????err_X?=?Verify_X(X);
????err_k?=?Verify_k(k);
????[ltolerr_ltol]?=?Verify_ltol(ltol);????
????[maxitererr_maxiter]?=?Verify_maxiter(maxiter);
????[pflagerr_pflag]?=?Verify_pflag(pflag);
????[Initerr_Init]=Verify_Init(Init);
????if?err_X?|?err_k?|?err_ltol?|?err_maxiter?|?err_pflag?|?err_Init?return;?end
else
????disp(‘EM_GM?must?have?2?to?6?inputs!‘);
????return
end
%%%%?Initialize?W?M?VL?%%%%
t?=?cputime;
if?isempty(Init)??
????[WMV]?=?Init_EM(Xk);?L?=?0;????
else
????W?=?Init.W;
????M?=?Init.M;
????V?=?Init.V;
end
Ln?=?Likelihood(XkWMV);?%?Initialize?log?likelihood
Lo?=?2*Ln;
%%%%?EM?algorithm?%%%%
niter?=?0;
while?(abs(100*(Ln-Lo)/Lo)>ltol)?&?(niter<=maxiter)
????E?=?Expectation(XkWMV);?%?E-step????
????[WMV]?=?Maximization(XkE);??%?M-step
????Lo?=?Ln;
????Ln?=?Likelihood(XkWMV);
????niter?=?niter?+?1;
end?
L?=?Ln;
%%%%?Plot?1D?or?2D?%%%%
if?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄??????????0??2009-06-15?08:34??混合高斯em算法matlab源碼可算三個參數
?????文件??????10013??2007-07-05?10:54??混合高斯em算法matlab源碼可算三個參數\EM_GM.m
?????文件??????10742??2007-07-05?10:55??混合高斯em算法matlab源碼可算三個參數\EM_GM_fast.m
?????文件???????5696??2007-07-05?10:55??混合高斯em算法matlab源碼可算三個參數\Plot_GM.m
-----------?---------??----------?-----??----
????????????????26451????????????????????4
評論
共有 條評論