?? melgmm.m
字號:
function model=melgmm(X,Alpha,cov_type)
%--------------------------------------------------------------------------------
% Processing of input arguments
%----------------------------------------
if nargin < 3, cov_type = 'full'; end
[dim, num_data] = size( X );
% ------------------------------------
ncomp = size(Alpha,1);
model.Mean = zeros(dim,ncomp);
model.Cov = zeros(dim,dim,ncomp);
for i=1:ncomp,
nconst = sum( Alpha(i,:) );
% if it is NaN
nconst(isnan(nconst)) = 1;
%nconst = isnan(nconst);
if ~nconst,
model.Mean(:,i) = NaN*ones(dim,1);
model.Cov(:,:,i) = NaN*ones(dim,dim);
model.Prior(i) = 0;
else
model.Mean(:,i) = X*Alpha(i,:)'/nconst;
XC = X - model.Mean(:,i)*ones(1,num_data);
switch cov_type,
case 'full'
model.Cov(:,:,i) = (XC.*(repmat(Alpha(i,:),dim,1)))*XC'/nconst;
case 'diag'
model.Cov(:,:,i)=diag(sum(XC.*(ones(dim,1)*Alpha(i,:)).*XC,2))/nconst;
case 'spherical'
model.Cov(:,:,i) = eye(dim)*...
sum(sum(XC.^2.*(ones(dim,1)*Alpha(i,:)) ))/(nconst*dim);
otherwise
error('Wrong cov_type.');
end
model.Prior(i) = nconst/num_data;
end
end
return;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -