www.pudn.com > voiceprocessingtoolbox.rar > dhmmEval.m
function [maxLogProb, dpPath, dpTable] = dhmmEval(initPI, A, B, O)
% dhmmEval: Evaluation of DHMM
% Usage: [maxLogProb, dpPath, dpTable] = viterbiDecoding(initPI, A, B, O)
% initPI: Initial state log probability, 1 x stateNum
% A: Transition log probability, stateNum x stateNum
% B: State log probability, symbolNum x stateNum
% O: Observation sequence of this utterance, frameNum x 1
% maxLogProb: Maximum log probability of the optimal path
% dpPath: optimal path with size frameNum x 1
frameNum = length(O);
stateNum = length(A);
dpTable = -inf*ones(frameNum, stateNum);
if (stateNum>frameNum); error('Number of frames is less than the number of states!'); end
% ====== Fill the first row (matrix view)
dpTable(1,:)=initPI+B(O(1),:);
% ====== Fill the first column (matrix view)
for i=2:frameNum
...
end
% ====== Fill each row (matrix view)
for i=2:frameNum
for j=2:stateNum
...
end
end
% ====== Back track to find the optimum path
...