我正在尝试使用以下代码绘制多项式函数:
y = polyfit(P,C,3);
Line = polyval(y, P);
y =
2.0372e-14 -4.0614e-09 0.0002 2.6060
figure
plot(P,C,'.')
hold on
plot(P, Line, '-')
legend('Observations','y')
axis([0 90000 0 10])
问题是,它会生成多行,如下所示:
如果我设置N = 1或y = polyfit(P,C,1);
,则不会发生此问题。在这种情况下,我得到一行正确的图表:
如何在N = 3时只绘制1行?
这是我试图在Matlab中生成的Excel版本:
答案 0 :(得分:2)
这是因为您的观察P
处于任意顺序:Matlab按顺序从一点到另一点。您实际上不需要在每个值P
处绘制拟合曲线,您只需在P
范围内绘制拟合曲线:
Pfitted = linspace(min(P),max(P),1000) % Generate 1000 equally spaced points
Cfitted = polyval(y,Pfitted) % Fit to these points
plot(Pfitted,Cfitted,'-')