📄 melgmm.html
字号:
<html><head> <meta HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1"> <title>melgmm.m</title><link rel="stylesheet" type="text/css" href="../../../m-syntax.css"></head><body><code><span class=defun_kw>function</span> <span class=defun_out>model</span>=<span class=defun_name>melgmm</span>(<span class=defun_in>X,Alpha,cov_type</span>)<br><span class=h1>% MELGMM Maximizes Expectation of Log-Likelihood for Gaussian mixture.</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Synopsis:</span></span><br><span class=help>% model = melgmm(X,Alpha)</span><br><span class=help>% model = melgmm(X,Alpha,cov_type)</span><br><span class=help>% </span><br><span class=help>% <span class=help_field>Description:</span></span><br><span class=help>% model = melgmm(X,Alpha) maximizes expectation of log-likelihood </span><br><span class=help>% function for Gaussian mixture model</span><br><span class=help>% </span><br><span class=help>% (Mean,Cov,Prior) = argmax F(Mean,Cov,Prior)</span><br><span class=help>% Mean,Cov,Prior </span><br><span class=help>%</span><br><span class=help>% where</span><br><span class=help>% F = sum sum Alpha(j,i)*log(pdfgauss(X(:,i),Mean(:,y),Cov(:,:,y)))</span><br><span class=help>% y i </span><br><span class=help>%</span><br><span class=help>% The solution is returned in the structure model with fields</span><br><span class=help>% Mean [dim x ncomp], Cov [dim x dim x ncomp] and Prior [1 x ncomp].</span><br><span class=help>%</span><br><span class=help>% model = melgmm(X,Alpha,cov_type) specifies covariance matrix:</span><br><span class=help>% cov_type = 'full' full covariance matrix (default)</span><br><span class=help>% cov_type = 'diag' diagonal covarinace matrix</span><br><span class=help>% cov_type = 'spherical' spherical covariance matrix</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Input:</span></span><br><span class=help>% X [dim x num_data] Data sample.</span><br><span class=help>% Alpha [ncomp x num_data] Distribution of hidden state given sample.</span><br><span class=help>% cov_type [string] Type of covariacne matrix (see above).</span><br><span class=help>%</span><br><span class=help>% <span class=help_field>Output:</span></span><br><span class=help>% model [struct] Gaussian mixture model:</span><br><span class=help>% .Mean [dim x ncomp] Mean vectors.</span><br><span class=help>% .Cov [dim x dim x ncomp] Covariance matrices.</span><br><span class=help>% .Prior [1 x ncomp] Distribution of hidden state.</span><br><span class=help>%</span><br><span class=help>% See also </span><br><span class=help>% EMGMM, MLCGMM.</span><br><span class=help>%</span><br><hr><span class=help1>% <span class=help1_field>About:</span> Statistical Pattern Recognition Toolbox</span><br><span class=help1>% (C) 1999-2003, Written by Vojtech Franc and Vaclav Hlavac</span><br><span class=help1>% <a href="http://www.cvut.cz">Czech Technical University Prague</a></span><br><span class=help1>% <a href="http://www.feld.cvut.cz">Faculty of Electrical Engineering</a></span><br><span class=help1>% <a href="http://cmp.felk.cvut.cz">Center for Machine Perception</a></span><br><br><span class=help1>% <span class=help1_field>Modifications:</span></span><br><span class=help1>% 30-apr-2004, VF</span><br><span class=help1>% 19-sep-2003, VF</span><br><span class=help1>% 27-feb-2003, VF</span><br><br><hr><span class=comment>% Processing of input arguments </span><br><span class=comment>%----------------------------------------</span><br><span class=keyword>if</span> <span class=stack>nargin</span> < 3, cov_type = <span class=quotes>'full'</span>; <span class=keyword>end</span><br>[dim, num_data] = size( X );<br> <br><span class=comment>% ------------------------------------</span><br>ncomp = size(Alpha,1);<br><br>model.Mean = zeros(dim,ncomp);<br>model.Cov = zeros(dim,dim,ncomp);<br><br><span class=keyword>for</span> i=1:ncomp,<br><br> nconst = sum( Alpha(i,:) );<br> <span class=keyword>if</span> ~nconst,<br> model.Mean(:,i) = NaN*ones(dim,1);<br> model.Cov(:,:,i) = NaN*ones(dim,dim);<br> model.Prior(i) = 0;<br> <span class=keyword>else</span><br> model.Mean(:,i) = X*Alpha(i,:)'/nconst;<br> XC = X - model.Mean(:,i)*ones(1,num_data);<br> <br> <span class=keyword>switch</span> cov_type,<br> <span class=label>case</span> <span class=quotes>'full'</span><br> model.Cov(:,:,i) = (XC.*(repmat(Alpha(i,:),dim,1)))*XC'/nconst;<br> <span class=label>case</span> <span class=quotes>'diag'</span><br> model.Cov(:,:,i)=diag(sum(XC.*(ones(dim,1)*Alpha(i,:)).*XC,2))/nconst;<br> <span class=label>case</span> <span class=quotes>'spherical'</span> <br> model.Cov(:,:,i) = eye(dim)*...<br> sum(sum(XC.^2.*(ones(dim,1)*Alpha(i,:)) ))/(nconst*dim);<br> <span class=label>otherwise</span><br> <span class=error>error</span>(<span class=quotes>'Wrong cov_type.'</span>);<br> <span class=keyword>end</span><br> <br> model.Prior(i) = nconst/num_data;<br> <span class=keyword>end</span><br><span class=keyword>end</span> <br> <br><br><span class=jump>return</span>; <br></code>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -