hyfm.net
当前位置:首页 >> mAtlAB数据指数拟合 >>

mAtlAB数据指数拟合

需要转换一下:第一步,设一个中间变量,定义为对指数函数取对数.log(e^x),原来的指数就变成多项式了.第二步,用plotfit进行多项式拟合.

指数函数:( y = exp(a + b*x))>> x = [2001 2002 2003 2004 2005 2006 2007 2008 2009];y = [21.5 15.9 11.8 8.7 6.5 4.8 3.5 2.6 2.0];y=log(y');d = [1 1 1 1 1 1 1 1 1]; a=[d;x];b = a*y;a=a*a';c=abc = 601.9448 -0.2993%所以,拟合函数为 y = exp(

拟合函数表达式y=a*exp(b+cx) 式中a=0.06154920769, b=-3.18125203, c=7.822374803 拟合度0.9725(相关系数)

fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t'); %建立函数bai T=[14.57 6.05 4.57 3.54 2.89 2.45 2.12 1.89 1.7 1.55 0.4 0.41 0.43 0.44 0.43 0.43]; t=[0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75]; a=lsqcurvefit(fun,[0,0,0],t,T); %拟合du hold on;plot(t,T,'

指数拟合如下: ----------------------------------------------------------------- 先定义函数: function y=nhfun(b,x) y=b(1)*exp(b(2)*x)+b(3); 在运行程序: x=[10 12.5 15 17.5 20 22.5 25 27.5 30 32.5 35 37.5 40 42.5 45 47.5 50]; y=[62.1 77.3 92.5 104 112.9 121.

用matlab指数函数拟合,可以按下列例子的步骤进行:t=0:1.25:25; x=[10.85,11.31,12.30,13.44,13.63,14.19,15.18,15.61,15.90,16.98,17.38,17.78,18.66,19.19,17.78,19.21,19.14,19.74,19.96,20.06,19.91]; myfun=@(k,t)(k(1).*(1-k(2).*exp(-k(3)*t)).^(1/(1-k(4)))); beta0 =[0.92181 0.73821 0.17627 0.40571] [k,r]=nlinfit(t,x,myfun,beta0)

fun=inline('a(1)+a(2)*exp(-a(3)*t)','a','t'); %建立函数T=[14.57 6.05 4.57 3.54 2.89 2. %拟合hold on;plot(t,T,'bo'); %画原始数据点 t0=min(t):max(t);T0=fun(a,t0);plot(t0,T0,'r')

对于自己定义的函数形式拟合,其中的参数是要设定范围的,如果按matlab中默认的-inf到+inf弄出来的结果肯定不对,根据你的具体数据,大概估计一下三个参数的范围,然后再拟合就OK了 根据你的具体数据设置方法如下:把参数a的上界设为

两边取对数.lny=lna+bx y'=lny,a'=lna,b=b,y'=a'+b*x 求解最小二乘拟合,正则方程组可以得到a',b即:a,b 就可以了

可以在editor页面或者是命令页面输入cftool指令;之后按下data按钮,选择代表x轴和y轴的数据,按下create data set后close;再按下fitting按钮,选择new fit按钮,再选择你要拟合的函数形式即可.另外多项式拟合可以选择polyfit函数,具体用法可以看help文件(help菜单下的product help选项).里面会有比较详尽的函数用法解释的.

网站首页 | 网站地图
All rights reserved Powered by www.hyfm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com