www.pudn.com > HMM1.zip > dhmm_logprob.m


function [loglik, errors] = dhmm_logprob(data, prior, transmat, obsmat)
> LOG_LIK_DHMM Compute the log-likelihood of a dataset using a discrete HMM
> [loglik, errors] = log_lik_dhmm(data, prior, transmat, obsmat)
>
> data{m} or data(m,:) is the m'th sequence
> errors is a list of the cases which received a loglik of -infinity

if ~iscell(data)
data = num2cell(data, 2);
end
ncases = length(data);

loglik = 0;
errors = [];
for m=1:ncases
obslik = multinomial_prob(data{m}, obsmat);
[alpha, beta, gamma, ll] = fwdback(prior, transmat, obslik, 'fwd_only', 1);
if ll==-inf
errors = [errors m];
end
loglik = loglik + ll;
end