annotate toolboxes/FullBNT-1.0.7/HMM/fixed_lag_smoother_demo.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 % Example of fixed lag smoothing
Daniel@0 2
Daniel@0 3 rand('state', 1);
Daniel@0 4 S = 2;
Daniel@0 5 O = 2;
Daniel@0 6 T = 7;
Daniel@0 7 data = sample_discrete([0.5 0.5], 1, T);
Daniel@0 8 transmat = mk_stochastic(rand(S,S));
Daniel@0 9 obsmat = mk_stochastic(rand(S,O));
Daniel@0 10 obslik = multinomial_prob(data, obsmat);
Daniel@0 11 prior = [0.5 0.5]';
Daniel@0 12
Daniel@0 13
Daniel@0 14 [alpha0, beta0, gamma0, ll0, xi0] = fwdback(prior, transmat, obslik);
Daniel@0 15
Daniel@0 16 w = 3;
Daniel@0 17 alpha1 = zeros(S, T);
Daniel@0 18 gamma1 = zeros(S, T);
Daniel@0 19 xi1 = zeros(S, S, T-1);
Daniel@0 20 t = 1;
Daniel@0 21 b = obsmat(:, data(t));
Daniel@0 22 olik_win = b; % window of conditional observation likelihoods
Daniel@0 23 alpha_win = normalise(prior .* b);
Daniel@0 24 alpha1(:,t) = alpha_win;
Daniel@0 25 for t=2:T
Daniel@0 26 [alpha_win, olik_win, gamma_win, xi_win] = ...
Daniel@0 27 fixed_lag_smoother(w, alpha_win, olik_win, obsmat(:, data(t)), transmat);
Daniel@0 28 alpha1(:,max(1,t-w+1):t) = alpha_win;
Daniel@0 29 gamma1(:,max(1,t-w+1):t) = gamma_win;
Daniel@0 30 xi1(:,:,max(1,t-w+1):t-1) = xi_win;
Daniel@0 31 end
Daniel@0 32
Daniel@0 33 e = 1e-1;
Daniel@0 34 %assert(approxeq(alpha0, alpha1, e));
Daniel@0 35 assert(approxeq(gamma0(:, T-w+1:end), gamma1(:, T-w+1:end), e));
Daniel@0 36 %assert(approxeq(xi0(:,:,T-w+1:end), xi1(:,:,T-w+1:end), e));
Daniel@0 37
Daniel@0 38