matlab曲线拟合,急!

x=0:20:580;y=[00.070.210.410.720.971.221.441.651.862.022.192.332.482.582.702.852.912.... x=0:20:580;y
=[0 0.07 0.21 0.41 0.72 0.97 1.22 1.44 1.65 1.86 2.02 2.19 2.33 2.48 2.58
2.70 2.85 2.91 2.96 3.02 3.08 3.13 3.16 3.20 3.22 3.27 3.28 3.28 3.27 3.24 ]
求四次多项式拟合,写求出其关系式的程序 ,最好附图。
求高手指教!
展开
 我来答
tianxiawulang
2013-05-05 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2564万
展开全部

分别使用2、3、4阶多项式拟合,结果如图所示。

需要说明的是,使用四阶多项式拟合,会有警告信息“Polynomial is badly conditioned”,原因是其实不需要使用那么高的阶次,3阶就足够了。

 

顺便说一下,其实对于一元多项式拟合,更方便的做法是使用绘图窗口的基本拟合工具(Basic Fitting),可以交互式选择多种拟合方法以及显示方式,建议试一试。

 

代码如下(也可从附件直接下载):

X=0:20:580;
Y=[0 0.07 0.21 0.41 0.72 0.97 1.22 1.44 1.65 1.86 2.02 2.19 2.33 2.48 2.58 2.70 2.85 2.91 2.96 3.02 3.08 3.13 3.16 3.20 3.22 3.27 3.28 3.28 3.27 3.24 ];

N=[4 3 2];
clm={'rx:', 'g--p', 'm-.o'}
plot(X,Y,'.-')
hold on
lgd = { '原始数据' };
for i=1:length(N)
    n=N(i)
    p=polyfit(X,Y,n);
    plot(X,polyval(p,X),clm{i})
    syms x
    y=sum(vpa(p,3).*x.^[n:-1:0]);
    lgd{i+1} = ['y = ' char(y)];
end
xlabel('x');
ylabel('y');
legend(lgd{:}, 4)

 

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式