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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值