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 + -
显示快捷键?