卡尔曼滤波
卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
卡尔曼滤波的一个典型实例是从一组有限的,对物体位置的,包含噪声的观察序列中预测出物体的坐标位置及速度。
使用MATLAB命令设计一个稳态滤波器。然后,您对系统进行仿真,以展示它如何减少测量噪声造成的误差。
设计滤波器
可以使用该函数来设计此稳态卡尔曼滤波器。此函数根据您提供的过程噪声协方差Q和传感器噪声协方差R确定特定对象的最佳稳态滤波器增益M。控制对象的状态空间矩阵使用以下值。kalman
A = [1.1269 -0.4940 0.1129
1.0000 0 0
0 1.0000 0];
B = [-0.3832
0.5919
0.5191];
C = [1 0 0];
D = 0;
要设计此过滤器,首先创建带有 的输入的对象模型w
。将采样时间设置为-1,
以将对象标记为离散的(没有特定的采样时间)。
Ts = -1;
sys = ss(A,[BB],C,D,Ts, 'InputName' ,{ 'u' 'w' }, 'OutputName' , 'y' ); % 工厂动态和附加输入噪声 w
过程噪声协方差Q
和传感器噪声协方差R
是大于零的值,通常从系统的研究或测量中获得。
Q = 2.3;
R = 1;
使用该命令设计过滤器。kalman
[kalmf,L,~,Mx,Z] =kalman(sys,Q,R);
此命令设计卡尔曼滤波器 ,kalmf
一个状态空间模型,实现时间更新和测量更新方程。滤波器输入是工厂输入u和噪声对象输出y。的第一个输出kalmf
是估计和的真实对象输出,其余输出是状态估计ˆX.