✅作者简介：热爱科研的Matlab仿真开发者，修心和技术同步精进，matlab项目合作可私信。

🍎个人主页：Matlab科研工作室

🍊个人信条：格物致知。

## ⛄ 部分代码

function [stateEstimate, particles] = particleFilter(stateTransitionFcn, measurementLikelihoodFcn, ...

initialState, initialParticles, measurements, nParticles)

% 初始化

stateEstimate = initialState;

particles = initialParticles;

% 对于每一个测量值

for i = 1:size(measurements, 1)

% 预测阶段

for j = 1:nParticles

particles(j, :) = stateTransitionFcn(particles(j, :));

end

% 更新阶段

weights = zeros(nParticles, 1);

for j = 1:nParticles

weights(j) = measurementLikelihoodFcn(measurements(i, :), particles(j, :));

end

weights = weights ./ sum(weights);

% 重采样

indices = randsample(1:nParticles, nParticles, true, weights);

particles = particles(indices, :);

% 计算状态估计

stateEstimate(i, :) = mean(particles, 1);

end

end

## ⛄ 参考文献

[1] 郑伟滨.基于粒子滤波的目标跟踪算法研究及DirectShow实现[D].南京理工大学[2023-06-08].DOI:10.7666/d.y2061439.

[2] 毛鑫萍.基于粒子滤波的目标跟踪算法研究[D].浙江工业大学[2023-06-08].

[3] 杨玉林.基于卡尔曼滤波和粒子滤波的目标跟踪性能对比[J].佳木斯大学学报：自然科学版, 2021, 39(3):5.DOI:10.3969/j.issn.1008-1402.2021.03.018.