回 帖 发 新 帖 刷新版面

主题:polyfit的一个问题

一组测量的数据x=[1020 657.61 286.4 154.35 89.529 67.027 48.821 39.406 15.286] 和y=[5 10 15 20 25 30 35 40 100] 想用多项式方程式,用f= polyfit(x,y,7) 出现下面警告
Warning: Polynomial is badly conditioned. Remove repeated data points
         or try centering and scaling as described in HELP POLYFIT.
(Type "warning off MATLAB:polyfit:RepeatedPointsOrRescale" to suppress this warning.)
> In D:\MATLAB6p5\toolbox\matlab\polyfun\polyfit.m at line 75


算出来的coefficient不对,但是如果把指数降到3次方,也就是只取4个点的值,就没问题了。
是不是因为测出来的值误差大于这个多项式能承受的啊,所以得不出答案来,如果是这样,我该用哪个命令来求解呢?

回复列表 (共4个回复)

沙发

你的这个是由于拟合的阶数太高,系统自动给出的警告信息,但是是可以绘制出图形的.
此时总体的拟合曲线并不好.
要是想效果好一些的话可以用三次样条插值试试,而且你的这组数据只是一维的,相对简单很多,程序就以下几行:
x=[1020 657.61 286.4 154.35 89.529 67.027 48.821 39.406 15.286]';
y=[5 10 15 20 25 30 35 40 100]';
pp=spline(x,y);
xx=linspace(15,1020);
plot(x,y,'o',xx,ppval(pp,xx),'r-')
你可以试一下

板凳

这样的数据用多项式拟合不太恰当,可用其他形式(指数、分式)拟合效果应好一些。

3 楼


2楼的建议确实很好
那这个问题就就可以先画一下原始数据确定的图形
看看这个图形与什么函数的图形比较类似
就可以确定是用多项式拟合还是别的函数的拟合了

4 楼

非常正确!

我来回复

您尚未登录,请登录后再回复。点此登录或注册