function [K] = elkernel(prior1, transmat1, obsmat1, prior2, transmat2, obsmat2, T, beta)
%
% function [K] = elkernel(prior1, transmat1, obsmat1, prior2, transmat2, obsmat2, T, beta)
%
% Code to compute the kernel similarity between two multinomial emission hidden Markov models.
% Each hmm (1 and 2) is represented in the same way as in Kevin Murphy's Bayes Net / HMM toolkit.
%       prior: a state distribution vector
%       transmat: a transition matrix of conditional probability of next state given past state
%       obsmat: an emission matrix for each symbol given each state
% The T parameter controls how many time steps to use in the integration. We recommend T=10.
% The beta parameter controls how much transition tables are taken to a power. We recommend beta=1.
%

prior1 = prior1.^beta;
prior2 = prior2.^beta;
transmat1 = transmat1.^beta;
transmat2 = transmat2.^beta;
obsmat1 = obsmat1.^beta;
obsmat2 = obsmat2.^beta;

pot = obsmat1*obsmat2';
sep1 = prior1*prior2';
sep1 = sep1.*pot;
for t=1:T
  sep1 = pot.*(transmat1*sep1*transmat2');
end
K = sum(sum(sep1));
