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