changeset 56:d1f2f69ba752 matthiasm-plugin

delete matlab file
author matthiasm
date Mon, 25 Oct 2010 02:35:27 +0900
parents ea35e6e804f1
children 58a390dfba70
files viterbi_path.m
diffstat 1 files changed, 0 insertions(+), 62 deletions(-) [+]
line wrap: on
line diff
--- a/viterbi_path.m	Mon Oct 25 02:33:47 2010 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-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 t
-
-scaled = 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;
-end
-psi(:,t) = 0; % arbitrary value, since there is no predecessor to t=1
-for 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;
-  end
-end
-[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) algorithm
-
-if 0
-if scaled
-  loglik = -sum(log(scale));
-  %loglik = prob_path(prior, transmat, obslik, path);
-else
-  loglik = log(p);
-end
-end