求助 指数函数的拟合
我是初学者,如何拟合y=(1/a)^x + b??对于高手应该不难吧。回复 楼主 zwz_good 的帖子
参考此帖:http://forum.vibunion.com/forum/vi ... hlight=%C4%E2%BA%CF
LZ还可以使用论坛搜索 谢谢楼上的,我再看看 烦请ch_j1985 给我写一点呀,搜索到的都是自然指数,可我是要求的不是自然指数,还是搞不懂,麻烦你了。 1stOpt命令,你自己help一下 自己结合help写的一个程序:
% fitmyfun.m
clc
clear
xdata=(0:0.1:1)';
ydata=(0.6).^xdata+2;
% Creat own fun
f=fittype('a.^x+b');
% fit
cfun=fit(xdata,ydata,f,'Startpoint',)
运行结果:
cfun =
General model:
cfun(x) = a.^x+b
Coefficients (with 95% confidence bounds):
a = 0.6(0.6, 0.6)
b = 2(2, 2) 感谢几位朋友的帮忙,我再看看,谢谢。 我现在需要具体拟合的公式为[(1/a) ^ (k1*x) + (1/b) ^ (k2 * y) + c] * xy = z
我根据friendchj朋友提供的帮助我写了
f=fittype('(a.^(k1.*x)+b.^(k2.*y)+c).*x.*y','coefficients',{'a','b','c','k1','k2'},'independent',{'x','y'})
出错
??? Error using ==> fittype.fittype at 333
Independent variable xy does not appear in the equation expression. 其实就是怎样定义多个自变量的问题。 请各位高手不惜赐教,谢谢了。 以下是数据
X Y Z
1 1 0.0450
1 4 0.0600
1 8 0.0960
1 12 0.1080
8 1 0.0720
8 4 0.2400
8 8 0.3840
8 12 0.4320
50 1 0.1275
50 4 0.4500
50 8 0.7200
50 12 0.9450
100 1 0.1575
100 4 0.5880
100 8 1.1400
100 12 1.6200
200 1 0.2640
200 4 1.0320
200 8 2.0400
200 12 3.0240
500 1 0.6000
500 4 2.3700
500 8 4.6800
500 12 6.8400
800 1 0.9000
800 4 3.6000
800 8 7.2000
800 12 10.0800 我要求出五个系数'a','b','c','k1','k2' 现在整理问题如下:
需要拟合的公式如下
[(1/a) ^ (k1*x) + (1/b) ^ (k2 * y) + c] * xy = z
原始数据为
以下是数据
X Y Z
1 1 0.0450
1 4 0.0600
1 8 0.0960
1 12 0.1080
8 1 0.0720
8 4 0.2400
8 8 0.3840
8 12 0.4320
50 1 0.1275
50 4 0.4500
50 8 0.7200
50 12 0.9450
100 1 0.1575
100 4 0.5880
100 8 1.1400
100 12 1.6200
200 1 0.2640
200 4 1.0320
200 8 2.0400
200 12 3.0240
500 1 0.6000
500 4 2.3700
500 8 4.6800
500 12 6.8400
800 1 0.9000
800 4 3.6000
800 8 7.2000
800 12 10.0800
要求出五个系数'a','b','c','k1','k2' x y 是自变量
z是因变量 例子
电流(设为X)
0.490667 0.955333 1.544 1.940667 2.48 3.026667 3.966667 4.453333 5.073333 6.033333 7.04
电压(设为Y)
253.3333 381 450 503.6667 532 520 489 481.3333 459 438.3333 422
用V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I)模型
clear;
X=
Y=
myfun=inline('A(1)*exp(A(2)*x)+A(3)*exp(A(4)*x)','A','x')
A = nlinfit(X,Y,myfun,)
I=min(X):0.1:max(X);
V=A(1)*exp(A(2)*I)+A(3)*exp(A(4)*I);
plot(X,Y,'o',I,V)
结果:
A =
668.9571 -0.0688 -656.7991 -1.0321
页:
[1]
2