如何在MATLAB中调用前置作业数据并按指定要求完成拟合绘图?
解决方案
问题分析
原代码存在几个影响绘图效果的问题:
fplot(coef, '-.')用法错误,fplot无法直接识别多项式系数数组,需结合polyval构造可调用的函数- 手动拼接的字符串方程
eqFit传递给fplot易出现语法问题,且完全没必要这么做 - x轴范围未绑定到实际平均值的数量,无法保证范围准确
修正后的代码
% 获取实际平均值的数量,作为x轴的上限 n_avg = length(theAverage); % 基于1到n_avg的x值做7阶多项式拟合 coef = polyfit(1:n_avg, theAverage, 7); % 构造拟合函数的匿名函数,用于fplot调用 fit_func = @(x) polyval(coef, x); warning off hold on % 绘制拟合曲线,指定x范围为1到平均值数量 fplot(fit_func, [1, n_avg], '-.', 'DisplayName', '拟合方程'); % 绘制原始平均值数据(用散点更清晰体现原始数据) plot(1:n_avg, theAverage, 'o', 'DisplayName', '原始平均值'); title('拟合方程与原始平均值数据对比图'); grid on xlabel('样本序号'); % 可根据实际业务场景修改标签内容 ylabel('平均值'); % 可根据实际业务场景修改标签内容 legend('Location', 'best'); % 强制锁定x轴范围为1到平均值的数量 xlim([1, n_avg]); hold off warning on % 建议恢复警告,便于后续代码调试
关键修改说明
- 用
n_avg = length(theAverage)精准获取平均值的数量,确保x轴范围完全匹配数据量 - 用
@(x) polyval(coef, x)构造拟合函数,替代原代码中错误的系数直接传递和字符串方程用法 - 改用
plot绘制原始平均值散点,比字符串形式的fplot更直观准确 - 显式设置
xlim([1, n_avg])锁定x轴范围,避免xlim tight自动调整超出需求范围 - 优化图例和标签的显示逻辑,提升图表可读性
内容的提问来源于stack exchange,提问作者NegativeZero
相关产品推荐
相关产品推荐

