当前位置: 首页 > news >正文

【逐行注释】自适应Q和R的AUKF(自适应无迹卡尔曼滤波),附下载链接

在这里插入图片描述

文章目录

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

自适应Q的KF

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

自适应 Q 和 R Q和R QR的无迹卡尔曼滤波在无迹卡尔曼滤波的基础上,引入了自适应的思想。通过动态地、同时调整状态转移协方差、观测噪声协方差的大小,从而提高系统的估计精度。

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

逐行注释的说明

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

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

运行结果

  • 三轴的估计值、真值、滤波前的值对比:
    在这里插入图片描述

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

  • 三轴的误差累积密度函数绘图:
    在这里插入图片描述
    上图放大可得到如下细节:
    在这里插入图片描述

部分代码

% 自适应调节Q和R的UKF与传统UKF效果对比
% author:Evand
% 作者联系方式:微信matlabfilter(除前期达成一致外,付费咨询)
% 2024-5-5/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/1105566012');
X_ = zeros(3,length(t)); %给未滤波的值分配空间

各模块解释

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

其中包括如下部分:

  1. 初始化:初始化参数
  2. 运动模型:通过迭代的方式,计算系统在所有时刻下的真值和未滤波的值
  3. UKF:经典的无迹卡尔曼滤波
  4. AUKF:经过自适应的UKF
  5. 绘图:绘制曲线图和CDF图像
  6. 总误差输出:fprintf的输出示例
    【现在输出的是平均值,如下:】
    在这里插入图片描述
    将代码里面的mean换成max即为最大值,换成std即为计算标准差

相关文章:

【逐行注释】自适应Q和R的AUKF(自适应无迹卡尔曼滤波),附下载链接

文章目录 自适应Q的KF逐行注释的说明运行结果部分代码各模块解释 自适应Q的KF 自适应无迹卡尔曼滤波(Adaptive Unscented Kalman Filter,AUKF)是一种用于状态估计的滤波算法。它是基于无迹卡尔曼滤波(Unscented Kalman Filter&am…...

OpenCV高阶操作

在图像处理与计算机视觉领域,OpenCV(Open Source Computer Vision Library)无疑是最为强大且广泛使用的工具之一。从基础的图像读取、 1.图片的上下,采样 下采样(Downsampling) 下采样通常用于减小图像的…...

Vue中的防抖和节流是什么,它们的作用是什么?

在Vue.js中,防抖(debounce)和节流(throttle)是两种常用的性能优化技术,主要用于处理高频事件,如窗口滚动、窗口大小调整、键盘输入等。 **防抖(Debounce)**:…...

C++的类与对象中(主讲默认成员函数)

目录 1.类的默认成员函数 2.构造函数 1.全缺省构造函数 2.第7点中的对自定义类型的成员变量构造(调用编译器自动生成的默认构造函数) 3.析构函数 4.拷贝构造函数 5.运算符重载 1.概念 2.赋值运算符重载 6.const成员函数 1.类的默认成员函数 默…...

C#学习系列之Gmap地图界面上的实时绘制问题

C#学习系列之Gmap地图界面上的实时绘制问题 前言总结 前言 在地图控件上增加绘制不规则图形,在之前的经验来看, System.InvalidOperationException:“无法使用 DependencyObject,它属于其父 Freezable 之外的其他线程。” 其实就是ui线程中…...

Spring Boot中实现定时任务的主要方式

文章目录 在Spring Boot中实现定时任务,主要有以下几种方式:1. 使用Scheduled注解2. 使用Quartz调度器使用Quartz调度器(更好的做法)3. 使用TaskExecutor和ScheduledExecutorService4.总结 在Spring Boot中实现定时任务,主要有以下几种方式&a…...

C#使用HttpWebRequest下载文件

public static bool HttpDownloadFile(string downloadUrl, string localPath, log4net.ILog log) { bool bFlagDownloadFile false; //log.Debug("HttpDownloadFile--准备以HTTP的方式下载文件,url:[" downloadUrl &…...

Linux: virtual: qemu-kvm: top cpu usage的组成是否包含guest的使用?

文章目录 问题试验mpstat问题 最近看一个问题,看到一个虚拟机分配的cpu是:3-4,27-28 Cpus_allowed: 0000,18000018 Cpus_allowed_list: 3-4,27-28 使用top看qemu-kvm进程的cpu usage是:13.3%: [root@qrms6-host01 14278]# top -p 14278 top - 01:19:35 up 4 days...

【03】深度学习——神经网络原理 | 多层感知机 | 前向传播和反向传播 | 多层感知机代码实现 | 回归问题、分类问题 | 多分类问题代码实现

深度学习 1.神经网络原理1.1神经元模型1.2神经网络结构1.3隐藏层1.3.1激活函数层1.4输出层1.4.1softmax层1.5损失函数1.6反向传播2.多层感知机2.1线性网络的局限性2.2引入非线性2.3多层感知机(Multi-Layer Perceptron,MLP)2.4激活函数(Activation Function)2.4.1Sigmoid函…...

MySQL行锁的实践

在MySQL中,根据加锁的粒度,可以将数据库的锁细分为表锁、行锁、页锁。其中,表锁(Table Lock)是一种粗粒度的锁,它锁定整个表,阻止其他事务访问表中的任何行;行锁(Row Lock)是一种细粒度的锁,它锁…...

iOS 18 將在 9 月 16 日正式上線

現在有了正式的上線日期了。一如往常的,它會在 iPhone 16 系列正式推出前的 9 月 16 日先行上線。 iOS 18 最受矚目的無疑是它的 Apple Intelligence 功能,不過並非所有的 iPhone 機種都能享用,而是只有去年的 iPhone 15 Pro 和 Pro Max 才能…...

css选择器有几种?选择器的优先级是怎样的?

CSS选择器的主要分类 元素选择器(Type Selectors):选择HTML文档中的特定类型的元素。 示例:p { color: red; } 类选择器(Class Selectors):选择具有指定类名的元素。 示例:.myClass …...

果蔬识别系统性能优化之路(四)

目录 前情提要剩下问题 问题排查解决方案下一步 前情提要 果蔬识别系统性能优化之路(三) 剩下问题 同步数据库数据并初始化ivf依然要8,9秒 问题排查 通过断点加时间打印,发生其实初始化ivf的时间很快,慢的是数据在网络间的传…...

kafka之protobuf

Protobuf 的 .proto 文件是一种描述消息结构的定义文件,使用这种文件可以定义数据结构(消息),然后生成对应语言的类或代码用于序列化和反序列化数据。生成 .proto 文件涉及到编写 .proto 文件定义,然后通过 protoc 编译…...

BARTBERT

BART和BERT都是基于Transformer架构的预训练语言模型。 模型架构: BERT (Bidirectional Encoder Representations from Transformers) 主要是一个编码器(Encoder)模型,它使用了Transformer的编码器部分来处理输入的文本&#xff0…...

C++ 11新特性(1)

文章目录 C11新特性之auto和decltype知识点autoauto推导规则什么时候使用auto? decltypedecltype推导规则 auto和decltype的配合使用 C11新特性之左值引用、右值引用、移动语义、完美转发左值、右值纯右值、将亡值纯右值将亡值左值引用、右值引用 移动语义深拷贝、浅…...

彻底理解浅拷贝和深拷贝

目录 浅拷贝实现 深拷贝实现自己手写 浅拷贝 浅拷贝是指创建一个新对象,这个对象具有原对象属性的精确副本 基本数据类型(如字符串、数字等),在浅拷贝过程中它们是通过值传递的,而不是引用传递,修改值并不…...

Spring4-IoC2-基于注解管理bean

目录 开启组件扫描 使用注解定义bean Autowired注入 场景一:属性注入 场景二:set注入 场景三:构造方法注入 场景四:形参注入 场景五:只有一个构造函数,无注解 场景六:Autowired和Quali…...

AI基础 L22 Uncertainty over Time I 时间的不确定性

Time and Uncertainty 1 Time and Uncertainty States and Observations • discrete-time models: we view the world as a series of snapshots or time slices • the time interval ∆ between slices, we assume to be the same for every interval • Xt: denotes the se…...

中小型企业网络构建

1 什么是 VLAN? VLAN,指的是虚拟局域网,是一种 2 层技术。可以在交换机上实现广播域的隔离。从而可以减小 数据广播风暴对交换网络的影响,降低了网络管理难度,同时可以实现网络规模的灵活扩展。 2 Trunk 链路与 Acces…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

零知开源——STM32F103RBT6驱动 ICM20948 九轴传感器及 vofa + 上位机可视化教程

STM32F1 本教程使用零知标准板&#xff08;STM32F103RBT6&#xff09;通过I2C驱动ICM20948九轴传感器&#xff0c;实现姿态解算&#xff0c;并通过串口将数据实时发送至VOFA上位机进行3D可视化。代码基于开源库修改优化&#xff0c;适合嵌入式及物联网开发者。在基础驱动上新增…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版

1.题目描述 2.思路 当前的元素可以重复使用。 &#xff08;1&#xff09;确定回溯算法函数的参数和返回值&#xff08;一般是void类型&#xff09; &#xff08;2&#xff09;因为是用递归实现的&#xff0c;所以我们要确定终止条件 &#xff08;3&#xff09;单层搜索逻辑 二…...

轻量级Docker管理工具Docker Switchboard

简介 什么是 Docker Switchboard &#xff1f; Docker Switchboard 是一个轻量级的 Web 应用程序&#xff0c;用于管理 Docker 容器。它提供了一个干净、用户友好的界面来启动、停止和监控主机上运行的容器&#xff0c;使其成为本地开发、家庭实验室或小型服务器设置的理想选择…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

scan_mode设计原则

scan_mode设计原则 在进行mtp controller设计时&#xff0c;基本功能设计完成后&#xff0c;需要设计scan_mode设计。 1、在进行scan_mode设计时&#xff0c;需要保证mtp处于standby模式&#xff0c;不会有擦写、编程动作。 2、只需要固定mtp datasheet说明的接口即可&#xf…...

AIGC 基础篇 Python基础 02

1.bool类型 书接上回&#xff0c;我们上次最后讲了三大数据类型&#xff0c;除了这三个之外&#xff0c;Python也有bool类型&#xff0c;也就是True和False。 a 2 print(a1) print(a2) 像这里&#xff0c;输出的内容第一个是False&#xff0c;因为a的值为2&#xff0c;而第…...