⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fb.m

📁 matlab环境下
💻 M
字号:
function [Gamma,Xi] = FB(Pi,B,P)% [Gamma,Xi] = FB(Pi,B,P)%% This is the Forward-Backward step for an HMM. %% Called from 'gammas' (MixModel1d). %%% -----------% Input% -----------%% Necessary parameters%% Pi        Initial state probabilities% B         Observation likelihood% P         Transition matrix%%%% -----------% Output% -----------%% Gamma     Calculated state probabilities% Xi        Calculated transition probabilities%%% --------------------------------------------------------------%% Original code by Iead Rezek% Paper: Learning Ensemble Hidden Markov Models for Biosignal %        Analysis (www.robots.ox.ac.uk/~parg)%% Modified by Rizwan Choudrey for use in vbICA model% Thesis: Variational Methods for Bayesian Independent%         Component Analysis (www.robots.ox.ac.uk/~parg)  % Initialise  [T,K] = size(B);  Gamma=[];  Gammasum=zeros(1,K);  Scale=zeros(T,1);  Xi=zeros(T-1,K*K);  % Forward step  scale=zeros(T,1);  alpha(1,:)=Pi.*B(1,:);  scale(1)=sum(alpha(1,:));  alpha(1,:)=alpha(1,:)/scale(1);  for i=2:T    alpha(i,:)=(alpha(i-1,:)*P).*B(i,:);    scale(i)=sum(alpha(i,:));    alpha(i,:)=alpha(i,:)/scale(i);  end;    % Backward step  beta(T,:)=ones(1,K)/scale(T);  for i=T-1:-1:1    beta(i,:)=(beta(i+1,:).*B(i+1,:))*(P')/scale(i);   end;    % Calculate state probs.  gamma=(alpha.*beta);  gamma=rdiv(gamma,rsum(gamma));  gammasum=sum(gamma);    % Calculate trans probs.  xi=zeros(T-1,K*K);  for i=1:T-1    t=P.*( alpha(i,:)' * (beta(i+1,:).*B(i+1,:)));    xi(i,:)=t(:)'/sum(t(:));  end;    % Scale to avoid machine precision  Scale=Scale+log(scale);  Gamma=[Gamma; gamma];  Gamma = Gamma';  Xi=Xi+xi;  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -