www.pudn.com > Gaumix_EM.rar > Gaumix_EM.m


function [Post_old, mean_old,sigma_old,W_old,log_lik_list]=Gaumix_EM(X,N_gau,N_iteration,serror,ini_mean,ini_sigma,ini_W) 
% 
%Gaumix_EM: EM Algorithm Applicated to Parameter Estimation for Gaussian Mixture 
% 
% 
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
% %   OUTPUT                                                          % 
% %   Post_old = Posterior                                            % 
% %   mean_old = estimated means for each gaussian                    % 
% %   sigma_old = estimated varances for each gaussian                 % 
% %   W_old = estimated Weights for each gaussian                     % 
% %   log_lik_list = Likelihood list for each iteration               % 
% %                                                                   % 
% %   INPUT                                                           % 
% %   X = random vector                                               % 
% %   N_gau = number of gaussian                                      % 
% %   N_iteration= number of maxiun iteration                         % 
% %   serror = iteration stopped under the error                      % 
% %   ini_mean = initial means of gaussians                           % 
% %   ini_sigma = initial varances of gaussians                        % 
% %   ini_W = initial Weights of gaussians                            % 
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%2007/3/30 
[r,c]=size(X); 
if r>c 
X=X'; 
end 
 
mX=ones(N_gau,1)*X; %[X;X;.....;X], length(X)*N_gau 
numX=length(X); 
 
% switch nargin 
%     case 3 
%          
% end 
 
 
 
 
mean_old=ini_mean; 
sigma_old=ini_sigma; 
W_old=ini_W; 
 
log_lik_list=zeros(1,1000); 
N=0; % number of processing iteration 
sqr2pi=sqrt(2*pi); 
B=zeros(N_gau,numX); 
 
while N1&log_lik_list(N)1 & log_lik_list(N)-log_lik_list(N-1)