gmmgrow.m
来自「一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有」· M 代码 · 共 33 行
M
33 行
function gmmParam=gmmGrow(gmmParam, targetGaussianNum)
% gmmGrow: Grow gaussians within a GMM
% Usage: gmmParam=gmmGrow(gmmParam, targetGaussianNum)
%
% For example, please refer to gmmGrowDemo.m
% Roger Jang, 20080727
if nargin<1, selfdemo; return; end
gaussianNum=length(gmmParam);
if targetGaussianNum>2*gaussianNum
error('Growth too fast!');
end
dim=length(gmmParam(1).mu);
index=randperm(gaussianNum);
for i=1:targetGaussianNum-gaussianNum
% To clone a gaussian, weight is lowered first
gmmParam(index(i)).w=gmmParam(index(i)).w/2;
% Start clone
gmmParam(end+1)=gmmParam(index(i));
% Find sigma to guide the center splitting
sigma=gmmParam(end).sigma;
if length(sigma)==1, sigma=sigma*eye(dim); end
if prod(size(sigma))==dim*dim, sigma=diag(sigma); end
% Center splitting
gmmParam(end).mu=gmmParam(end).mu+randn(dim, 1).*sigma;
end
% ====== Self demo
function selfdemo
gmmGrowDemo;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?