[记录]初学kalman滤波算法
来源:互联网 发布:吉他制谱软件 编辑:程序博客网 时间:2024/06/04 19:14
按照《kalman滤波算法从原理到实现》,自己尝试写了一个小matlab程序。!
function v =kalman_filter(s)if ~isfield(s,'x'); s.x=nan*z; endif ~isfield(s,'p'); s.p=nan; endif ~isfield(s,'z'); error('Observation vector missing'); endif ~isfield(s,'u'); s.u=0; endif ~isfield(s,'A'); s.A=eye(length(x)); endif ~isfield(s,'B'); s.B=0; endif ~isfield(s,'Q'); s.Q=zeros(length(x)); endif ~isfield(s,'R'); error('Observation covariance missing'); endif ~isfield(s,'H'); s.H=eye(length(x)); end%保证s被初始化s.I = eye(length(s.x));%第一步:预测s.x = s.A * s.x + s.B * s.u;s.p = s.A*s.p*(s.A') + s.Q;%第二步:修正K = s.p*(s.H')*(inv(s.R + s.H*s.p*s.H'));s.x = s.A*s.x + K*(s.z - s.H*s.x);s.p = s.p - K*s.H*s.p;v= s.x;end
%状态矢量a = F/m;%观测矢量s.x = 10;s.p = 2;s.R = 2^2;s.Q = 2^2;s.H = 1;s.A = 1;s.B =0;s.u = 0;v = [0,0];me = [];for n = 1:100s.z = randn*2+10;v(1,n) = kalman_filter(s);me(1,n) = s.z ;hold onplot(n,(s.z),'*')endhold onplot(v(2:end-1),'r')% hold on% plot(me(1:end-1),'g')
-----分割线,2017-5-19 记录一下
阅读全文
0 0
- [记录]初学kalman滤波算法
- Kalman 滤波算法导论
- Kalman滤波算法和Condensation算法
- 数字图像算法(一)--Kalman滤波(上)
- 数字图像算法(一)--Kalman滤波(下)
- Kalman滤波算法原理(Matlab/C/C++)
- Kalman滤波算法解释与实现
- Kalman滤波算法解释与实现
- Kalman滤波
- Kalman滤波
- Kalman滤波
- Kalman滤波
- kalman滤波
- Kalman 滤波
- kalman滤波
- 卡尔曼(Kalman)滤波(四)--深入浅出Kalman滤波算法
- OpenCV2学习笔记(十九):Kalman滤波算法
- Kalman滤波实验代码
- SIGHUP
- vivo部分笔试题(2017提前批)
- 冒泡排序算法
- 【cc2541历程】ds18B20
- Linux 学习(六) --- 文件系统操作命令
- [记录]初学kalman滤波算法
- MFC使用OpenCV在文档窗口中显示图像(支持多图片格式)
- 爬取网页后的抓取数据_3种抓取网页数据方法
- arp攻击原理与arp欺骗的原理和应用
- Install MariaDB
- ffmpeg入门基础知识
- C++第5次作业
- 如何在无图形界面的操作系统上使用图形界面软件如sublime text,以及显示图形?
- c头文件