欢迎来到本博客❤️❤️
博主优势:博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
本文目录如下:
目录
1 概述
2 运行结果
2.1 扩展卡尔曼滤波
2.2 线性卡尔曼滤波
2.3 粒子滤波
2.4 Σ点滤波器
3 参考文献
4 Matlab代码及详细讲解
在Σ点滤波器(也称为无迹滤波器)中,我们不用一大堆散射粒子来表示不确定性,而是假设不确定性具有高斯(正态)分布,并且以当前最佳估计值为中心:
因此,我们可以用协方差矩阵来表示不确定性,就像我们为上面的粒子计算的那样。我们将协方差可视化为围绕状态估计的椭圆,其中椭圆绘制在 3σ 边界处(因此,真实状态大约 99.7% 的时间在这个椭圆内)。绘制 1000 个粒子只是为了进行比较。
当各种不确定度源(先前的不确定度、过程噪声和测量噪声)是单峰且不相关的时,Σ点滤波器是一个强大的选择。一些优点:
不过,我们可以列出一些缺点。
部分代码:
%% Create the true system and show the initial filter state.
% Set the random number generator seed so the results are the same every
% time we run the script. (Comment out this line to see different results
% every time.)
rng(1);
% Initial true state, measurement noise covariance, and measurement
x0 = [0; 3; 1; 0];
R = 0.5^2 * eye(2);
z0 = x0(1:2) + covdraw(R);
% Initial state estimate and covariance
xh0 = [z0; 1; 0];
P0 = blkdiag(R, 2^2 * eye(2));
% Calculate the whole true trajectory.
[~, x, t] = propagate_ball(0, 10, x0);
% Prepare the figure.
set(clf(figure(1)), 'Color', [1 1 1]);
axis equal;
axis([-1 11 0 5]);
xlabel('x [m]');
ylabel('y [m]');
hold on;
% Draw the 3-sigma boundary for the uncertainty.
ell = ellipse(P0, xh0);
hP = plot(ell(1,:), ell(2,:), 'Color', 0.75 * [1 1 1]);
% Add particles for comparison only.
X = bsxfun(@plus, covdraw(P0, 1000), xh0);
hX = plot(X(1,:), X(2,:), '.', 'Color', 0.75 * [1 1 1]);
部分理论来源于网络,如有侵权请联系删除。
[1]柏庆文. 基于无味卡尔曼滤波的电动汽车动力电池SOC估计[D].吉林大学,2013.
[2]常国宾,许江宁,李安,常路宾.迭代无味卡尔曼滤波的目标跟踪算法[J].西安交通大学学报,2011,45(12):70-74.