一、卡尔曼滤波简介

1 卡尔曼滤波是什么
卡尔曼滤波适用于估计一个动态系统的最优状态。即便是观测到的系统状态参数含有噪声,观测值不准确,卡尔曼滤波也能够完成对状态真实值的最优估计。网上大多数的教程讲到卡尔曼的数学公式推导,会让人很头疼,难以把握其中的主线和思想。所以我参考了国外一位学者的文章,讲述卡尔曼滤波的工作原理,然后编写了一个基于OpenCV的小程序给大家做一下说明。

2 卡尔曼滤波能做什么
假设我们手头有一辆DIY的移动小车。这辆车的外形是这样的:

这辆车可以在荒野移动,为了便于对它进行控制,需要知道它的位置以及移动速度。所以,建立一个向量,用来存储小车的位置和速度

其实,一个系统的状态有很多,选择最关心的状态来建立这个状态向量是很重要的。例如,状态还有水库里面水位的高低、炼钢厂高炉内的温度、平板电脑上面指尖触碰屏幕的位置等等这些需要持续跟踪的物理量。好了,回归到正题,小车上面安装了GPS传感器,这个传感器的精度是10米。但是如果小车行驶的荒野上面有河流和悬崖的话,10米的范围就太大,很容易掉进去进而无法继续工作。所以,单纯靠GPS的定位是无法满足需求的。另外,如果有人说小车本身接收操控着发送的运动指令,根据车轮所转动过的圈数时能够知道它走了多远,但是方向未知,并且在路上小车打滑车轮空转的现象绝对是不可避免。所以,GPS以及车轮上面电机的码盘等传感器是间接地为我们提供了小车的信息,这些信息包含了很多的和不确定性。如果将所有这些信息综合起来,是否能够通过计算得到我们更想要的准确信息呢?答案是可以的!

3 卡尔曼滤波的工作原理
** 先验状态估计**
以之前我们创建的状态变量为例,

下图表示的是一个状态空间图,为了研究方便,假如小车在一条绝对笔直的线路上面行驶,其位置和速度的方向是确定的,不确定的是大小。


二、部分源代码

clear;
clc;
%采样点的个数
N=228;
%测试数据:纬度
latitude=load('C:\Users\lenovo\Desktop\基于MATLAB的运动轨迹预测,卡尔曼滤波实现\latitude.txt');
%真实维度值
lat=latitude;
%卡尔曼滤波处理的状态,即估计值
lat_kf=zeros(1,N);
%测报值
lat_z=zeros(1,N);
P=zeros(1,N);
%初始纬度值
lat(1)=29.8131;
%初始值的协方差
P(1)=0.09;
%初始测报值
lat_z(1)=29.8027;
%初始估计状态。假设和初始测报值相同
lat_kf(1)=lat_z(1);
%噪声方差
%系统噪声方差
Q=0.1;
%测量噪声方差
R=0.001;
%方差决定噪声大小
W=sqrt(Q)*randn(1,N);
V=sqrt(R)*randn(1,N);
%系统矩阵
F=1;
G=1;
H=1;
%本系统状态为1维
I=eye(1);
%模拟纬度测报,并滤波
for k=2:N%随时间推移,飞行纬度逐渐变化%k时刻的真是纬度值是测报仪器不知道的,测报值可能是无限接近于真实值,但并不是真实值%lat(k)=F*lat(k-1)+G*W(k-1);%纬度在k时刻的测报值lat_z(k)=H*lat(k)+V(k);%kalman滤波%有了k时刻的测报值lat_z(k)和k-1时刻的状态,那么就可以进行滤波了%状态预测lat_pre=F*lat_kf(k-1);%协方差预测P_pre=F*P(k-1)*F'+Q;%计算卡尔曼增益Kg=P_pre*inv(H*P_pre*H'+R);%新息e=lat_z(k)-H*lat_pre;%状态更新lat_kf(k)=lat_pre+Kg*e;%协方差更新P(k)=(I-Kg*H)*P_pre;
end
%计算误差
%测量值与真实值之间的偏差
Err_Messure=zeros(1,N);
%kalman估计与真实值之间的偏差
Err_Kalman=zeros(1,N);
for k=1:NErr_Messure(k)=abs(lat_z(k)-lat(k));Err_Kalman(k)=abs(lat_kf(k)-lat(k));
end
t=1:N;

三、运行结果


四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.

【轨迹预测】基于matlab卡尔曼滤波运动轨迹预测【含Matlab源码 590期】相关推荐

  1. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  2. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  3. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  4. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  5. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  6. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  7. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  8. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  9. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  10. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. subst将文件夹目录虚拟成虚拟磁盘
  2. matlab中多少角度,MATLAB 计算图像旋转角度
  3. BZOJ2738 矩阵乘法 【整体二分 + BIT】
  4. BZOJ 3489: A simple rmq problem(K-D Tree)
  5. 前端知识点梳理(一)
  6. 企业非法集资风险预测_2020CCF--企业非法集资风险预测83.35baseline
  7. ejb构建_如何使用单例EJB和MBean构建和清除参考数据缓存
  8. [CEOI2008] order
  9. 国内外免费PHP开源建站程序一览(最全)
  10. html + css实现油画商场页面
  11. vue项目白屏问题汇总,多方案详细解决
  12. 如何用 Python 从 0 开始创建一个区块链?
  13. update语句更新多条记录, 标记下
  14. 灵魂一问:一个TCP连接可以发多少个HTTP请求?
  15. zencart产品页面调用WordPress最新文章
  16. 超级网际搜索(SuperSearch) - 3月30日最新版V5.1.28.94,内置140个搜索引擎
  17. 点云 数据增强(Data Augmentation):方法与python代码
  18. java导出excel文件_POI生成EXCEL文件
  19. 响应式织梦模板玩具动漫类网站
  20. 【期末考试】计算机组成原理突击复习

热门文章

  1. 解决在编程方式下无法访问Spark Master问题
  2. 昨天我上午下单买的电池,已经到了长沙
  3. iphone中input标签会多出一块的解决办法
  4. 远程协同网络架构photon cloud
  5. 20191210每日一句
  6. Unity HTC Vive手柄汉诺塔操作
  7. Atitit 时间的展示格式与存储格式 目录 1.1. 赛事时间的格式起源 1 1.1.1. 六十[编辑] 1 1.2. 1h 12m 23s 模式 (可读性最好 2 1.3. 日常模式 1:45:
  8. 21世纪高等专业教材21 CENTURY HIGHER PROFESSIONAL TEXTBOOKS RESUME WRITING METHOD PRINCIPLES AND RULES
  9. Atitit 网络协议概论 艾提拉著作 目录 1. 有的模型分七层,有的分四层。我觉得 1 1.1. 三、链接层 确定了0和1的分组方式 1 1.2. 网络层(ip mac转换层 3 1.3. 传输
  10. Atitit 知识与数据 信息 加工方法总结 目录 1.1. 信息加工是指通过判别、筛选、分类、排序、分析和研究等一系列过程 1 1.2. 首先通过聚类信息 专题化 分组聚合 1 1.3. 多种聚