博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前向算法的数学意义上的实现
阅读量:6432 次
发布时间:2019-06-23

本文共 1962 字,大约阅读时间需要 6 分钟。

首先是前向算法

前向算法demo文件:fwd_demo.m

1 %% 前向算法的demo 2 %% 验证的例子参见《统计学习方法》p177 3 %% 4  5 % (编码:红1,白2) 6 % 初始概率分布 7 pi=[0.2 0.4 0.4] 8  9 % 概率转移矩阵10 A=[ 0.5   0.2   0.3;11     0.3   0.5   0.2;12     0.2   0.3   0.5]13 14 % 观察矩阵(发射矩阵)15 B=[ 0.5   0.5;16     0.4   0.6;17     0.7   0.3]18 19 % 观察序列20 O=[1,2,1]21 22 %%调用前向算法fwd(~)23 %% 24 format long         %% 为了尽量显示全小数部分25 p=fwd(O,A,B,pi)

前向算法文件:fwd.m

1 function p=fwd(o,a,b,pi) 2 %% 参考:《统计学习方法》李航 p174 3 % 暂时不使用向量化编程~ 4 %% 5 %函数功能:一阶离散单观察序列HMM的前向算法(数学意义) 6 %输入: 7 %O=Given observation sequence labellebd in numerics 8 %A(N,N)=transition probability matrix 9 %B(N,M)=Emission matrix10 %pi=initial probability matrix11 %输出:12 %P=probability of given sequence in the given model13 %% 预先分配变量空间,赋值14 N=length(a(1,:));           %%  N=隐状态数15 T=length(o);                %%  T序列长度,也是时间~16 alpha=zeros(T,N);17 18 %前向算法主体19 for i=1:N        %(1)初值20     alpha(1,i)=b(i,o(1))*pi(i);         %% 对应(10.15)21 end22 23 for t=1:(T-1)      %(2)递推24     for j=1:N25         sum=0;26         for i=1:N27             sum=sum+a(i,j)*alpha(t,i);28         end29         alpha(t+1,j)=sum*b(j,o(t+1));           %% 对应(10.16)30     end31 end32 p=0;33 for i=1:N         %(3)终止34     p=p+alpha(T,i);        %% 对应(10.17)35 end

运行后的结果:

1 >> fwd_demo 2  3 pi = 4  5     0.2000    0.4000    0.4000 6  7  8 A = 9 10     0.5000    0.2000    0.300011     0.3000    0.5000    0.200012     0.2000    0.3000    0.500013 14 15 B =16 17     0.5000    0.500018     0.4000    0.600019     0.7000    0.300020 21 22 O =23 24      1     2     125 26 27 p =28 29     0.130230 31 >> fwd_demo32 33 pi =34 35     0.2000    0.4000    0.400036 37 38 A =39 40     0.5000    0.2000    0.300041     0.3000    0.5000    0.200042     0.2000    0.3000    0.500043 44 45 B =46 47     0.5000    0.500048     0.4000    0.600049     0.7000    0.300050 51 52 O =53 54      1     2     155 56 57 p =58 59    0.130218000000000

 

转载于:https://www.cnblogs.com/LzKlyhPorter/p/4865242.html

你可能感兴趣的文章
Azure 中使用 iPerf 进行网络带宽测试
查看>>
OPTIMIZE TABLE
查看>>
flask框架+pygal+sqlit3搭建图形化业务数据分析平台
查看>>
Fedora24下MySQL开发环境搭建
查看>>
shell实战训练营Day20
查看>>
jQuery 之 TAB切换菜单
查看>>
mysql 数据库集群搭建:(二)3台CentOS-7安装Percona-XtraDB-Cluster-57集群
查看>>
Jenkins实战演练之Windows系统节点管理
查看>>
MySQL高可用架构之MHA
查看>>
excel2013使用分列功能拆分数据
查看>>
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联
查看>>
kibana平台增加安全认证
查看>>
1.8 nginx域名跳转
查看>>
PHP面向对象之接口编程
查看>>
使用 Docker Compose 管理多个容器实例
查看>>
ThinkPHP 删除数据记录 delete 方法
查看>>
Gradle学习笔记(二)--创建Java项目
查看>>
IntelliJ IDEA 快捷键
查看>>
qury-easyui DataGrid 整合struts2增删查该入门实例(三)
查看>>
if a point is inside a square with mathematics
查看>>