melgmm.m
来自「voice features for the speech recognitio」· M 代码 · 共 47 行
M
47 行
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 + =
减小字号Ctrl + -
显示快捷键?