急急急!!!matlab拟合多项式怎么求最高阶次数

请问我用的如下代码为什么要不就是没结果要不就是出现警告:
Warning: Polynomial is badly conditioned. Remove repeated data points
or try centering and scaling as described in HELP POLYFIT.

t=[.......];% t,v都是数据
v=[......];
for i=6
y=polyfit(t,v,i);
Y=polyval(y,t);
if sum((Y-v).^2)<0.1
c=i
break;
end
end
或者各位有没有更好的解决办法,求得拟合多项式的最高阶,还是说高阶越高拟合效果越好。。。真心求助!!

你好!

拟合其实最多不要超过四阶,因为太多了阶数会影响拟合的精度。
你在拟合的时候比如有X、Y两列数据,那么:
y=polyval(X,Y,N);追问

那这个N是怎么确定的,我的数据比较长并且好像八次就是最好的,但我不知道为什么要选八次,刚百度说是要用SSE来求误差平方和,这个是怎么用的呢?最好有举例代码的,非常感谢~!!

追答

clc;clear all
x=1:0.01:pi;
y=2*sin(3*x).*cos(5*x);
for i=1:8
p=polyfit(x,y,i);
y1=polyval(p,x);
S2(i)=sum((y1-y).^2);
end
k=find(S2==min(S2));
fprintf('最佳设置:N=%d\n',k)

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-29
你可以 用regress()函数来拟合,此可以拟合较高阶的多项式函数。如
clc,clear all,close all
x=[。。。];
y=[。。。];
n=length(x);
X=[x.^10 x.^9 x.^8 x.^7 x.^6 x.^5 x.^4 x.^3 x.^2 x ones(n,1)];

[a,bint,r,rint,stats] = regress(y,X);

拟合的多项式函数
y=a1*x.^10+a2*x.^9+a3*x.^8+a4*x.^7+a5*x.^6+a6*x.^5+a7*x.^4+a8*x.^3+a9*x.^2+a10*x+a11
对于高阶越高拟合效果越好,这种说法并不恰当。只有当拟合精度R^2愈接近1,此拟合的函数最为合理。本回答被网友采纳