经典卡尔曼滤波器直接调用代码(Matlab)
clc,clear;
%以下开始进行交互式输入等操作
paraZkstr = inputdlg('请输入观测变量矩阵(每一列是一次观测向量):','状态参数',1,{'[0 0.1 0.5 0.8;0 0.42 0.37 0.4]'});
Z_k = str2num(paraZkstr{1});
[rowZk,colZk] = size(Z_k);
estimateX = zeros(rowZk,colZk);
estimateX_ = zeros(rowZk,colZk);
estimateP_ = cell(1,colZk);
estimateP = cell(1,colZk);
estimateK = cell(1,colZk);
paraAstr = inputdlg('请输入矩阵A:','状态参数',1,{'[0 1;-0.04 -0.04]'});
A = str2num(paraAstr{1});
paraBstr = inputdlg('请输入矩阵B:','状态参数',1,{'[1 0;0 1]'});
B = str2num(paraBstr{1});
paraUstr = inputdlg('请输入控制变量u:','状态参数',1,{'[0 0 0 0;1 1 1 1]'});
u = str2num(paraUstr{1});
paraX0str = inputdlg('请输入初始观测量X_0:','状态参数',1,{'[0;0.1]'});
X_0 = str2num(paraX0str{1});
tryestimateX_(:,1) = A*X_0 + B*u(:,1);
catchmsgbox('矩阵输入的维度不正确!');return;
end
paraP0str = inputdlg('请输入初始协方差P_0:','状态参数',1,{'[1 1e-3;1e-3 1]'});
P_0 = str2num(paraP0str{1});
paraQstr = inputdlg('请输入状态方程噪声协方差Q:','状态参数',1,{'[1 1e-4;1e-4 1]'});
Q = str2num(paraQstr{1});
tryestimateP_{1} = A*P_0*A' + Q;
catchmsgbox('初始先验协方差估计出错!');return;
end
paraHstr = inputdlg('请输入测量矩阵H:','状态参数',1,{'[1 0;0 1]'});
H = str2num(paraHstr{1});
paraRstr = inputdlg('请输入测量噪声协方差R:','状态参数',1,{'[1 1e-4;1e-4 1]'});
R = str2num(paraRstr{1});
tryestimateK{1} = estimateP_{1}*H'/(H*estimateP_{1}*H' + R);
catchmsgbox('初始增益系数估计出错!');return;
endtryestimateX(:,1) = estimateX_(:,1) + estimateK{1}*(Z_k(:,1) - H*estimateX_(:,1));
catchmsgbox('后验状态估计出错!');return;
endtryestimateP{1} = (eye(rowZk) - estimateK{1}*H)*estimateP_{1};
catchmsgbox('后验状态估计出错!');return;
end
%以下开始进行更新等操作
for i = 2:colZkestimateX_(:,i) = A*estimateX(:,i-1) + B*u(:,i);estimateP_{i} = A*estimateP{i-1}*A'+ Q;estimateK{i} = estimateP_{i}*H'/(H*estimateP_{i}*H' + R);estimateX(:,i) = estimateX_(:,i) + estimateK{i}*(Z_k(:,i) - H*estimateX_(:,i));estimateP{i} = (eye(rowZk) - estimateK{i}*H)*estimateP_{i};
end
%以下开始进行绘图等操作
for i = 1:rowZkif rowZk == 1figure(1);elsesubplot(fix(rowZk/2),2,i);endplot(1:colZk,estimateX(i,:),'*','color','b');hold onplot(1:colZk,Z_k(i,:),'-','color','r');xlabel('次数');ylabel('状态值');legend(['状态量',num2str(i)],['测量值',num2str(i)]);grid onhold off
end
经典卡尔曼滤波器直接调用代码(Matlab)相关推荐
- 卡尔曼滤波器求速度matlab,卡尔曼滤波器算法浅析及matlab实战
原标题:卡尔曼滤波器算法浅析及matlab实战 作者:Liu_LongPo 出处:Liu_LongPo的博客 卡尔曼滤波器是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的 ...
- 卡尔曼滤波器原理讲解及其matlab实现
目录 一:卡尔曼滤波器的信号模型[1-2] 二:其他方程及变量介绍 三:卡尔曼滤波器递推公式 四:matlab仿真[3] 参考文献: 引言:在进行一些信号处理的过程中,我们通常会采集到一些数据,但是实 ...
- 【理解】Kalman卡尔曼滤波器 附pythonmatlab代码
一般我是把参考链接放在最后的,但这一次,我放最前排,以表示我对这两位博主的极大感谢,写得真的是太好了! 可能我即将写的这篇是最详细明白的一篇关于卡尔曼滤波器的理解,如果还有疑问,我会补充修正 文章目录 ...
- 由浅入深的扩展卡尔曼滤波器教程
本篇译文翻译自 The Extended Kalman Filter : An Interactive Turorial for Non-Experts. 原文 本文惯例及说明 : 译文中的Demo请 ...
- 卡尔曼滤波器学习笔记(二)
扩展卡尔曼滤波器的原理及应用 经典的卡尔曼滤波只适用于线性且满足高斯分布的系统,但实际工程中并不是这么简单,比如飞行器在水平运动时有可能伴随着自身的自旋,此时的系统并不是线性的,这时就需要应用扩展卡尔 ...
- 优达学城《无人驾驶入门》学习笔记——卡尔曼滤波器实现详解
优达学城<无人驾驶入门>的第二个项目是实现矩阵类,要求通过python编写一个用来计算矩阵的类Matrix.编写这个类并不难,涉及到的线性代数方面的知识也不多,比如矩阵的加法.减法.乘法, ...
- 【信号处理】基于扩展卡尔曼滤波器和无迹卡尔曼滤波器的窄带信号时变频率估计(Matlab代码实现)
目录 1 概述 2 数学模型 3 运行结果 4 结论 5 参考文献 6 Matlab代码实现 1 概述 本文讲解和比较了基于卡尔曼滤波器的频率跟踪方法的能力,例如扩展卡尔曼滤波器 (EKF) 和无味卡 ...
- 信号去噪,基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附Matlab代码
信号去噪,基于Sage-Husa自适应卡尔曼滤波器实现海浪磁场噪声抑制及海浪磁场噪声的产生附Matlab代码 信号处理中的一个关键问题就是信号去噪.在实际应用中,很多信号可能会受到环境噪声的干扰,这些 ...
- matlab中卡尔曼滤波,卡尔曼滤波器和matlab代码.doc
完美WORD格式 专业整理分享 信息融合大作业 --维纳最速下降法滤波器,卡尔曼滤波器设计及Matlab仿真 时间:2010-12-6 专业:信息工程 班级学号:2007302171 姓名:马志强 滤 ...
最新文章
- java struts2配置_Struts2初始化配置的问题
- RHEL5下安装Xen
- P值(P-value),“差异具有显著性”和“具有显著差异”
- python映射类型-什么是python中唯一的映射类型
- Summary of the Academic English Class
- GraphQL:从头开始
- 国贸专业要考计算机二级,国贸专业考计算机二级有没有必要
- 网站维护页面_营销型企业网站有哪些功能?
- matlab2c使用c++实现matlab函数系列教程-tanh函数
- Long-Short Memory Network(LSTM长短期记忆网络)
- Python类常用的魔术方法
- Endnote_X9安装及使用教程
- 2021-02-14马克思主义概论
- 怎么安装Nginx的监控模块
- html图标 白块,桌面图标变成白块了?不用怕,1分钟就搞定!
- 字符串前加 u、r、f 的含义
- Spring Boot 2.0 配置图文教程第 2 章 Spring Boot 配置## 书信息 demo.book.name=[Spring Boot 2.x Core Action] demo.b
- 7005-艺赛旗RPA8.0产品介绍(2019.01)
- 千万不要死于无知——平衡饮食
- BDTC 2017 | 区块链论坛:华东师范、中科院、趣链、人民大学、人民保险专家共话区块链的现状和未来...
热门文章
- Windows 8(Windows Developer Preview)先体验
- 台大李宏毅Machine Learning 2017Fall学习笔记 (2)Linear Regression and Overfitting
- 严版快速排序Partion方法
- 关于OPENCV 访问外部传进来的Mat矩阵元素的问题
- 用windows通过xrdp远程连接到ubuntu16后 Tab键无法使用
- MySQL 5.7.25 在Windows 7中安装的记录
- 给MongoDB添加索引
- 深入理解Flink ---- 系统内部消息传递的exactly once语义
- [BZOJ]4650 优秀的拆分(Noi2016)
- effective java第45条:将局部变量的作用域最小化