求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。

求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。,第1张

代码

x=[200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000];

y=[01 025 049 065 07 091 115 126 137 146 152 160 165 167 168 168 169 169 171];

cftool(x,y);

拟合方式一:指数拟合

General model Power2:

     f(x) = ax^b+c

Coefficients (with 95% confidence bounds):

       a =      -4495  (-570, 4801)

       b =    -002049  (-0297, 02561)

       c =        403  (-490, 5706)

Goodness of fit:

  SSE: 01527

  R-square: 09708

  Adjusted R-square: 09672

  RMSE: 00977

拟合方式二:最高三次多项式

Linear model Poly3:

     f(x) = p1x^3 + p2x^2 + p3x + p4

Coefficients (with 95% confidence bounds):

       p1 = -1208e-011  (-1778e-010, 1536e-010)

       p2 = -6613e-007  (-1214e-006, -1088e-007)

       p3 =    0002397  (0001855, 000294)

       p4 =      -0388  (-05376, -02384)

Goodness of fit:

  SSE: 002784

  R-square: 09947

  Adjusted R-square: 09936

  RMSE: 004308

拟合方式三:最高四次多项式

Linear model Poly4:

     f(x) = p1x^4 + p2x^3 + p3x^2 + p4x + p5

Coefficients (with 95% confidence bounds):

       p1 =  4099e-013  (1256e-013, 6942e-013)

       p2 = -1815e-009  (-3073e-009, -5575e-010)

       p3 =  2001e-006  (1018e-007, 39e-006)

       p4 =   00009045  (-00002188, 0002028)

       p5 =     -01391  (-03494, 007117)

Goodness of fit:

  SSE: 001654

  R-square: 09968

  Adjusted R-square: 09959

  RMSE: 003437

小结

实际上多项式拟合经度(SSE,RMSE)四次高于三次,因为四次包含了三次,需要根据物理模型来确定选择多项式最高次数。

指数模型精度低于三次多项式。

本文希望你能认识一个新的有用的函数,曲线拟合工具箱

希望你学习进步。

1 多项式函数拟合:a=polyfit(xdata,ydata,n)其中n表示多项式的最高阶数,xdata,

ydata为将要拟合的数据,它是用数组的方式输入.

输出参数a为拟合多项式 的系数

多项式在x处的值y可用下面程序计算.

y=polyval(a,x)

2 一般的曲线拟合:p=curvefit(‘Fun’,p0,

xdata,ydata)

其中Fun表示函数Fun(p,data)的M函数文件,

p0表示函数的初值.curvefit()命令的求解问题形式是

若要求解点x处的函数值可用程序f=Fun(p,x)计算.

例如已知函数形式 ,并且已知数据点 要确定四个未知参数a,b,c,d.

使用curvefit命令,数据输入 ;初值输 ;并且建立函数 的M文件(Fun.m).若定义 ,则输出

又如引例的求解,MATLAB程序:

t=[l:16]; %数据输人

y=[ 4 6.4 8 8.4 9.28 9.5 9.7 9.86 10.2 10.32 10.42 10.5 10.55 10.58 10.6] ;

plot(t,y,’o’) %画散点图

p=polyfit(t,y,2) (二次多项式拟合)计算结果:p=-00445 10711 43252 %二次多项式的系数

由此得到某化合物的浓度y与时间t的拟合函数。

程序改成如下:

x=0:pi/20:pi/2;

y=sin(x);

a=polyfit(x,y,5);

x1=0:pi/30:pi2;

y1=sin(x1);

y2=a(1)x1^5+a(2)x1^4+ a(3)x1^3+ a(4)x1^2+ a(5)x1+a(6) ;

plot(x1,y1,'b-',x1,y2,'r')

set(gca,'Xtick',[0:05:7])%设置坐标轴

legend('原曲线','拟合曲线')

grid on

axis([0,7,-12,4])

第二问。程序改成如下:

x=0:pi/20:pi/2;

y=sin(x);

a=polyfit(x,y,5);

x2=0:pi/20:pi/2;

y2=a(1)x2^5+ a(2)x2^4+ a(3)x2^3+ a(4)x2^2+ a(5)x2+a(6);%把x1该成x2

plot(x,y,'',x2,y2,'-')

以上就是关于求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。全部的内容,包括:求matlab高手帮忙编写一个函数拟合程序。估计可以得到一个幂函数或者指数函数。、用MATLAB怎么实现曲线拟合、matlab数据拟合等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9465721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存