MATLAB: Hidden Markov Models - Computing Beta

Formula

\[\mathbb{P}(v_{t+1},...,v_T|H_t = s_i) \beta_{t(i)} = \sum_{j=1}^N \beta_{t+1}(j)\cdot \mathbb{P}(v_{t+1}|H_{t+1} = s_j)\]

Implementation

function b = beta_dynamic(M,p,B,v)
    
    [N, ~] = size(M);
    T = length(v);
    %create matrix of betas
    b = zeros(N, T);
    %initialize last column to 1
    b(:,end) = 1;
    %calculate betas right to left
    for t = T-1:-1:1
        for j = 1:N
            b(j,t) = sum(b(:,t+1) .* M(j,:)' .* B(:,v(t+1)));
        end
    end    
end

Updated: