【逐行注释】自适应观测协方差R的AUKF(自适应无迹卡尔曼滤波,MATLAB语言编写),附下载链接

news/2024/11/28 23:06:39/

在这里插入图片描述

文章目录

  • 自适应R的UKF
  • 逐行注释的说明
  • 运行结果
  • 部分代码
  • 各模块解释

自适应R的UKF

自适应无迹卡尔曼滤波(Adaptive Unscented Kalman Filter,AUKF)是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波(Unscented Kalman Filter,UKF)的改进算法。

自适应无迹卡尔曼滤波在无迹卡尔曼滤波的基础上,引入了自适应的思想。它通过动态地调整无迹点的数量和分布,以适应系统的动态变化。具体来说,它使用一种自适应的方法来根据系统的动态特性进行无迹点的选择和更新,从而提高系统的估计精度。

自适应无迹卡尔曼滤波适用于非线性和非高斯的系统状态估计问题,可以广泛应用于机器人导航、目标跟踪、航天器导航等领域。它通过动态地调整无迹点的数量和分布,能够更好地适应系统的动态特性,提高估计精度,同时具有较低的计算复杂度。

逐行注释的说明

每一行都标有中文注释:
在这里插入图片描述

是我自己一个字一个字打的,如果有错别字等问题,欢迎指正。

运行结果

  • 三轴的估计值、真值、滤波前的值对比:

在这里插入图片描述

  • 三轴的误差值对比:
    在这里插入图片描述

  • 三轴的误差累积密度函数绘图:
    在这里插入图片描述
    **累积分布函数(CDF)**图像的作用是展示数据在不同值范围内的累积概率分布情况。通过CDF图像,可以直观地看到数据的分布特性和不同滤波方法的效果。以下是CDF图像的作用和识图方法:

  • 作用

    • 比较误差分布:CDF图像可以帮助比较不同滤波方法(如未滤波、UKF、AUKF)的误差分布情况。通过观察不同方法的CDF曲线,可以了解哪种方法的误差更小、更稳定。
    • 评估滤波效果:通过CDF图像,可以评估滤波方法的效果。例如,如果某种滤波方法的CDF曲线在较小的误差范围内上升较快,说明该方法的误差较小,滤波效果较好。
    • 数据分布分析:CDF图像可以展示数据在不同值范围内的累积概率,帮助分析数据的分布特性。例如,可以看到数据中有多少比例的误差小于某个特定值。
  • 识图方法

    • 横轴(X轴):表示误差的绝对值。横轴上的值越大,表示误差越大。
    • 纵轴(Y轴):表示累积概率。纵轴上的值范围从0到1,表示误差小于或等于横轴上某个值的概率。
      曲线形状:曲线越陡峭,表示误差集中在较小的范围内,滤波效果越好。曲线越平缓,表示误差分布较广,滤波效果相对较差。
    • 比较不同曲线:通过比较不同滤波方法的CDF曲线,可以直观地看到哪种方法的误差更小。例如,如果UKF的CDF曲线在较小的误差范围内上升较快,说明UKF的滤波效果优于未滤波和AUKF。

部分代码

matlab">% adaptive UKF与AUKF效果对比% date: 2023-11-07/Ver1
% 2024-9-9/Ver2/添加逐行注释、添加随机数种子
clear;clc;close all; %清空工作区、命令行,关闭小窗口
rng(0); %固定随机种子
%% 滤波模型初始化
t = 1:1:1000;% 定义时间序列Q = 1*diag([1,1,1]);w=sqrt(Q)*randn(size(Q,1),length(t));% 设置过程噪声协方差矩阵和过程噪声
R = 1*diag([1,1,1]);v=sqrt(R)*randn(size(R,1),length(t));% 设置观测噪声协方差矩阵和观测噪声
P0 = 1*eye(3);% 初始状态估计协方差矩阵
X=zeros(3,length(t));% 初始化状态向量
Z=zeros(3,length(t)); %定义观测值形式
Z(:,1)=[X(1,1)^2/20;X(2,1);X(3,1)]+v(:,1); %观测量
residue_tag = 0; %自适应标签
%% 运动模型
% 初始化未滤波的状态向量
fprintf('完整代码下载链接:https://gf.bilibili.com/item/detail/1106220012');
X_ = zeros(3,length(t)); %给未滤波的值分配空间

各模块解释

程序共有下列几个模块:
在这里插入图片描述

其中:

  • 滤波模型初始化是程序初始化和滤波模型的相关参数设置
  • 运动模型为迭代计算真值和未滤波(带噪声)的值
  • UKF为经典的无迹卡尔曼滤波
  • AUKF为经过自适应的UKF
  • 绘图用于绘制上面的图
  • 总误差输出示例的代码如下:
    在这里插入图片描述
    用于计算各种方法的误差平均值,可以经过修改后计算最大值(max)、最小值(min)等。

http://www.ppmy.cn/news/1550749.html

相关文章

C# 属性 学习理解记录

字段和属性 左边字段,右边属性 拓展,属性安全: 1、设置public private 和protected 等,只读,只写, 2、在get set 方法时,验证,异常时抛出错误

【数据结构笔记】习题

渐进分析 【2010-THU-Mid】f(n) O(g(n)),当且仅当g(n) Ω(f(n))。(√) 【2010-THU-Mid】若f(n) O(n^2)且g(n) O(n),则以下结论正确的是(AD) A. f(n) g(n) O(n^2) B. f(n) / g(n) O(n) C. g(n) O(f(…

Unity版本使用情况统计(更新至2024年11月)

UWA发布|本期UWA发布的内容是第十五期Unity版本使用统计,统计周期为2024年5月至2024年11月,数据来源于UWA网站(www.uwa4d.com)性能诊断提测的项目。希望给Unity开发者提供相关的行业趋势作为参考。 2024年5月 - 2024年…

全景图像(Panorama Image)向透视图像(Perspective Image)的跨视图转化(Cross-view)

一、概念讲解 全景图像到透视图像的转化是一个复杂的图像处理过程,它涉及到将一个360度的全景图像转换为一个具有透视效果的图像,这种图像更接近于人眼观察世界的方式。全景图像通常是一个矩形图像,它通过将球面图像映射到平面上得到&#xf…

STM32F10x 定时器

使用定时器实现:B5 E5的开关 添加相关的.h路径文件 添加相关的.c配置文件 led.h文件 用于声明LED函数 #ifndef __LED_H //没有定义__LED_H #define __LED_H //就定义__LED_H #define LED1_ON GPIO_ResetBits(GPIOB,GPIO_Pin_5) #defi…

海康VsionMaster学习笔记(学习工具+思路)

一、前言 VisionMaster算法平台集成机器视觉多种算法组件,适用多种应用场景,可快速组合算法,实现对工件或被测物的查找测量与缺陷检测等。VM算法平台依托海康威视在图像领域多年的技术积淀,自带强大的视觉分析工具库,可…

Python双向链表、循环链表、栈

一、双向链表 1.作用 双向链表也叫双面链表。 对于单向链表而言。只能通过头节点或者第一个节点出发,单向的访问后继节点,每个节点只能记录其后继节点的信息(位置),不能向前遍历。 所以引入双向链表,双…

蓝桥杯每日真题 - 第23天

题目:(直线) 题目描述(12届 C&C B组C题) 解题思路: 题目理解: 在平面直角坐标系中,从给定的点集中确定唯一的直线。 两点确定一条直线,判断两条直线是否相同,可通过…