看到网上很多卡尔曼滤波的仿真代码,预测方程都不加过程噪声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))?为什么呢,很困惑?