Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#12 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 14 ![]() |
![]()
5.1.6 多项式拟合
在MATLAB中,函数polyfit()采用最小二乘法对给定的数据进行多项式拟合,得到该多项式的系数。该函数的调用方式为p = polyfit(x, y, n),采用n次多项式来拟合数据x和y,得到以p为系数的多项式。该函数使得p(x)与y最小均方误差最小。 【例5-11】 某数据的横坐标为x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8],纵坐标为y=[1 2 3 5 6 7 6 5 4 1],对该数据进行多项式拟合,代码如下: clear all; x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8]; y=[1 2 3 5 6 7 6 5 4 1]; p5=polyfit(x,y,5); %5阶多项式拟合 y5=polyval(p5,x); p5=vpa(poly2sym(p5),5) %显示5阶多项式 p9=polyfit(x,y,9); %9阶多项式拟合 y9=polyval(p9,x); figure; %画图显示 plot(x,y,'bo'); hold on; plot(x,y5,'r:'); plot(x,y9,'g--'); legend('原始数据','5阶多项式拟合','9阶多项式拟合'); xlabel('x'); ylabel('y'); 运行程序后,得到的5阶多项式如下: p5 = - 10.041*x^5 + 58.244*x^4 - 124.54*x^3 + 110.79*x^2 - 31.838*x + 4.0393 运行程序后,得到的输出结果如图5.1所示。由图5.1可以看出,使用5次多项式拟合时,得到的结果比较差。当采用9次多项式拟合时,得到的结果与原始数据符合的比较好。当使用函数polyfit()进行拟合时,多项式的阶次最大不超过length(x)-1。 ![]() |
![]() |
![]() |