卡尔曼滤波MATLAB实现

卡尔曼滤波

卡尔曼滤波(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.

卡尔曼滤波MATLAB实现_第1张图片

你可能感兴趣的:(matlab,开发语言,算法)