基于HMM轨迹识别matlab简单说明
2014-12-10 12:49
246 查看
基于HMM隐马尔科夫模型 轨迹识别
总计正确识别326。概率为325/400=81.5%
Matlab代码简单说明。
rand('state',0);
statenum=2;%状态数 可以变,状态数不一样 识别性能会些许改变
trans=rand(statenum);
sumTrans=sum(trans,2);
Temp=inv(diag(sumTrans));
trans=(trans'*Temp)';%状态转移矩阵
observationnum=12;%观察状态数
emis = ones(statenum,observationnum)*(1/observationnum);%混合矩阵
[estTrain,estEmis] = hmmtrain(Trseq,trans,emis);%训练
Trseq为某一类型轨迹训练样本集,每一条轨迹的点数可能不一样。
故Trseq为一个cell结构。
比如说:
Trseq={[3 3 3 4 5 4 5 5 6 6 7 7 8 8 8 9 10 10 11 12 1 2 23 3 3 3 5 8 8 9 10 10 10 11 11 12 12 1 1]
[4 5 5 5 6 6 7 8 8 9 9 10 11 12 1 2 2 3 3 3 3 7 9 9 10 10 11 12 12 1 1 2 3]
[4 5 6 6 7 7 8 8 9 10 10 11 1 2 2 3 3 3 3 1 9 9 10 10 11 12 12 1 1 3]
[4 5 5 6 6 7 7 8 9 9 10 11 12 2 3 3 3 3 3 10 9 9 10 10 11 12 12 1 2]
[4 4 4 5 5 6 6 7 8 8 9 9 10 10 12 1 2 3 3 3 3 3 4 10 9 9 10 10 10 11 12 12 1 1]
[4 4 5 5 6 7 7 8 8 9 9 10 11 12 1 2 3 3 3 3 3 4 1 8 9 9 10 10 11 11 12 1 1 2]
[4 4 4 5 5 6 6 7 8 8 9 9 10 10 11 1 2 2 3 3 3 3 3 1 8 9 10 10 11 11 12 12 1 12]
[3 4 4 4 5 5 6 7 7 8 9 9 10 10 11 12 1 2 3 3 3 3 3 4 9 9 10 10 10 11 12 12 1 12]
[2 4 4 4 4 4 5 6 7 7 8 9 9 10 10 11 1 2 2 3 3 3 3 4 8 9 10 10 11 12 12 1 1 2]}
estTrain,estEmis分别指 训练得到的状态转移矩阵,混合转移矩阵(状态到观察值转移矩阵)
[~,logPro]= hmmdecode(Ttest,estTrain,estEmis);%测试
Ttest为一条即将要识别的类型,或者测试的轨迹编码,比如说
Ttest=[3 4 4 4 4 4 5 6 7 8 8 9 9 10 10 11 12 1 2 3 3 3 32 8 10 10 10 11 11 12 1 2];
通过hmmdecode计算之后得到logPro。
不同的训练样本集,训练得出不同的HMM
给定的一条轨迹编码,带入不同的HMM,得到相应的logPro,选择tlog最大的值对应的HMM类型即为该类型的轨迹模式。
基于HMM隐马尔科夫模型 轨迹识别
字母20个 | a | b | c | d | e | g | h | k | l | m |
识别个数 | 19 | 11 | 19 | 18 | 20 | 20 | 19 | 20 | 13 | 16 |
字母20个 | n | o | p | q | r | s | v | w | y | z |
识别个数 | 14 | 8 | 10 | 20 | 16 | 20 | 18 | 20 | 5 | 20 |
Matlab代码简单说明。
rand('state',0);
statenum=2;%状态数 可以变,状态数不一样 识别性能会些许改变
trans=rand(statenum);
sumTrans=sum(trans,2);
Temp=inv(diag(sumTrans));
trans=(trans'*Temp)';%状态转移矩阵
observationnum=12;%观察状态数
emis = ones(statenum,observationnum)*(1/observationnum);%混合矩阵
[estTrain,estEmis] = hmmtrain(Trseq,trans,emis);%训练
Trseq为某一类型轨迹训练样本集,每一条轨迹的点数可能不一样。
故Trseq为一个cell结构。
比如说:
Trseq={[3 3 3 4 5 4 5 5 6 6 7 7 8 8 8 9 10 10 11 12 1 2 23 3 3 3 5 8 8 9 10 10 10 11 11 12 12 1 1]
[4 5 5 5 6 6 7 8 8 9 9 10 11 12 1 2 2 3 3 3 3 7 9 9 10 10 11 12 12 1 1 2 3]
[4 5 6 6 7 7 8 8 9 10 10 11 1 2 2 3 3 3 3 1 9 9 10 10 11 12 12 1 1 3]
[4 5 5 6 6 7 7 8 9 9 10 11 12 2 3 3 3 3 3 10 9 9 10 10 11 12 12 1 2]
[4 4 4 5 5 6 6 7 8 8 9 9 10 10 12 1 2 3 3 3 3 3 4 10 9 9 10 10 10 11 12 12 1 1]
[4 4 5 5 6 7 7 8 8 9 9 10 11 12 1 2 3 3 3 3 3 4 1 8 9 9 10 10 11 11 12 1 1 2]
[4 4 4 5 5 6 6 7 8 8 9 9 10 10 11 1 2 2 3 3 3 3 3 1 8 9 10 10 11 11 12 12 1 12]
[3 4 4 4 5 5 6 7 7 8 9 9 10 10 11 12 1 2 3 3 3 3 3 4 9 9 10 10 10 11 12 12 1 12]
[2 4 4 4 4 4 5 6 7 7 8 9 9 10 10 11 1 2 2 3 3 3 3 4 8 9 10 10 11 12 12 1 1 2]}
estTrain,estEmis分别指 训练得到的状态转移矩阵,混合转移矩阵(状态到观察值转移矩阵)
[~,logPro]= hmmdecode(Ttest,estTrain,estEmis);%测试
Ttest为一条即将要识别的类型,或者测试的轨迹编码,比如说
Ttest=[3 4 4 4 4 4 5 6 7 8 8 9 9 10 10 11 12 1 2 3 3 3 32 8 10 10 10 11 11 12 1 2];
通过hmmdecode计算之后得到logPro。
不同的训练样本集,训练得出不同的HMM
给定的一条轨迹编码,带入不同的HMM,得到相应的logPro,选择tlog最大的值对应的HMM类型即为该类型的轨迹模式。
相关文章推荐
- 基于RBF简单的matlab手写识别
- 基于matlab的简单人脸识别实例
- 基于Aforge的手势识别之一~~~简单的手写识别
- 简单的图像识别方法:基于灰度的模板识别算法
- 基于Aforge的手势识别之一~~~简单的手写识别
- 基于PCA的人脸识别的Matlab实现代码
- [机器学习]基于OpenCV实现最简单的数字识别
- 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(2)-轨迹多文档手写轨迹输入多语言识别范例
- Matlab图像处理学习笔记(三):基于匹配的目标识别
- 基于Matlab手选控制点的非同源图像简单配准
- 基于K-L变换的人脸识别的MATLAB实现
- 基于MATLAB,运用PCA+SVM的特征脸方法人脸识别
- 基于rhel5平台下dns架设简单说明(1)
- 基于Aforge的手势识别之一~~~简单的手写识别
- [机器学习]基于OpenCV实现最简单的数字识别
- 基于Aforge的手势识别之一~~~简单的手写识别
- 基于Matlab人脸识别的研究进行中~~
- 基于matlab的语音识别系统设计
- 基于BP神经网络的简单字符识别算法自小结(C语言版)
- Matlab图像处理学习笔记(三):基于匹配的目标识别