用matlab解决马尔可夫模型,MatLa工具箱b 马尔可夫模型的MatLab程序

普查工具箱包括5个与隐马尔可夫模型相干的函数:

hmmgenerate从一个马尔可夫模型发生一个事态序列和输出序列;

hmmestimate计算迁移和输出的极大似然估计;

hmmtrain从一个输出序列计算迁移和输出概率的极大似然估计;

hmmviterbi计算一个隐马尔可夫模型最可能的事态改变过程;

hmmdecode计算一个给定输出序列的后验事态概率。

下面局部推荐如何利用这些函数来分析隐马尔可夫模型。

1. 发生一个测验序列

下面代码发生上面简介中模型的迁移和输出矩阵:

TRANS = [.9 .1; .05 .95;];

EMIS = [1/6, 1/6, 1/6, 1/6, 1/6, 1/6;...

7/12, 1/12, 1/12, 1/12, 1/12, 1/12];

要从模型发生一个随机的事态序列和输出序列,利用hmmgenerate:

[seq,states] = hmmgenerate(1000,TRANS,EMIS);

输出中,seq是输出序列,states是事态序列。hmmgenerate在第0步从事态1开始,在第一步迁移到事态i1

,并归来i1作为事态的第一个入口。

2. 估计事态序列

给定了迁移和输出矩阵TRANS和EMIS,函数hmmviterbi利用Viterbi算法计算模型给定输出序列seq最有可能

穿越的事态序列:

likelystates = hmmviterbi(seq, TRANS, EMIS);

likelystates是和seq一样长的序列。计算hmmvertibi的精度如下:

sum(states == likelystates) / length(states)

ans =

0.8680

3. 估计迁移和输出矩阵

函数hmmestimate和hmmtrain用于估计给定输出序列seq的迁移和输出矩阵TRANS和EMIS。

利用hmmestimate

[TRANS_EST, EMIS_EST] = hmmestimate(seq, states)

TRANS_EST =

0.9065 0.0935

0.0406 0.9594

EMIS_EST =

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值