✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。
更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)
粒子滤波定位算法是目前最精准定位可移动物体的位置,由于水域的流动,工业固体废物污染源很可能随着水流移动位置,基于粒子滤波算法将污染物定位分为预测、测量以及重新采样可大大提高定位准确率[10]。粒子滤波算法的定位过程首先根据水流速度以及前一时刻水域的污染浓度预测出目前水域污染浓度最高的区域,其次对每个可能为污染源的位置进行权重计算,最后将所有污染源权重进行筛选,剔除权值较小的污染源,留下权值最高的污染源,并重复训练直到获取唯一一个权值最高的污染源,即实现工业固体废物污染定位。
1 预测阶段
在此阶段中首先设置出所需粒子个数,并将所有粒子平分到受到污染的水域中,基于粒子滤波算法得出提议分布,当污染源在时间t-1中的定位是Xt-1(xt-1,yt-1,θt-1),则时间t的污染源定位是Xt(xt,yt,θt),污染源的运动速度即为水流速度,则工业固体废物污染源在时间t到t-1之间位置的变化表达式(5)为:
首先利用摄像机和激光扫描仪在水域污染浓度较高的区域进行扫描,假设摄像机以及激光扫描仪获取到的固体点特征角度表达式(6)为:
为将激光扫描仪角度数据与摄像机中的物体角度信息进行中和,需要对摄像机中的物体点角度数据进行旋转变换根据角度信息公式将两种设备之间的角度信息进行转换,且转换时必须满足误差正态分布,则转换表达式(7)为:
根据式(9)将两种设备的废物样本集成到提议分布内,进而使得提议分布函数更加集中,即样本范围更小,更容易对污染源进行定位,此时的提议分布函数表达式(9)为:
上式即为根据状态转移函数得出的粒子滤波状态提议分布。
2 测量阶段
在此阶段直接将激光扫描数据当成输入,进而获取工业固体废物的位置信息,则通过激光扫描仪位置转换生成设备与工业固体废物之间的几何关系表达式(10)为:
式中,xt代表设备的具体位置,θ代表设备扫描物体的角度,d代表设备与观测到的物体之间的直线距离,β代表物体的角度。
在激光数据中获取疑似为工业固体废物污染源的观测值,并对其中的各个粒子进行权重评价,其表达式(11)为:
根据粒子的权重判断粒子是否为真的工业固体废物。
3 重采样阶段
根据每个粒子的权重大小决定是否保留该粒子,设置一个可接受范围,判断粒子是否在此范围内,为保证粒子不变,复制权重较大的粒子填补空缺位置,重组粒子后将所有粒子输入状态转移函数内,并反复进行训练,保证最终污染源定位的准确性,实现工业固体废物污染源的定位。
%粒子滤波(定位运动轨迹)
%在二维空间,假设运动物体的一组(非线性)运动位置、速度、加速度数据,用粒子滤波方法进行处理
clc,clear,close all
%% 参数设置
N = 200; %粒子总数
Q = 5; %过程噪声(控制误差) 状态转移方程中使用
R = 5; %测量噪声 由真实位置叠加测量噪声得到测量位置
T = 10; %测量时间(总步数)
theta = pi/T; %旋转角度
distance = 80/T; %每次走的距离(步长)
WorldSize = 100; %世界大小
均值为0且距离大于0 因此权重随着距离增加沿高斯曲线右侧递减
w(i) = (1 / sqrt® / sqrt(2 * pi)) * exp(-(dist)^2 / 2 / R);
end
PCenter(:, 1) = sum(P, 2) / N;%t=1时刻(初始时刻)所有粒子的几何中心位置
% 初始状态(t=1)画图
err(1,1) = norm(X(:, 1) - PCenter(:, 1));%粒子群几何中心与系统真实状态的误差
err(2,1) = wgn(1, 1, 10log10®);
figure(1);
hold on
set(0,‘defaultfigurecolor’,‘w’)
plot(X(1, 1), X(2, 1), ‘r.’, ‘markersize’,30) %真实的初始状态位置(红点表示)
%grid on
axis([0 100 0 100]);
set(gca,‘XTick’,0:10:100) %改变x轴坐标间隔显示 这里间隔为10
set(gca,‘YTick’,0:10:100) %改变y轴坐标间隔显示 这里间隔为10
plot(P(1, 😃, P(2, 😃, ‘k.’, ‘markersize’,5); %各个粒子位置(N个黑点)
plot(PCenter(1, 1), PCenter(2, 1), ‘b.’, ‘markersize’,25); %所有粒子的中心位置(蓝点表示)
legend(‘真实位置’, ‘粒子群’, ‘粒子群的几何中心’);
title(‘初始状态’);
hold off
%% 开始运动
for k = 2 : T %从t=2到T
%模拟一个弧线运动的状态
X(:, k) = X(:, k-1) + distance * [(-cos(k * theta)); sin(k * theta)] + wgn(2, 1, 10log10(Q)); %状态方程
Z(:, k) = X(:, k) + wgn(2, 1, 10log10®); %观测方程(状态上叠加测量的高斯噪声)
%粒子滤波
%预测
for i = 1 : N
P(:, i) = P(:, i) + distance * [-cos(k * theta); sin(k * theta)] + wgn(2, 1, 10log10(Q));%粒子群带入状态方程
dist = norm(P(:, i)-Z(:, k)); %粒子群中各粒子 与 测量位置 的距离
w(i) = (1 / sqrt® / 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);%生成一个在[1(默认值),N]之间均匀分布的伪随机整数
while(wmax > w(index))
wmax = wmax - w(index);
index = index + 1;
if index > N
index = 1;
end
end
Pnext(:, i) = P(:, index); %得到新粒子放入临时集Pnext
end
P=Pnext;%用临时集Pnext更新粒子集P
PCenter(:, k) = sum(P, 2) / N; %重采样后所有粒子的中心位置
%计算误差
err(1,k) = norm(X(:, k) - PCenter(:, k)); %粒子几何中心与系统真实状态的误差
err(2,k) = norm(X(:, k) - Z(:, k));
%画图
figure(2);
set(0,‘defaultfigurecolor’,‘w’)
clf;%清空figure(2)中的图像 以便循环重新画
hold on
plot(X(1, k), X(2, k), ‘r.’, ‘markersize’,30); %系统状态位置
plot(P(1, 😃, P(2, 😃, ‘k.’, ‘markersize’,5); %各个粒子位置
plot(PCenter(1, k), PCenter(2, k), ‘b.’, ‘markersize’,25); %所有粒子的中心位置
axis([0 100 0 100]);
title(‘运动过程’);
legend(‘真实状态’, ‘粒子群’, ‘粒子群的几何中心’);
hold off
pause(0.1);%停0.1s开始下次迭代
end
%% 绘制轨迹
figure(3);
set(0,‘defaultfigurecolor’,‘w’)
plot(X(1,:), X(2,:), ‘r.-’, Z(1,:), Z(2,:), ‘g.-’, PCenter(1,:), PCenter(2,:), ‘b.-’);
axis([0 100 0 100]);
set(gca,‘XTick’,0:10:100) %改变x轴坐标间隔显示 这里间隔为10
set(gca,‘YTick’,0:10:100) %改变y轴坐标间隔显示 这里间隔为10
legend(‘真实轨迹’, ‘测量轨迹’, ‘粒子群几何中心轨迹’);
xlabel(‘横坐标 x’); ylabel(‘纵坐标 y’);
%% 绘制误差
figure(4);
set(0,‘defaultfigurecolor’,‘w’)
%set(gca,‘FontSize’,12);%设置图标字体大小
plot(err(1,:),‘b.-’);%err1为各时刻 真实位置与粒子群中心的几何距离
hold on
plot(err(2,:),‘r.-’);%err2为各时刻 真实位置与测量位置的几何距离
hold off
xlabel(‘步数 t’);
legend(‘粒子群误差’, ‘测量误差’);
title(‘真实位置与粒子群中心的集合距离’);
1 matlab版本
2014a
2 参考文献
[1] 高勇.粒子滤波算法的工业固体废物污染源定位方法研究[J].环境科学与管理. 2021,46(12)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合