Matlab绘制带误差棒的线性回归图:代码无误差棒显示求解
代码问题分析与修正
你的代码存在两个核心问题导致误差棒无法正常显示:
errorbar参数传递错误
Matlab的errorbar函数需要指定x轴数据、y轴数据以及误差范围,正确调用格式为errorbar(x, y, yerr)。你当前的errorbar(vist,err)会被解析为以vist为x值、err为y值绘图,而非给原始数据点(tempint, vist)添加y方向误差棒;再加上err数值极小(仅0.0008),几乎无法在图中观测到。未启用坐标轴保留机制
默认情况下,Matlab每次执行plot或errorbar都会清空当前坐标轴内容。你先绘制误差棒,再执行plot时会直接覆盖之前的误差棒图形,最终只显示拟合线。
另外,你通过polyfit得到了拟合系数a,但手动编写了拟合线公式,建议用polyval自动计算拟合值,避免手动输入系数可能出现的错误。
修正后的代码:
tempint = [0.18569,0.530445,0.83078,1.09996,1.34653,1.576,1.7911]; vist = [0.269266,0.314337,0.353932,0.3909,0.421372,0.451202, 0.479455]; a = polyfit(tempint,vist, 1); y = polyval(a, tempint); % 用polyval自动计算拟合值 err = [0.0008,0.0008,0.0008,0.0008,0.0008,0.0008,0.0008]; errorbar(tempint, vist, err, 'o'); % 绘制带误差棒的原始数据点,'o'标记增强可读性 hold on; % 保留当前坐标轴,后续绘图不会覆盖原有内容 plot(tempint,y); xlabel("tempo intermedio [s]") ylabel("velocità istantanea [m/s]") hold off; % 关闭坐标轴保留
内容的提问来源于stack exchange,提问作者Jack_01
相关产品推荐
相关产品推荐

