自适应调节Q和R的自适应UKF(AUKF_QR)的MATLAB程序

简述

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

运行截图

在这里插入图片描述
误差图:
在这里插入图片描述
平均误差输出的结果图:
在这里插入图片描述

部分源代码

% 自适应调节Q和R的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);Z(:,i1) = [X(1,i1).^2 / 20;X(2,i1);X(3,i1)] + 10*v(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%% UKF
P = P0;
X_ukf=zeros(3,length(t));
X_ukf(:,1)=X(:,1);
for k = 2 : length(t)Xpre = X_ukf(:,k-1);% sigma点和权重apha = 0.1; %【自己可以设置,取值:0.001~1】% calculateSigPntsandWeightsn = size(X,1);State_aug = Xpre;lambda = 3;% sigma点Sigma_Points = zeros(n, 2*n+1);Sigma_Points(:,1) = State_aug;A = chol(P,'lower');for i = 1:nSigma_Points(:,i+1) = State_aug + sqrt(lambda+n)*A(:,i);Sigma_Points(:,i+1+n) = State_aug -sqrt(lambda+n)*A(:,i);endWeights_m = zeros(2*n+1,1);for i = 1:2*n+1if i==1Weights_m(i,1) = lambda / (lambda+n);Weights_c(i,1) = lambda / (lambda+n)+1-apha^2+2;elseWeights_m(i,1) = 0.5 / (lambda+n);Weights_c(i,1) = 0.5 / (lambda+n);endend% 预测for i = 1:size(Weights_m)Sigma_pred(:,i) = [Sigma_Points(1,i)+2.5*Sigma_Points(1,i)/(1+Sigma_Points(1,i)^2)+8*cos(1.2*(k-1));Sigma_Points(2,i)+1;Sigma_Points(3,i)]+w(:,k);end% State_predXpre = Sigma_pred*Weights_m;n = size(Xpre,1);P_pred = zeros(n, n);for i = 1:size(Weights_m)x_diff = Sigma_pred(:,i) - Xpre;P_pred = P_pred + Weights_c(i,1)*x_diff*transpose(x_diff);end% 由各个状态量的点来求观测量for i = 1:size(Weights_m)Z_sigma(:,i) = [Sigma_pred(1,i)^2/20;Sigma_pred(2,i);Sigma_pred(3,i)];endZ_pred = Z_sigma*Weights_m;P_pred = P_pred+Q;X_ukf(:,k) = Xpre;% 观测更新nx = size(Xpre,1);nz = size(Z_pred,1);S = zeros(nz, nz);for i = 1:size(Weights_m)z_diff = Z_sigma(:,i) - Z_pred;S = S + Weights_c(i,1)*z_diff*transpose(z_diff);endS = S+R;TC = zeros(nx, nz);for i = 1:size(Weights_m)z_diff = Z_sigma(:,i) - Z_pred;x_diff = Sigma_pred(:,i) - Xpre;TC = TC + Weights_c(i,1)*x_diff*transpose(z_diff);endK = TC/S;% 更新P和滤波的状态量residue = Z(:,k) - Z_pred;Xpre = Xpre + K*residue;P = P_pred - K*S*transpose(K);X_ukf(:,k) = Xpre;end
%% AUKF
P = P0;
X_aukf=zeros(3,length(t));
X_aukf(:,1)=X(:,1);

完整程序下载链接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/687787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【敦煌网注册/登录安全分析报告】

敦煌网注册/登录安全分析报告 前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大…

广交会资料缺了时效性有用吗?白忙活了

广交会资料开发客户有哪些难度&#xff1f; 1.如何辨别数据的真实性 展会客户真实可信&#xff0c;无需求者不会远道而来。但部分采购商为保护隐私和简便行事&#xff0c;联系方式有所保留。因此&#xff0c;数据筛选与深挖需耗费精力和耐心。 2.历史陈旧数据具备客户开发价值…

[Bug]:由于中国防火墙,无法连接 huggingface.co

问题描述 : OSError: We couldnt connect to https://huggingface.co to load this file, couldnt find it in the cached files and it looks like youscan/ukr-roberta-base is not the path to a directory containing a file named config. Json. Checkout your internet …

前端动画requestAnimationFrame

window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画&#xff0c;并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数&#xff0c;该回调函数会在浏览器下一次重绘之前执行。 备注&#xff1a; 若你想在浏览器下次重绘…

《C语言文件处理:从新手到高手的跃迁》

&#x1f4c3;博客主页&#xff1a; 小镇敲码人 &#x1f49a;代码仓库&#xff0c;欢迎访问 &#x1f680; 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f30f; 任尔江湖满血骨&#xff0c;我自踏雪寻梅香。 万千浮云遮碧…

实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能

前言 Chrome作为主力浏览器&#xff0c;支持相当丰富的第三方扩展&#xff0c;其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中&#xff0c;我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…

【未公开】电信网关配置管理系统rewrite接口存在文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

x264 帧类型决策模块 x264_slicetype_decide 函数原理分析

======================================================================== ======================================================================== x264帧类型决策 x264 的帧类型决策可以参考:

玩游戏专用远程控制软件

玩游戏专用远程控制软件&#xff1a;实现远程游戏的新体验 随着网络技术的不断发展和创新&#xff0c;远程控制软件已经逐渐渗透到我们生活的方方面面&#xff0c;尤其是在游戏领域。玩游戏专用远程控制软件&#xff0c;作为这一趋势下的产物&#xff0c;为玩家提供了全新的游…

全套停车场管理系统报价多少钱?停车场管理系统由哪些设备组成?

随着城市化进程的加快&#xff0c;汽车保有量的不断攀升&#xff0c;停车场的管理和运营成为城市基础设施建设的重要组成部分。一个高效、智能的停车场收费系统不仅能提升停车效率&#xff0c;还能增强用户体验&#xff0c;对城市的交通管理起到关键作用。本文将为您详细介绍全…

三下乡社会实践投稿攻略在这里

在当今信息爆炸的时代&#xff0c;如何让自己的声音被更多人听到&#xff0c;成为许多人和企业所关心的问题。其中&#xff0c;向各大媒体网站投稿&#xff0c;成为了一种常见的宣传方式。但是&#xff0c;如何投稿各大媒体网站&#xff1f;新闻媒体发文策略又有哪些呢&#xf…

论文研读 Disentangled Information Bottleneck

解耦信息瓶颈 摘要&#xff1a; 信息瓶颈方法是一种从源随机变量中提取与预测目标随机变量相关的信息的技术&#xff0c;通常通过优化平衡压缩和预测项的IB拉格朗日乘子f来实现&#xff0c;然而拉格朗日乘子很难优化&#xff0c;需要多次实验来调整拉格朗日乘子的值&#xff0c…