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);