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