【Sage Husa EKF例程】一维的非线性状态、一维非线性观测,Sage Husa自适应EKF例程|MATLAB|附下载链接

在这里插入图片描述

使用Sage Husa方法,给EKF添加未知Q和R情况下对QR的自适应,形成 自适应扩展卡尔曼滤波器(Adaptive EKF)。使用一维的状态量和观测量为基准,对比了滤波前、标准EKF和本文的的Sage Husa自适应EKF的误差。

例程介绍

使用Sage Husa方法,给EKF添加未知Q和R情况下对QR的自适应,在滤波迭代时,可以自动迭代、寻找最利于滤波结果的Q和R
程序结构如下:
在这里插入图片描述

运行结果

状态对比曲线:
在这里插入图片描述
误差对比曲线:
在这里插入图片描述
命令行输出的误差统计特性:
在这里插入图片描述

MATLAB源代码

部分代码如下:

% 一维非线性状态、非线性观测的Sage Husa自适应EKF例程
% 作者:matlabfilter
% 2025-09-28/Ver1

clear; %清空工作区变量
clc; %清空命令行内容
close all; %关闭所有窗口(主窗口除外)
rng(0); % 设置固定的随机数种子

%% initial
T = 1; %设置采样率
t = T:T:100; %构建时间序列,最后的100是序列总长度
Q_true = 0.1; w = sqrt(Q_true)*randn(size(Q_true,1),length(t)); %系统噪声
R_true = 1; v = sqrt(R_true)*randn(size(R_true,1),length(t)); %观测噪声
P = 1; %状态协方差
P_num = zeros(length(t),size(P,1),size(P,2)); %存放每次迭代的P
P_num(1,:,:) = P; %记录协方差

% Sage-Husa自适应滤波参数
Q = 0.5; %系统噪声协方差初始估计值
R = 0.5; %观测噪声协方差初始估计值
Q_num = zeros(1,length(t)); %存储Q的估计值
R_num = zeros(1,length(t)); %存储R的估计值
Q_num(1) = Q;
R_num(1) = R;

完整代码下载链接:
https://download.youkuaiyun.com/download/callmeup/92050531

或查看付费专栏,有多套完整代码:
https://blog.youkuaiyun.com/callmeup/article/details/152222679?spm=1011.2415.3001.5331

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MATLAB卡尔曼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值