www.pudn.com > hmm--matlab.rar > getmix.m
function mix = getmix(vector,M)
[mean esq nn] = kmeans(vector,M);
%计算每个聚类的标准差,对角阵,只保存对角线上的元素
for j = 1:M
ind = find(j==nn);
tmp = vector(ind,:);
var(j,:) = std(tmp);
end
%计算每个聚类中的元素数,归一化为各个pdf的权重
weight = zeros(M,1);
for j = 1:M
weight(j) = sum(find(j==nn));
end
weight = weight/sum(weight);
%保存结果
mix.M = M;
mix.mean = mean;
mix.var = var.^2;
mix.weight = weight;