⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 viterbi_path.m~

📁 利用HMM的方法的三种语音识别算法
💻 M~
字号:
function path = viterbi_path(prior, transmat, obslik)% VITERBI Find the most-probable (Viterbi) path through the HMM state trellis.% path = viterbi(prior, transmat, obslik)%% Inputs:% prior(i) = Pr(Q(1) = i)% transmat(i,j) = Pr(Q(t+1)=j | Q(t)=i)% obslik(i,t) = Pr(y(t) | Q(t)=i)%% Outputs:% path(t) = q(t), where q1 ... qT is the argmax of the above expression.% delta(j,t) = prob. of the best sequence of length t-1 and then going to state j, and O(1:t)% psi(j,t) = the best predecessor state, given that we ended up in state j at tscaled = 1;T = size(obslik, 2);prior = prior(:);Q = length(prior);delta = zeros(Q,T);psi = zeros(Q,T);path = zeros(1,T);scale = ones(1,T);t=1;delta(:,t) = prior .* obslik(:,t);if scaled  [delta(:,t), n] = normalise(delta(:,t));  scale(t) = 1/n;endpsi(:,t) = 0; % arbitrary value, since there is no predecessor to t=1for t=2:T  for j=1:Q    [delta(j,t), psi(j,t)] = max(delta(:,t-1) .* transmat(:,j));    delta(j,t) = delta(j,t) * obslik(j,t);  end  if scaled    [delta(:,t), n] = normalise(delta(:,t));    scale(t) = 1/n;  endend[p, path(T)] = max(delta(:,T));for t=T-1:-1:1  path(t) = psi(path(t+1),t+1);end% If scaled==0, p = prob_path(best_path)% If scaled==1, p = Pr(replace sum with max and proceed as in the scaled forwards algo)% Both are different from p(data) as computed using the sum-product (forwards) algorithmif 0if scaled  loglik = -sum(log(scale));  %loglik = prob_path(prior, transmat, obslik, path);else  loglik = log(p);endend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -