📄 obslike.m
字号:
function [B] = obslike (X,T,n,hmm)% function [B] = obslike (X,T,n,hmm)%% Evaluate likelihood of data given observation model% for hmm.obsmodel = 'GaussCom','Gauss','LIKE'% % X N by p data matrix% T length of series to learn% n block index (time series data can be split into many blocks)% hmm hmm data structure%% B Likelihood of N data pointsp=length(X(1,:));N=length(X(:,1));K=hmm.K;B=zeros(T,K);k1=(2*pi)^(-p/2);switch hmm.obsmodel case 'GaussCom', iCov=inv(hmm.state(1).Cov); % All Covs are the same k2=k1/sqrt(det(hmm.state(1).Cov)); for i=1:T for l=1:K d=hmm.state(l).Mu-X((n-1)*T+i,:); B(i,l)=k2*exp(-0.5*d*iCov*d'); end end case 'Gauss', for l=1:K state(l).iCov=inv(hmm.state(l).Cov); state(l).k2=k1/sqrt(det(hmm.state(l).Cov)); end for i=1:T for l=1:K d=hmm.state(l).Mu-X((n-1)*T+i,:); B(i,l)=state(l).k2*exp(-0.5*d*state(l).iCov*d'); end end case 'Poisson', for l=1:K lambda=hmm.state(l).lambda; B(:,l)=lambda.^X(:,2).*exp(-X(:,1).*lambda)./gamma(X(:,2)+1); end case 'LIKE', % The observations are themselves likelihoods for l=1:K B(:,l)=X(:,l); end otherwise disp('Unknown observation model');end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -