粒子滤波算法源于蒙特卡洛思想,即以某事件出现的频率来指代该事件的概率。在粒子滤波过程中,X(t)实际上是通过对大量粒子的状态进行处理得到的。

粒子滤波的5个步骤:

1)初始状态:用大量粒子模拟X(t),粒子在空间内均匀分布;

2)预测阶段:根据状态转移方程,每一个粒子得到一个预测粒子;

3)校正阶段:对预测粒子进行评价,越接近于真实状态的粒子,其权重越大;

4)重采样:根据粒子权重对粒子进行筛选,筛选过程中,既要大量保留权重大的粒子,又要有一小部分权重小的粒子;

5)滤波:将重采样后的粒子带入状态转移方程得到新的预测粒子,即步骤2。

%在二维空间,假设运动物体的一组(非线性)运动位置、速度、加速度数据,用粒子滤波方法进行处理

%实验室的博客

% 参数设置

N = 100; %粒子总数

Q =

5; %过程噪声

R =

5; %测量噪声

T =

10; %测量时间

theta =

pi/T; %旋转角度

distance =

80/T; %每次走的距离

WorldSize =

100; %世界大小

X = zeros(2,

T); %存储系统状态

Z = zeros(2,

T); %存储系统的观测状态

P = zeros(2,

N); %建立粒子群

PCenter = zeros(2, T); %所有粒子的中心位置

w = zeros(N,

1); %每个粒子的权重

err =

zeros(1,T); %误差

X(:, 1) = [50;

20]; %初始系统状态

Z(:, 1) = [50; 20] + wgn(2, 1,

10*log10(R)); %初始系统的观测状态

%初始化粒子群

for i = 1 : N

P(:, i) =

[WorldSize*rand; WorldSize*rand];

dist =

norm(P(:, i)-Z(:,

1)); %与测量位置相差的距离

w(i) = (1 /

sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 /

R); %求权重

end

PCenter(:, 1) = sum(P, 2) /

N; %所有粒子的几何中心位置

%%

err(1) = norm(X(:, 1) - PCenter(:,

1)); %粒子几何中心与系统真实状态的误差

figure(1);

set(gca,'FontSize',12);

hold on

plot(X(1, 1), X(2, 1), 'r.',

'markersize',30) %系统状态位置

axis([0 100 0 100]);

plot(P(1, :), P(2, :), 'k.',

'markersize',5); %各个粒子位置

plot(PCenter(1, 1), PCenter(2, 1), 'b.', 'markersize',25);

%所有粒子的中心位置

legend('True State', 'Particles', 'The Center of Particles');

title('Initial State');

hold off

%%

%开始运动

for k = 2 : T

%模拟一个弧线运动的状态

X(:, k) =

X(:, k-1) + distance * [(-cos(k * theta)); sin(k * theta)] + wgn(2,

1,

10*log10(Q)); %状态方程

Z(:, k) =

X(:, k) + wgn(2, 1,

10*log10(R)); %观测方程 %粒子滤波

%预测

for i = 1 :

N

P(:, i) = P(:, i) + distance * [-cos(k * theta); sin(k * theta)] +

wgn(2, 1, 10*log10(Q));

dist = norm(P(:, i)-Z(:,

k)); %与测量位置相差的距离

w(i) = (1 / sqrt(R) / sqrt(2 * pi)) * exp(-(dist)^2 / 2 /

R); %求权重

end

%归一化权重

wsum =

sum(w);

for i = 1 :

N

w(i) = w(i) / wsum;

end

%重采样(更新)

for i = 1 :

N

wmax = 2 * max(w) * rand; %另一种重采样规则

index = randi(N, 1);

while(wmax > w(index))

wmax = wmax - w(index);

index = index + 1;

if index > N

index = 1;

end end

P(:, i) = P(:,

index); %得到新粒子

end

PCenter(:,

k) = sum(P, 2) /

N; %所有粒子的中心位置

%计算误差

err(k) =

norm(X(:, k) - PCenter(:,

k)); %粒子几何中心与系统真实状态的误差

figure(2);

set(gca,'FontSize',12);

clf;

hold

on

plot(X(1,

k), X(2, k), 'r.', 'markersize',50); %系统状态位置

axis([0 100

0 100]);

plot(P(1,

:), P(2, :), 'k.',

'markersize',5); %各个粒子位置

plot(PCenter(1, k), PCenter(2, k), 'b.', 'markersize',25);

%所有粒子的中心位置

legend('True

State', 'Particle', 'The Center of Particles');

hold

off

pause(0.1);

end

%%

figure(3);

set(gca,'FontSize',12);

plot(X(1,:), X(2,:), 'r', Z(1,:), Z(2,:), 'g', PCenter(1,:),

PCenter(2,:), 'b-');

axis([0 100 0 100]);

legend('True State', 'Measurement', 'Particle Filter');

xlabel('x', 'FontSize', 20); ylabel('y', 'FontSize', 20);

%%

figure(4);

set(gca,'FontSize',12);

plot(err,'.-');

xlabel('t', 'FontSize', 20);

title('The err');

如果你有所收获,欢迎用微信扫一扫进行打赏,赏金随意。

粒子滤波matlab示例,[转载]粒子滤波Matlab示例相关推荐

  1. c 使用matlab引擎,[转载]C与MATLAB混合编程之调用MATLAB引擎

    Visual Studio调用MATLAB需要的配置已经在<Visual Studio调用MATLAB的配置>一文中给出了详细的步骤,本文将介绍混合编程的示例. 在C中调用MATLAB,据 ...

  2. 【PF三维路径规划】基于matlab改进的粒子滤波无人机三维路径规划【含Matlab源码 1269期】

    ⛄一.无人机简介 0 引言 随着现代技术的发展,飞行器种类不断变多,应用也日趋专一化.完善化,如专门用作植保的大疆PS-X625无人机,用作街景拍摄与监控巡察的宝鸡行翼航空科技的X8无人机,以及用作水 ...

  3. 【目标定位】基于matlab粒子滤波的定位算法【含Matlab源码 2161期】

    一.基于粒子滤波污染源定位简介 粒子滤波定位算法是目前最精准定位可移动物体的位置,由于水域的流动,工业固体废物污染源很可能随着水流移动位置,基于粒子滤波算法将污染物定位分为预测.测量以及重新采样可大大 ...

  4. 蒙特卡洛粒子滤波定位算法_粒子滤波——来自哈佛的详细的粒子滤波器教程【1】...

    本文原版链接:https://www.seas.harvard.edu/courses/cs281/papers/doucet-johansen.pdf 本文是哈佛大学相关研究人员于2008年发表的一 ...

  5. matlab图像处理-中值滤波原理

    中值滤波原理   中值滤波本质上是一种统计排序滤波器.对于原图像中某点(i,j),中值滤波以该点为中心的邻域内的所有像素的统计排序中值作为(i,j)点的响应.   中值不同于均值,是指排序队列中位于中 ...

  6. 2021-01-28 粒子群优化算法-Python版本和Matlab函数 particleswarm 调用

    粒子群优化算法-Python版本和Matlab函数 particleswarm 调用 前两天分享了粒子群优化算法的原理和Matlab原理实现,本文分享一下Python代码下的PSO实现以及Matlab ...

  7. matlab实现频域率滤波,基于Matlab的图像的频域滤波实现及研究.doc

    摘要:图像的频域滤波是图像增强的一种方法.图像增强是图像处理的方法之一,有频率域法和空间域法.频率域法把图像看成一种二维信号,对其进行二维傅里叶变换的信号增强,采用低通滤波法可以去掉图像的噪声:采用高 ...

  8. matlab中基于十字形窗口的滤波算法,#215;字形滤波窗口在Matlab自适应中值滤波算法中的应用 - 21ic中国电子网...

    由于种种原因,图像在生成.传输.变换等过程中往往会受到各种噪声的污染,从而导致图像质量退化.噪声信号的滤波是图像处理的基本任务之一,主要有线性滤波和非线性滤波两种方法.线性滤波方法一般具有低通特性,而 ...

  9. 图像相减的matlab仿真及光栅滤波法,图像相减的MATLAB 仿真及光栅滤波法实验实现...

    图像相减的MATLAB 仿真及光栅滤波法实验实现 毕业设计(论文)中期报告题目图像相减的MATLAB仿真及光栅滤波法实验实现院(系)光电学院专业光信息科学与技术班级090106姓名陈凤学号090106 ...

  10. matlab fbp fan arc,滤波反投影重建算法(FBP)实现及应用(matlab)

    滤波反投影重建算法实现及应用(matlab) 1. 滤波反投影重建算法原理 滤波反投影重建算法常用在CT成像重建中,背后的数学原理是傅立叶变换:对投影的一维傅立叶变换等效于对原图像进行二维的傅立叶变换 ...

最新文章

  1. php变量与数据类型,php中变量与数据类型讲解
  2. poj 3352 双连通分量
  3. java 代码 内存泄露_如何用Java编写一段代码引发内存泄露
  4. vue实现原理解析及一步步实现vue框架
  5. java学习(25):三目运算符
  6. ROS中自定义复杂数据类型
  7. Unreal Engine 4 —— Ghost Mesh Plugin的开发日志
  8. 字符串正反连接java_字符串正反连接(Java实现,超简单)
  9. c语言的课本答案,c语言课本试题答案
  10. Arquillian和Jboss的版本问题
  11. Spring Cloud(7.2):配置Producer Server
  12. MapGuide应用最佳实践—MapGuide Server和MapGuide WebExtension分开部署
  13. 人工智能基础——2.3.2产生式系统
  14. 掌勤综合劳务管理系统
  15. 敬业签Windows电脑桌面云便签提醒预设配置使用方法
  16. 怎么安装消息队列服务器,安装和配置消息队列(针对存档服务器)
  17. Flutter入门系列-Flutter读取assets文件并写入应用程序路径
  18. 滴滴开源 LogicFlow:专注流程可视化的前端框架
  19. html5手机号码数据类型,报手机号码的四种格式,你是哪种性格?
  20. 想给用户天涯若比邻的体验?业务全球化面临的三重挑战

热门文章

  1. itext tif图片转为pdf
  2. 欧姆龙PLC CP1H与变频器通信要点总结
  3. LTE学习笔记--LTE整体架构和协议架构概述
  4. 信息系统项目管理师(2022年) —— 第 1 章 信息化和信息系统
  5. WordPress主题 Modown V3.0+Erphpdown9.7.1虚拟素材资源付费下载响应式主题网站模板
  6. MATLAB利用ode求解二阶微分方程
  7. pdf页面倒序如何调整?
  8. List集合去重的常见几种方式
  9. Unity下载package到本地,Unity高版本如何安装Packager到本地,UnityPackageManager下载包到本地的保存路径
  10. Java基本数据类型取值范围