登录论坛

查看完整版本 : [求助]关于多项式拟合的问题,谢谢!


jianke
2009-03-14, 11:19
你好!我想用多项式拟合2560个点的方程,请问我一定要按照“x轴”从小到大来排这些数据再拟合方程吗?如果不排序拟合方程,得到的方程会一样吗?我用的拟合函数是,
coef=polyfit(x,y,n);

如果你知道,请赐教。谢谢!!!

云龙九现
2009-03-24, 10:30
应该不用排序的
因为polyfit这个命令的原理其实是最小二乘拟合,最小二乘的特点是它拟合的直线或者曲线会尽量经过有相同趋势的点。
n=1的时候,拟合出来的是条直线,因为被拟合的曲线模型是y=a*x+b。通过该命令能够确定系数a,b的值,这时候你会发现,直线会从大多数的点或者尽量靠近大多数点。
n=2的时候,拟合出来的是条抛物线,因为被拟合的曲线模型是y=a*x*x+b*x+c。通过该命令能够确定系数a,b,c的值。
n=3的时候,拟合出来的是条三阶曲线,因为被拟合的曲线模型是y=a*x*x*x+b*x*x+c*x+d。通过该命令能够确定系数a,b,c,d的值。
与此同理,你可以得到n=9时候的拟合曲线,但根据我的经验,n=9的时候,不一定是最准确的。因为polyfit本身还返回一个曲线与各个点之间的方差与期望值,从这两个值你可以看到曲线拟合的准确度。
补充说明的是,如果你需要n=9的拟合曲线,那么你至少需要10组值,也就是(x1,y1),直到(x10,y10)。将这些值代入曲线模型,最后解一个有十个未知数的方程(十个系数)。这就是polyfit的原理。