粒子滤波的MATLAB实现
来源:互联网 发布:淘宝客推广流程 编辑:程序博客网 时间:2024/04/30 09:53
粒子滤波算法源于Montecarlo的思想,即以某事件出现的频率来指代该事件的概率。因此在滤波过程中,需要用到概率如P(x)的地方,一概对变量x采样,以大量采样的分布近似来表示P(x)。因此,采用此一思想,在滤波过程中粒子滤波可以处理任意形式的概率,而不像Kalman滤波只能处理高斯分布的概率问题。他的一大优势也在于此。
再来看对任意如下的状态方程:
x(t)为t时刻状态
y(t)=h(x(t),e(t))
其中的x(t)为t时刻状态,u(t)为控制量,w(t)
看看滤波的预估阶段:粒子滤波首先根据x(t-1)
进入校正阶段来:有了预测粒子,当然不是所有的预测粒子都能得到我们的时间观测值y,越是接近真实状态的粒子,当然获得越有可能获得观测值y。于是对所有的粒子得有个评价了,这个评价就是一个条件概率P(y|xi),直白的说,这个条件概率代表了假设真实状态x(t)取第i个粒子xi时获得观测y的概率。令这个条件概率为第i个粒子的权重。对所有粒子都进行这么一个评价,那么越有可能获得观测y的粒子,当然获得的权重越高。好了预测信息融合在粒子的分布中,观测信息又融合在了每一粒子的权重中。
最后采用重采样算法,去除低权值的粒子,复制高权值的粒子。所得当然是需要的真实状态x(t)了,而这些重采样后的粒子,就代表了真实状态的概率分布了。
下一轮滤波,再将重采样过后的粒子集输入到状态转移方程中,直接就能够获得预测粒子了。
初始状态的问题:可以认为x(0)在全状态空间内平均分布。于是初始采样就平均分布在整个状态空间中。然后将所有采样输入状态转移方程,得到预测粒子。再评价下所有预测粒子的权重,当然我们在整个状态空间中只有部分粒子能够获的高权值。重采样算法去除低权值的,将下一轮滤波的考虑重点缩小到高权值粒子附近。
下面是我最后改写和精简的一个粒子滤波Matlab算法
x = 0.1; % initial state
Q = 1;
R = 1;
tf = 50; % simulation length
N = 100; % number of particles in the particle filter
xhat = x;
P = 2;
xhatPart = x;
% Initialize the particle filter.
for i = 1 : N
end
xArr = [x];
xhatPartArr = [xhatPart];
close all;
for k = 1 : tf
xpartminus(i) = 0.5 * xpart(i) + 25 * xpart(i) / (1 + xpart(i)^2) + 8 * cos(1.2*(k-1)) + sqrt(Q) * randn;
xpart(i) = xpartminus(j);
end
t = 0 : tf;
figure;
plot(t, xArr, 'b.', t, xhatPartArr, 'g');
xlabel('time step'); ylabel('state');
legend('True state', 'Particle filter estimate');
参考网页:
http://blog.sina.com.cn/s/blog_400d94220101bkc1.html
- 粒子滤波的MATLAB实现
- 粒子滤波的原理和MATLAB实现
- 基于颜色直方图的粒子滤波目标跟踪MATLAB实现
- 粒子滤波(Particle filter)matlab实现
- 粒子滤波-opencv的实现
- 粒子滤波Matlab代码
- 粒子滤波(Particle filter)算法简介及MATLAB实现
- 基于粒子滤波的目标跟踪基本算法(Matlab)
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- 均值滤波、中值滤波的matlab实现
- matlab 实现的kalman滤波
- 自适应滤波的matlab实现
- 前端开发入门:框架篇-ExpressJS入门学习
- ioutils.ReadAll()会清空对应的reader
- 读取外部存储的文件数据
- C语言中#define的用法
- ios设计模式4-桥接模式
- 粒子滤波的MATLAB实现
- CoreData的NSManagedObjectContext创建
- Ubuntu 15.10安装ns2.35+nam
- 网络爬虫——爬百度贴吧
- 关系型数据库管理系统简介
- iOS——系统优化
- Hadoop Hive sql语法详解5--HiveQL与SQL区别?
- 读写内部存储的文件数据
- 对Spring 及SpringMVC的理解