www.pudn.com > DHMM_MATLAB.rar > DHMM_Test.m


%	by lkk@mails.tsinghua.edu.cn 
 
function [result] = DHMM_Test(A,B,test_classify,test_divid) 
%	输入: 
%			A B             为训练的得到的10个数字声音模型参数 
%           test_classify   测试数据归类 
%			divid_line		1行 101列向量,每一列记录测试数据的归类 
%	输出:   result          识别结果,为2行30列矩阵,每一列记录测试样本和识别结果 
% 
 
warnings=warning('OFF','MATLAB:LOG:LOGOFZERO');	 
for t=1:10 
	c=find(B{t} == -Inf); 
	B{t}(c) = -2000; 
end 
result = zeros(2,30); 
Test_number = 1; 
success = 0; 
for i=0:9 
	for j=1:3 
		index_start = test_divid(i*3+j)+1; 
		index_end		= test_divid(i*3+j+1); 
		y = test_classify(index_start:index_end); 
		N = length(y); 
		L = 5; 
		max_V = zeros(1,10); 
		for	t=1:10 
			%	初始化V 
			V = log(zeros(L,N)); 
			V(1,1) = B{t}(1,y(1)); 
			 
			for n=2:N 
				for jj=1:L 
					 
					temp = max(V(:,n-1) + A{t}(:,jj)); 
					V(jj,n) = temp + B{t}(jj,y(n));	 
				end 
			end			 
			 
			max_V(t) = max(V(:,N)); 
		end 
		 
		[m,match] = max(max_V); 
		match = match -1; 
		 
		success = success + (i == match); 
		fprintf(' Test data=%d_%d   Recognition=%d\n',i,j,match); 
		result(1,Test_number) = i; 
		result(2,Test_number) = match; 
		Test_number = Test_number + 1; 
		 
	end 
end 
 
fprintf(' success rate: %6.2f %%\n',(100*success)/(Test_number-1)); 
 
warning(warnings);