www.pudn.com > DHMM_MATLAB.rar > classify.m
% by lkk@mails.tsinghua.edu.cn
function [data_classify,test_classify] = classify(data,test_data,n);
% 输入:
% data 训练数据lpcc系数,为14行n列的数组
% test_data 测试数据lpcc系数,为14行n列的数组
% n 聚成n类,实验中选为64
% 输出:
% data_classify 训练数据归类,为1行n列向量,记录训练数据每一帧所属于的类别
% test_classify 测试数据归类,为1行n列向量,记录测试数据每一帧所属于的类别
%
center = mean(data,2);
while size(center,2) < n
center = center_split(center);
fprintf(' certer = %d \n',size(center,2));
[center, data_classify] = My_Kmean(data,center);
end
test_classify = zeros(1,n);
test_data_number = size(test_data,2);
for i = 1:test_data_number
dmin = Inf;
temp = 0;
%找最小距离的类中心
for j = 1:n
d = dist(test_data(:,i), center(:,j));
if d < dmin
dmin = d;
temp = j;
end
end %for
% 把该向量归类
test_classify(i) = temp;
end %for
end
function [d] = dist(v1,v2)
dif = v1 - v2;
d = sum(dif.*dif);
end