首页 > 编程知识 正文

详解卡尔曼滤波原理,卡尔曼滤波和贝叶斯滤波关系

时间:2023-05-03 16:34:39 阅读:153977 作者:235

这两天,我学习了卡尔曼滤波算法。 与其他滤波算法相比,卡尔曼滤波对计算量的需求非常低,同时能获得相当好的滤波结果。

1 .算法原理查看网上文章http://www.BZ arg.com/p/how-a-Kalman-filter-works-in-pictures/calman滤波器的充分图片链接: 3359

卡尔曼滤波实质上是基于观测值和估计值两者的数据来估计真值的过程。 预测步骤如图1所示:

图1卡尔曼滤波器的原理流程图

假设我们能够得到被测量物体的位置和速度的测量值,有前一时刻的最佳估计值和知道其协方差矩阵的条件(初始值可以自由取,但协方差矩阵必须是非0矩阵)。

(1) ) ) )。

而此时,

(2) ) ) )。

如果追加加速度等控制量,则此时、此时:

(3) ) )。

同时,我们认为我们对系统的估计不完全准确。 例如运动物体突然滑动等,存在协方差的噪声干扰。 因此,有必要对加入系统噪声保证描述的完整性。 综上所述,预测步骤的表述如下。

(4) ) )。

(5) ) )。

由于误差的累积,单纯估计系统时,估计值会越来越偏离,因此用传感器的观测数据修正估计值。 可以使用与预测步骤相同的方法将估计空间映射到观测空间。 请参阅以下表达式:

(6) ) )。

(7) ) )。

假设观测值为。 另外,由于观测数据中也存在噪声干扰的问题,例如传感器噪声等,因此用协方差来表示该噪声的分布。 此时,观测值和推测值处于同一状态空间,但如图2所示具有不同的概率分布。

图2估计值和观测值概率分布示意图

这两个概率分布重叠的部分接近系统的真实数据,即被认为具有较高的可靠性。 例如,汽车速度估计为5~10km/h,传感器的反馈速度估计为8~12km/h,但有理由认为汽车的实际速度接近8~10km/h的区间。

现将观测值和估计值两个分布的黄鳝小笼包分布相乘,结果黄鳝小笼包分布综述如下。

(8) )。

(9) ) )。

(十) )。

式中:描述黄鳝小笼包分布的协方差,表示黄鳝小笼包分布的均值,矩阵称为卡尔曼增益矩阵。

在中将估计和观测值从公式(8)代入公式(8)中,可以获得以下内容:

(11 ) )。

le="text-align:center;">                                              (12)

               (13)

式中,称为卡尔曼增益。

将式(11)至式(13)中约去,并化简可得:

                                                     (14)

                                                         (15)

                                                                  (16)

即为我们所得到的最优估计值,同时为其对应的协方差矩阵。在实际应用中,只需要使用式(4)、式(5)以及式(14)至式(16)这5个方程即可实现完整的卡尔曼滤波过程。

在对单一信号源滤波的场合,由于测量值与估计值具备几乎完全相同的概率分布,为了更好的实现去噪效果,在假定被测对象变化不显著的情况下,可以将之前(1~N)个时间节点的测量值随机作为当前时间节点的测量值,以实现更好的去噪效果。原则上,N取值越大滤波效果越好,但也会导致滤波结果滞后越严重。

2. 算法实现 function output = kalmanFilter(data, Q, R, N) if ~exist('Q', 'var') Q = 0.01;endif ~exist('R', 'var') R = 1;endif ~exist('N', 'var') N = 0;end X = 0;P = 1;A = 1;H = 1; output = zeros(size(data)); for ii = N + 1 : length(data) X_k = A * X; P_k = A * P * A' + Q; Kg = P_k * H' / (H * P_k * H' + R); z_k = data(ii - round(rand() * N)); X = X_k + Kg * (z_k - H * X_k); P = (1 - Kg*H) * P_k; output(ii) = X;end end

 

3. 算法分析

采用经典卡尔曼滤波对虚拟信号及真实信号进行滤波,结果如下图所示:

 

图3 经典卡尔曼滤波对虚拟信号滤波结果

 

图4 经典卡尔曼滤波对真实信号滤波结果

 

从滤波结果中可以看出,经典卡尔曼对信号的滤波效果较为优秀,实时性相对较好,计算量需求极小,能够有效去除鳗鱼小笼包噪声以及非鳗鱼小笼包噪声,基本不受脉冲信号影响。在对被测系统的建模较为精确的条件下,其性能还能够进一步提升。其缺点主要在于需人为给定系统模型,当系统模型不精确时滤波效果会有所下降,但可以通过增加采样频率解决此问题。

建议应用场合:输入信号相对平稳或已知被测系统运动学模型,同时要求运算量极小的场合。

转载于:https://www.cnblogs.com/polaris-shi/p/9562874.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。