% 提取时间和距离数据 time = time; truedistance = truedistance; APD=APD; % 将时间转换为秒 time = time * 60; t = length(time); % 定义非线性拟

动态 未结 0 120
小小草
小小草 LV1 2023年9月23日 23:40 发表
抱歉,之前的代码中有一个错误。在绘制粒子搜索历史图时,需要先定义 `particles_history` 变量并将每次更新时的粒子位置记录下来。以下是修正后的代码示例: ``` % 提取时间和距离数据 time = time; truedistance = truedistance; APD=APD; % 将时间转换为秒 time = time * 60; t = length(time); % 定义非线性拟合模型 fun = @(a, b, t) a .* exp(b .* t); % 创建子图 figure; plot(time,truedistance,'linewidth',8) ; 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',2) end % 添加标题、标签和图例 title('分段函数的拟合曲线图'); xlabel('x'); ylabel('y'); grid on; hold off; % 获取最终拟合结果的系数 a 和 b a = curve.a; b = curve.b; fprintf("a = %.8f, b = %.8f\n", a, b
收藏(0)  分享
相关标签: 智能问答
问题没解决?让AI助手帮你作答 AI助手
0个回复
  • 消灭零回复