matlab 指数曲线拟合 y a exp t b

2021-03-10 21:50:59 字数 2345 阅读 3736

1楼:匿名用户

定义拟合函

来数:function s=hansh(x,r)a=x(1);

b=x(2);

c=x(3);

s=a*exp((r-b)^2/c);

主函自数:

t=[219 222 223 226 229 233];

y=[352 2353 3513 6303 3521 3300]; %你的数据少个y

x0=[1 1 1]; %对a,b,c赋初值

[x,resnorm]=lsqcurvefit(@hansh,x0,t,y) %最小二乘曲线拟合

2楼:流浪的醉人

clear

t=[219 222 223 226 229];%你给的数据有问题,请自行调整

y0=[352 2353 3513 6303 3521];

y1=ones(size(y0),1);

y1=log(y0);%对原方程两边取对数p=polyfit(t,y1,2);%p为拟合多项式的系数,降幂排列c=1/p(1);%把取回对数后的式子整理答一下,就可以得到abc跟p的对应关系

b=-p(2)*c/2;

a=exp(p(3)-b^2/c);abc

3楼:匿名用户

同意二楼做法,应该使用最佳平方逼近,但你的数据好像有问题啊

matlab最小二乘法拟合y=a*exp(-b/t),转换成线性用polyfit怎么写程序啊,有偿私聊我

4楼:匿名用户

1、首先对y=a*exp(-b/t)进行bai变量替换,令t=1/t,y=log(y),则方du程zhi可化成y=log(y)=b*log(e)*t+log(a)。dao2、按变量代换,将内t,y替换成容t、y,即t=[1/5,1/10,1/15,。。。]y=[log(1.

27),log(2.16),log(2.86),。。。

]3、最后,用polyfit()去拟合,即

p=polyfit(t,y,1) %y=a*t+b,a=b*log(e),b=log(a)

通过拟合,得到

a=5.2151;b=-7.4962

你的支持,就是对我的鼓励。如有不懂的地方,可以私聊。2016.12.15 0:19答

怎样使用matlab拟合y=a*exp(bx)+c*exp(dx)曲线?用什么**?

5楼:匿名用户

p0=[1 1 1 1];

f=@(x,a,b,c,d)a*exp(b*x)+c*exp(d*x);

p=fminsearch(sum((@(p)f(xdata,p(1),p(2),p(3),p(4))-ydata).^2),p0,a,b)

6楼:

请先运行cftool命令,然后就懂了。

如何用matlab进行二次指数拟合?拟合模型为y=exp(a(1)*x^2+a(2)*x+a(3))+a(4) 数据如下:

7楼:匿名用户

x = 1:1:11;

y = [1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0] ;

opts = fitoptions('method','nonlinear','normalize','on');

ftype = fittype('exp(a * x.^2 + b * x + c)+d','options',opts);

[fresult,gof] = fit(x',y',ftype)plot( x, fresult(x), x, y, '* ')

8楼:匿名用户

^function my11

x=1:11;

y=[1306 1373 1657 1919 2181 2336 2525.1 2816.9 2950.7 2959.1 3603.0];

plot(x,y,'o')

hold on

a=nlinfit(x,y,@fun,[0.04 0.6 -4.3 1800]);%%%方程

系数矩阵

disp(a)

xx=min(x):0.1:max(x);

yy=exp(a(1)*xx.^2+a(2)*xx+a(3))+a(4);%%%方程形式

plot(xx,yy)

endfunction y=fun(a,x)y=exp(a(1)*x.^2+a(2)*x+a(3))+a(4);end