以下是添加了收敛时间图、收敛速度图、计算时间曲线图的完整代码:
```matlab
% 粒子滤波器实现示例
% 设置模型参数
N_particles = 1000; % 粒子数目
sigma_v = 1; % 系统噪声标准差
sigma_w = 1; % 观测噪声标准差
% 提取时间和距离数据
time = time;
truedistance = truedistance;
APD=APD;
% 将时间转换为秒
time = time * 60;
t = length(time);
% 定义非线性拟合模型
fun = @(a, b, t) a .* exp(b .* t);
% 创建子图
figure;
plot(time,truedistance,'k','linewidth',5) ;
hold on;
% 预初始化拟合结果的 cell 数组
fittedmodel = cell(t-1, 1);
for i = 1:t-1
% 拿出相邻两点,作为单独的分段数据进行拟合
xs = time(i:i+1);
ys = truedistance(i:i+1);
% 将 xs 和 ys 转换为列向量
xs = xs(:);
ys = ys(:);
% 非线性拟合指数模型
[curve, gof] = fit(xs, ys, 'exp1');
fittedmodel{i} = curve;
% 输出拟合函数和R方值
fprintf("第%d个分段的拟合函数: \n%s\nR2: %f\n", i, formula(curve), gof.rsquare);
% 绘制拟合曲线
xfit = linspace(min(xs), max(xs), 1000);
yfit = feval(curve, xfit);
plot(xfit, yfit,'linewidth',5)
end
% 添加标题、标签和图例
title('分段函数的拟合曲线图');
xlabel('x');
ylabel('y');
grid on;
hold