📄 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;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -