www.pudn.com > voiceprocessingtoolbox.rar > dhmmEvalTest.m


% ====== Set up some parameters 
frameNum=100; 
stateNum=10; 
symbolNum=64; 
initPI=log([1, zeros(1, stateNum-1)]); 
selfTransProb=0.85; 
A=diag(selfTransProb*ones(stateNum,1)); A((stateNum+1):(stateNum+1):stateNum^2)=1-selfTransProb; A=A+eps; 
A=log(A); 
B=rand(symbolNum, stateNum); B=B*diag(1./sum(B)); 
B=log(B); 
O=ceil(rand(frameNum,1)*symbolNum); 
 
% ====== Start functionality and timing tests 
n=100; 
tic 
for j=1:n 
	[maxLogProb1, dpPath1, dpTable1] = dhmmEvalMex(initPI, A, B, O); 
end 
fprintf('dhmmEvalMex ==> %.2f, maxLogProb = %.9f\n', toc, maxLogProb1); 
tic 
for j=1:n 
	[maxLogProb2, dpPath2, dpTable2] = dhmmEval(initPI, A, B, O); 
end 
fprintf('dhmmEval ==> %.2f, maxLogProb = %.9f\n', toc, maxLogProb2); 
 
fprintf('Difference in maxLogProb = %g\n', abs(maxLogProb1-maxLogProb2)); 
fprintf('Difference in dpPath = %g\n', sum(sum(abs(dpPath1-dpPath2)))); 
fprintf('Difference in dpTable = %g\n', sum(sum(abs(dpTable1-dpTable2))));