![]() |
[求助]关于MATLAB中lsqcurvefit、polyfit用法的探讨
各位,小弟在这请安了。最近遇到一个数据拟合问题。
已知:x=[1500 2000 2500 3000 3500 4000 4500 5000 5500]; y=[78.59 83.04 84.11 86.63 87.61 84.87 84.67 82.50 80.54];求解系数a,使得函数f(x)=a(1)*x+a(2)*x^2+a(3)*x^3+a(4)*x^4+a(5)*x^5+a(6)是x,y的最佳拟合曲线。 这个问题我想就是利用多项式数据拟合 是不是直接应用polyval polyfit,得出的系数即为a? 还是需要最小二乘法数据拟合函数lsqcurvefit?如果将目标函数设置为多项式f(x)=a(1)*x+a(2)*x^2+a(3)*x^3+a(4)*x^4+a(5)*x^5+a(6),效果是不是和polyfit一样,可结果得出的系数是不一样的,不知道这道题大家用第一种还是第二种,抑或其它?请解疑。 |
回复: [求助]关于MATLAB中lsqcurvefit、polyfit用法的探讨
polyfit函数拟合出来的就是一个多项式,而多项式的系数都是用最小二乘法得出的。
可以用help polyfit来看帮助,会发现有这么一句话: P = POLYFIT(X,Y,N) finds the coefficients of a polynomial P(X) of degree N that fits the data Y best in a least-squares sense. 既然Polyfit是用最小二乘法拟合多项式曲线,按说应该两个函数求出的系数矩阵相同,可是总是会存在偏差。 |
回复: [求助]关于MATLAB中lsqcurvefit、polyfit用法的探讨
多项式拟合是按x的降幂排列的,相应系数也是,而用lsqcurvefit给出的系数是你定义函数时怎么定义,顺序还是怎么排,你看看是不是这个地方出问题了。
|
回复: [求助]关于MATLAB中lsqcurvefit、polyfit用法的探讨
lsqcurvefit在有些情况下与所给的初值(a的初值)有关。若给的初值适当,两者的结果应该完全相同(注意系数序列的差别),因为他们都是根据最小平方法(最小二乘法)得到相应的结果。当然,对于多项式问题,用polyfit更为简单方便。
|
回复: [求助]关于MATLAB中lsqcurvefit、polyfit用法的探讨
您讲的很对 起始向量对结果有很大影响 如果取不好 经常会发生警告 奇异阵 什么的 POLYfit 确实更为方便 而且拟合精度也较好
|
所有时间均为北京时间。现在的时间是 03:44。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.