Sage-Husa自适应滤波

本文介绍了一种改进的卡尔曼滤波算法——Sage-Husa自适应滤波器,该滤波器能够实时估计和修正系统噪声和观测噪声的统计特性,以降低系统模型误差并提高滤波精度。文章详细介绍了Sage-Husa滤波器的计算步骤,并给出了一个基于极大似然准则的自适应滤波方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Sage-Husa自适应卡尔曼滤波

Sage-Husa 自适应滤波是在利用观测数据递推滤波时,实时估计和修正系统噪声和观测噪声的统计特性,从而降低系统模型误差,提高滤波精度。

首先列出系统方程如下

xk=Axk−1+Buk+Cwkx_{k}=Ax_{k-1}+ B u_{k}+ C w_{k}xk=Axk1+Buk+Cwk

yk=Hxk+vky_{k}=H x_{k}+v_{k}yk=Hxk+vk

其中, xk,yk,ukx_{k},y_{k},u_{k}xk,yk,uk 分别表示状态量,输出量,输入量。 wk,vkw_{k},v_{k}wk,vk 为噪声

E[wk]=qkE\left[ w_{k} \right]=q_{k}E[wk]=qk

E[wkwjT]=QkδkjE\left[ w_{k} w _{j}^{T}\right]=Q_{k}\delta_ {kj}E[wkwjT]=Qkδkj

E[vk]=rkE\left[ v_{k} \right]=r_{k}E[vk]=rk

E[vkvjT]=RkδkjE\left[ v_{k} v _{j}^{T}\right]=R_{k}\delta_ {kj}E[vkvjT]=Rkδkj

E[wkvjT]=0E\left[ w_{k} v _{j}^{T}\right]=0E[wkvjT]=0

Qk,Rk,qk,rkQ_{k},R_{k},q_{k},r_{k}Qk,Rk,qk,rk 将在后续进行更新,这也是区别于卡尔曼滤波的最主要的地方。

那么,Sage-Husa滤波器的公式如下。

1)计算一步预测方程

x^k,k−1=Ax^k−1+Buk−1+Cq^k−1\hat{x}_{k,k-1}=A \hat{x}_{k-1}+ B u_{k-1}+ C \hat{q}_{k-1}x^k,k1=Ax^k1+Buk1+Cq^k1

这里的 x^k,k−1,q^k−1\hat{x}_{k,k-1},\hat{q}_{k-1}x^k,k1,q^k1 的上标表示为估计值。卡尔曼滤波器的对应公式为,即 qqq为0。

x^k,k−1=Ax^k−1+Buk−1\hat{x}_{k,k-1}=A \hat{x}_{k-1}+ B u_{k-1}x^k,k1=Ax^k1+Buk1

2)一步预测均方误差方程

Pk,k−1=APk−1AT+CQ^k−1CTP_{k,k-1}=A P_{k-1} A^{T}+ C \hat{Q}_{k-1} C^{T}Pk,k1=APk1AT+CQ^k1CT

卡尔曼滤波器的对应公式为,也就是 QQQ 为常数

Pk,k−1=APk−1AT+CQCTP_{k,k-1}=A P_{k-1} A^{T}+ CQ C^{T}Pk,k1=APk1AT+CQCT

3)更新滤波增益方程

Kk=Pk,k−1HT[HPk,k−1HT+R^k−1]−1K_{k}=P_{k,k-1} H^{T}\left[ H P_{k,k-1} H^{T} +\hat{R}_{k-1}\right]^{-1}Kk=Pk,k1HT[HPk,k1HT+R^k1]1

卡尔曼滤波器的对应公式为,也就是 RRR 常数

Kk=Pk,k−1HT[HPk,k−1HT+R]−1K_{k}=P_{k,k-1} H^{T}\left[ H P_{k,k-1} H^{T} +R\right]^{-1}Kk=Pk,k1HT[HPk,k1HT+R]1

4)计算残差

εk=yk−Hx^k,k−1−r^k−1\varepsilon_{k}=y_{k}-H\hat{x}_{k,k-1}-\hat{r}_{k-1}εk=ykHx^k,k1r^k1

卡尔曼滤波器的对应公式为,也就是 rrr 为0

εk=yk−Hx^k,k−1\varepsilon_{k}=y_{k}-H\hat{x}_{k,k-1}εk=ykHx^k,k1

5)k时刻的状态估计

x^k=x^k,k−1+Kkεk\hat{x}_{k}=\hat{x}_{k,k-1}+K_{k}\varepsilon_{k}x^k=x^k,k1+Kkεk

卡尔曼滤波器的对应公式是一样的。

6)k时刻的均方误差方程

Pk=[I−KkH]Pk,k−1P_{k}=\left[ I-K_{k} H \right]P_{k,k-1}Pk=[IKkH]Pk,k1

卡尔曼滤波器的对应公式是一样的。

接下来开始更新 q^k,Q^k,r^k,R^k\hat{q}_{k},\hat{Q}_{k},\hat{r}_{k},\hat{R}_{k}q^k,Q^k,r^k,R^k以下部分卡尔曼滤波器是没有的。

7)计算加权系数

dk=1−b1−bk+1,0<b<1d_{k}=\frac{1-b}{1-b^{k+1}},0<b<1dk=1bk+11b,0<b<1

在这里插入图片描述

从中以及下面的公式可知,随着时间的推移, 1−dk1-d_{k}1dk 趋近于 bbb

还有一种加权系数形式为dk=1kd_{k}=\frac{1}{k}dk=k1

在这里插入图片描述

从中以及下面的公式可知,随着时间的推移, 1−dk1-d_{k}1dk 趋近于1。如果令 dk=0d_{k} =0dk=0 ,则还原为普通卡尔曼滤波器了,也就是说采用这种形式的 dkd_{k}dk,随着时间的推移,还原为普通卡尔曼滤波器了。

8)更新 q^k,Q^k,r^k,R^k\hat{q}_{k},\hat{Q}_{k},\hat{r}_{k},\hat{R}_{k}q^k,Q^k,r^k,R^k

q^k=(1−dk−1)q^k−1+dk−1(x^k−Ax^k−1)\hat{q}_{k}=\left( 1-d_{k-1}\right)\hat{q}_{k-1}+d_{k-1} \left( \hat{x}_{k} -A \hat{x}_{k-1}\right)q^k=(1dk1)q^k1+dk1(x^kAx^k1)

Q^k=(1−dk−1)Q^k−1+dk−1(KkεkεkTKkT+Pk−APk−1AT)\hat{Q}_{k}=\left( 1-d_{k-1} \right)\hat{Q}_{k-1}+d_{k-1}\left( K_{k}\varepsilon_{k} \varepsilon_{k} ^{T}K_{k}^{T}+P_k-AP_{k-1}A^{T}\right)Q^k=(1dk1)Q^k1+dk1(KkεkεkTKkT+PkAPk1AT)

r^k=(1−dk−1)r^k−1+dk−1(yk−Hx^k,k−1)\hat{r}_{k}=\left( 1-d_{k-1} \right)\hat{r}_{k-1}+d_{k-1} \left( y_{k}- H\hat{x}_{k,k-1} \right)r^k=(1dk1)r^k1+dk1(ykHx^k,k1)

R^k=(1−dk−1)R^k−1+dk−1(εkεkT−HPk,k−1HT)\hat{R}_{k}=\left( 1-d_{k-1} \right)\hat{R}_{k-1}+d_{k-1}\left( \varepsilon_{k} \varepsilon_{k} ^{T}-HP_{k,k-1}H^{T} \right)R^k=(1dk1)R^k1+dk1(εkεkTHPk,k1HT)

如果系统维数较高,而 Sage-Husa自适应滤波算法中增加对系统噪声统计特性的计算,计算量将增加,实时性将难以保证。此外,对于阶次较高的系统,算法中R和Q的在线估计有时会由于计算发散失去半正定性和正定性而出现滤波发散现象,此时滤波算法的稳定性和收敛性不能完全保证。

代码如下,供大家参考。

clc
clear
a=randn(1,5000)*sqrt(0.1);
y=zeros(1,5000);
y(1)=a(1);
y(2)=a(2)-0.575*a(1);
for k=3:5000
y(k)=0.0673*y(k-1)+0.1553*y(k-2)+a(k)-0.575*a(k-1);
end
y = y+sqrt(0.05)*randn(1,length(y));
figure(1)
subplot(2,1,1)
plot(a),title('a');
subplot(2,1,2)
plot(y),title('y');
b=0;
% inlitial Kalman Filter
F = [0.0673 0.1553; 1 0];
G = [1 -0.575 ; 0 0];
H = [1 0];
s=1*eye(2);
Q0=diag([0.1,0.1]);
R0 = 0.5;
P0=eye(2)*10000;
X0=[0;0];
[X,e,P]=Sage_HusaKF(F,G,H,Q0,R0,X0,y,P0,b,s);
% [X,e,P]=StdKF2(F,G,H,Q0,R0,X0,y,P0);
% plot kalman
figure(2)
t=1:length(X);
subplot(2,1,1)
plot(t,X(1,:));%yk
subplot(2,1,2)
plot(t,X(2,:));%yk-1
figure(3)
plot(t,y);
hold on
plot(t,y,'r',t,X(1,:),'b');
hold off

%% 
function [X,e,P]=Sage_HusaKF(F,G,H,Q0,R0,X0,Z,P0,b,s);
% X   是指得到的k状态下的最优的估算值
% e   残差epsilon(k)
% P   是指更新的k状态下X对应的协方差

% F   系统参数,对于多模型系统,它们为矩阵
% G   系统参数,对于多模型系统,它们为矩阵
% H   表示协方差的转换系数
% Q0  表示系统过程的协方差初值
% R0  表示某种不确定性(传感器噪声)的协方差初值
% X0  是最优的估算值初值  
% Z   表示k 时刻状态下的观测值。
% P0  是X对应的协方差初值
% b   sage-Husa更新时用到,未用到默认
% s   2*2的单位矩阵,初值

% Sage-Husa adeptive KF

N=length(Z);
M=length(X0);
X=zeros(M,N);
X(:,1)=X0;
s=1*eye(2);
P=P0;
q0 = zeros(M,1);
r0 = 0;
q = q0;
r = r0;
Q = Q0;
R = R0;
for k=2:N
    X_est=F*X(:,k-1)+q;                  %计算一步预测估计:X(k/k-1)
    P_pre=F*P*F'+G*Q*G';               %一步预测估计的均方误差P(k/k-1)
    e(:,k)=Z(:,k)-H*X_est-r;           %计算残差epsilon(k)
    K=P_pre*H'*inv((H*P_pre*H')+R);    %k时刻的增益阵
    X(:,k)=X_est+K*e(:,k);           %k时刻的状态估计X(k)
    P = (eye(M)-K*H)*P_pre;%*(eye(M)-K*H)'+K*R*K';  %均方误差矩阵P(k)
    
% %     sage-Husa更新Q,R,q,r
%     d = (1-b)/(1-b^(k));
%     r = (1-d)*r +d*(Z(:,k)-H*X_est);
%     q = (1-d)*q +d*(X(:,k)-F*X(:,k-1));
%     R = (1-d)*R +d*(Z(:,k)*Z(:,k)'-H*P*H');
%     Q = (1-d)*Q +d*(K*e(:,k)*e(:,k)'*K'+P-F*P*F');
%    
      r = 1/k*((k-1)*r +Z(:,k)-H*X_est);
    
      q = 1/k*((k-1)*q+X(:,k)-F*X(:,k-1));
    
      R = 1/k*((k-1)*R+Z(:,k)*Z(:,k)'-H*P*H');
     
      Q = 1/k*((k-1)*Q+K*e(:,k)*e(:,k)'*K'+P-F*P*F');
%     
end
end

基于极大似然准则的自适应滤波

基于极大似然准则的自适应滤波,通过系统状态方差阵和量测噪声方差阵 实时估计系统噪声统计特性的变化,以保证滤波器更好地适应这种变化。极大似然估计从系统观测值出现概率最大的角度估计,其特点是不仅考虑新息的变化,而且考虑新息协方差矩阵的变化。
R^k=Cvk−HPk,k−1HT\hat{R}_k={C}_{vk}-HP_{k,k-1}H^TR^k=CvkHPk,k1HT
Q^k=1N∑i=k−N+1kΔxiΔxiT+Pk−ATPk−1A\hat{Q}_k=\frac{1}{N}\sum_{i=k-N+1}^k{\Delta x_i\Delta x_{i}^{T}}+P_k-A^TP_{k-1}AQ^k=N1i=kN+1kΔxiΔxiT+PkATPk1A
Δxk=x^k−x^k,k−1=Kkvk\Delta x_k=\hat{x}_k-\hat{x}_{k,k-1}=K_kv_kΔxk=x^kx^k,k1=Kkvk
Cvk=1N∑i=k−N+1kviviTC_{vk}=\frac{1}{N}\sum_{i=k-N+1}^k{v_iv_{i}^{T}}Cvk=N1i=kN+1kviviT
式中​ vk=yk−y^k,k−1v_k=y_k-\hat{y}_{k,k-1}vk=yky^k,k1NNN 为平滑窗口宽度。

IEEE Trans期刊是一系列由IEEE(国际电气和电子工程师协会)出版的高水平学术期刊。这些期刊涵盖了广泛的领域,包括电子工程、计算机科学、通信技术、能源、医疗电子学等。IEEE Trans期刊以其高质量的学术论文和对技术创新的贡献而闻名于世。 IEEE Trans期刊的整理工作主要包括以下几个方面: 1. 投稿管理:IEEE Trans期刊采用严格的投稿和审稿流程,确保论文的质量和学术准确性。整理工作涉及处理来自作者的投稿、跟踪论文评审过程、协调作者和审稿人之间的沟通等。 2. 技术领域分类:由于IEEE Trans期刊涵盖了多个领域,整理工作需要将每篇论文根据其内容和主题进行分类,以便读者能够快速找到感兴趣的文章。 3. 版面设计和排版:整理工作还包括对论文进行版面设计和排版,以确保文章的可读性和美观度。这包括选择适当的字体、字号、标题样式等,使文章整体风格一致。 4. 数据库和索引管理:IEEE Trans期刊被许多学术数据库收录,并且出版的论文需要被索引。整理工作涉及将论文信息添加到数据库,并进行索引和关键词标注,以便读者可以通过关键词搜索到相关的文章。 5. 出版物发行和管理:整理工作还包括出版物发行和管理,包括文章的印刷和交付、电子版的制作和发布、订阅管理等。 总的来说,IEEE Trans期刊的整理工作需要对学术论文进行管理、分类、设计和发行等多个方面的工作,以确保期刊的质量和影响力。这些工作共同促进了学术交流和技术进步。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值