Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB:polyval函数图N>;1._Matlab - Fatal编程技术网

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
混用在一起,我承认,我没有测试过它!