适用于多项式模型的 MATLAB 函数
有两个 MATLAB® 函数可通过多项式对您的数据建模。
多项式拟合函数
函数说明polyfit(x,y,n) 通过最大限度地减小数据与模型偏差的平方和(最小二乘拟合),求拟合 y 数据的 n 次多项式 p(x) 的系数。
polyval(p,x) 返回基于 x 进行计算,且由 polyfit 确定的 n 次多项式的值。
此示例说明如何使用多项式对数据建模。
在时间 t 的多个值处测量数量 y。
t = [0 0.3 0.8 1.1 1.6 2.3];
y = [0.6 0.67 1.01 1.35 1.47 1.25];
plot(t,y,'o')
title('Plot of y Versus t')
您可尝试使用以下二次多项式函数对此数据进行建模:
y=a2t2+a1t+a0.
通过最大限度地减小数据与模型偏差的平方和(最小二乘拟合),计算未知系数 a0、a1 和 a2。
使用 polyfit 求多项式系数。
p = polyfit(t,y,2)
p = 1×3
-0.2942 1.0231 0.4981
MATLAB 以降幂计算多项式系数。
数据的二次多项式模型由以下方程给出:
y=-0.2942t2+1.0231t+0.4981.
按统一的时间间隔 t2 计算多项式。然后,在同一个图中绘制原始数据和模型。
t2 = 0:0.1:2.8;
y2 = polyval(p,t2);
figure
plot(t,y,'o',t2,y2)
title('Plot of Data (Points) and Model (Line)')
按数据时间向量计算模型
y2 = polyval(p,t);
计算残差。
res = y - y2;
绘制残差图。
figure, plot(t,res,'+')
title('Plot of the Residuals')
请注意,二阶拟合大致遵循数据的基本形状,但并不能捕获数据似乎具备的平滑曲线。残差似乎存在一个模式,意味着可能需要不同的模型。如下所示,五次多项式在遵循数据波动方面表现更佳。
重复该练习,不过这次使用来自 polyfit 的五次多项式。
p5 = polyfit(t,y,5)
p5 = 1×6
0.7303 -3.5892 5.4281 -2.5175 0.5910 0.6000
在 t2 上计算多项式,并在新的图窗窗口中基于数据绘制拟合图。
y3 = polyval(p5,t2);
figure
plot(t,y,'o',t2,y3)
title('Fifth-Degree Polynomial Fit')
注意
如果您尝试对物理情况建模,务必考虑特定阶次的模型是否对您的情况有意义。