MATLAB:polyval函数图N>;1.
我尝试使用以下代码绘制多项式函数:MATLAB:polyval函数图N>;1.,matlab,Matlab,我尝试使用以下代码绘制多项式函数: 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),则不会
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,如何仅绘制一条线
以下是我试图在Matlab中生成的Excel版本:
这是因为您的观察结果是以任意顺序进行的: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,'-')
这是因为您的观察值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,'-')
PS,您选择的变量名令人困惑!非常感谢。我为混淆变量而道歉。我使用y
作为预测值。代码中的第二行应该是Cfitted=polyval(y,Pfitted)
。很抱歉把p
和y
混用在一起,我承认,我没有测试过它!PS,您选择的变量名令人困惑!非常感谢。我为混淆变量而道歉。我使用y
作为预测值。代码中的第二行应该是Cfitted=polyval(y,Pfitted)
。很抱歉把p
和y
混用在一起,我承认,我没有测试过它!