观测与预测差值自动变化系统噪声Q的自适应UKF(AUKF_Q)MATLAB编写

embedded/2024/9/24 8:16:16/

简述

基于三维模型的UKF,设计一段时间的输入状态误差较大,此时通过对比预测的状态值与观测值的残差,在相应的情况下自适应扩大系统方差Q,构成自适应无迹卡尔曼滤波(AUKF),与传统的UKF相比,三轴误差的平均值得到了降低,带经典UKF的误差对比、无滤波情况下的UKF对比。带中文注释。

部分代码

matlab">% 自适应调节Q的UKF与传统UKF效果对比
% author:Evand
% 作者联系方式:evandjiang@qq.com(除前期达成一致外,付费咨询)
% 2024-5-5/Ver1
clear;clc;close all;
%% 滤波模型初始化
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;
%% 运动模型
X_=zeros(3,length(t));
X_(:,1)=X(:,1);
for i1 = 2:length(t)X(:,i1) = [X(1,i1-1) + (2.5 * X(1,i1-1) / (1 + X(1,i1-1).^2)) + 8 * cos(1.2*(i1-1));X(2,i1-1)+1;X(3,i1-1)]; %真实值if i1>500 && i1<700 %设定IMU误差较大的时间段w(:,i1) = 10*w(:,i1);elsew(:,i1) = w(:,i1);endX_(:,i1) = [X_(1,i1-1) + (2.5 * X_(1,i1-1) / (1 + X_(1,i1-1).^2)) + 8 * cos(1.2*(i1-1));X_(2,i1-1)+1;X_(3,i1-1)] + w(:,i1);%未滤波的值Z(:,i1)=[X(1,i1)^2/20;X(2,i1);X(3,i1)]+v(:,i1); %观测量
end

运行结果

真值、滤波前后的曲线对比:
在这里插入图片描述
误差对比:
在这里插入图片描述
误差的平均值对比:
在这里插入图片描述

下载地址

https://download.csdn.net/download/callmeup/89267114


http://www.ppmy.cn/embedded/35917.html

相关文章

SpringBoot项目启动成功后,我们需要在某个组件里提前执行一些操作应该怎么做?

第一、业务场景 在 SpringBoot 项目启动成功后&#xff0c;根据业务需求的特殊性&#xff0c;在某个组件被调用前&#xff0c;我们可能还需要做一些准备工作。 比如把配置文件properties 里的变量赋值给组件里的静态变量&#xff0c;从而实例化某个对象&#xff0c;加载某个资源…

cache数据库基础操作

Cache数据库(也称为Cach或InterSystems Cach)是一种后关系型数据库,由美国Intersystems公司开发。它提供了高性能、可扩展性和灵活性,特别适合需要处理大量数据和高并发访问的应用场景。以下是一些Cache数据库的基础操作: 安装与设置: 访问Intersystems官方网站或相关资…

【linux】dd命令

目录 命令简介 命令格式 使用场景 注意事项 命令简介 1&#xff0c;用来复制和转换文件的命令行工具 2&#xff0c;dd命令可以以指定的块大小从输入文件读取数据&#xff0c;再根据要求以相同或不同的块大小将数据写入输出文件。 命令格式 dd ifinput-file ofoutput-file …

Mysql数据库

目录 Mysql优点 sql概述 sql的优点 DDL概述 DDL语言 创建&#xff0c;删除数据库 数据库表的基本概念 创建表的步骤 列的数据类型 列的约束: 列的规则 表的操作 DML概述 DML语言 数据操作 DQL—基础查询 单行函数 字符函数 逻辑处理 数学函数 日期函数 …

【机器学习】剪贴画图像等文本引导运动生成技术革新

AniClipart&#xff1a;剪贴画图像的文本引导运动生成技术革新 一、技术背景与挑战二、AniClipart的创新与实现三、实验结果与应用前景四、代码实例 随着科技的飞速发展&#xff0c;我们正处于一个数字内容爆炸的时代。在这一浪潮中&#xff0c;剪贴画作为一种古老而独特的艺术…

C++ 函数与数组

例1 求数组各项的累加和 例2 修改数组元素大于5的为0 1 用数组名作为函数参数时还应注意以下几点&#xff1a; 1&#xff09;形参数组和实参数组的类型必须一致&#xff0c;否则将引起错误。 2&#xff09;形参数组和实参数组的长度可以不相同&#xff0c;因为在调用时&#…

基于Springboot+Vue的Java项目-旅游网站系统开发实战(附演示视频+源码+LW)

大家好&#xff01;我是程序员一帆&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &am…

一文掌握python杖举类(Enum)

目录 枚举类是一种特殊的数据类型,用于定义一组命名的常量集合,这些常量通常代表某一特定领域的有限且固定的选项集。通过使用枚举类,可以提高代码的可读性和可维护性,同时避免硬编码和潜在的类型错误。 一. 定义枚举类 二. 枚举成员 1、 名称与值 2、 访问枚举成员 …