M210210 2021-08-07 10:07 采纳率: 0%
浏览 253

卡尔曼滤波过程噪声是否应该添加?

看到网上很多卡尔曼滤波的仿真代码,预测方程都不加过程噪声w(k), 比如下面的代码 “Y(i+1)=AY(i)+BU(i)”就不加w(k),
但是“X(k+1)=AX(k)+BU(k)+w(k)”这句又加了w(k),很困惑:

clear;
clc;
%***离散线性时不变系统的状态空间模型为:
%***X(k+1)=A*X(k)+B*U(k)+w(k)
%***Z(k)=H*X(k)+v(k)
%% ***设定系统参数A,B,X(1),w(k),v(k)
N=10000;             %离散信号个数
A=[1];                  %状态转移矩阵
B=[0.001];           %输入矩阵
H=[1];                 %观测矩阵
w=randn(1,N);     %零均值、方差为Q的高斯分布输入白噪声信号
v=randn(1,N);        %零均值、方差为R的高斯分布观测白噪声信号
Q=std(w);            %Q是输入白噪声w(k)的方差
R=std(v);            %R是观测白噪声v(k)的方差
X(1)=25;             %系统初始值
X1(1)=25;            %系统初始值
%% ***根据初始值,产生带白噪声的真实的状态信号,进而产生带白噪声的观测信号
for k=1:1:N-1
    U(k)=sin(2*pi*k/(N-1));
    X(k+1)=A*X(k)+B*U(k)+w(k);
    X1(k+1)=A*X1(k)+B*U(k);
end;
Z=H*X+v;
%  卡尔曼滤波循环
Y(1)=20;P(1)=10;
for i=1:1:N-1
**    Y(i+1)=A*Y(i)+B*U(i);**
    P(i+1)=A*P(i)*A'+Q;
    Kg(i)=P(i+1)*H'*inv(H*P(i+1)*H'+R);
    Y(i+1)= Y(i+1)+Kg(i)*(Z(i)-H*Y(i+1));
    P(i+1)=P(i+1)-Kg(i)*H*P(i+1);
end;

可是推导公式里不是有过程噪声吗(比如下面图片的公式里的w(k-1))?为什么呢,很困惑?

img

  • 写回答

1条回答 默认 最新

  • CSDN专家-Matlab_Fans 2021-08-07 23:26
    关注

    X(k+1)=AX(k)+BU(k)+w(k)表示实际系统,实际系统在物理上是存在过程噪声的,所以要加w(k)。

    Y(i+1)=AY(i)+BU(i) 表示预测系统,Kalman滤波中假设w(k)零均值高斯噪声,预测是人为设定的数学模型,不是物理存在的,所以可以不加。

    评论

报告相同问题?

问题事件

  • 创建了问题 8月7日

悬赏问题

  • ¥15 软件工程用例图的建立(相关搜索:软件工程用例图|画图)
  • ¥15 如何在arcgis中导出拓扑关系表
  • ¥15 处理数据集文本挖掘代码
  • ¥15 matlab2017
  • ¥15 在vxWorks下TCP/IP编程,总是connect()报错,连接服务器失败: errno = 0x41
  • ¥15 AnolisOs7.9如何安装 Qt_5.14.2的运行库
  • ¥20 求:怎么实现qt与pcie通信
  • ¥50 前后端数据顺序不一致问题,如何解决?(相关搜索:数据结构)
  • ¥15 基于蒙特卡罗法的中介效应点估计代码
  • ¥15 罗技G293和UE5.3