回 帖 发 新 帖 刷新版面

主题:[讨论]求解一个曲线拟合的问题(难)

小弟在做课题时遇到一难题,关于拟合的。

   Y=a*X1⊙exp(b*X2)  (注:X1,X2,Y为已知数据,⊙为卷积)

拟合求解系数a和b

苦等大虾给与解答,非常感谢。
[em1][em1][em1][em1]

回复列表 (共9个回复)

沙发

若将数据置上,可代为拟合。方程的形式比较简单,参数很少,应该不难。

板凳

十分感谢楼上,数据如下:
73    35    80
74.3    36.8    82.8
74    36    83
74.3    36.5    82.2
74    36    81.5
75.7    36.2    82.3
85    37    81.5
89.9    37.5    85.6
137.8    37.9    82.1
190.9    38    83
199.2    39.9    84.5
193.7    49.2    89
218.2    78.5    101.6
220.3    97.7    106.4
218.3    112.5    118
215.9    130.6    128.1
213.3    145    128
222.1    151.9    144.3
210    152.9    150.3
209.7    155    156.2
206.3    161.4    160.2
205    159.1    163.3
204.2    159.8    166.1
206.6    158    167
207.5    159    168.6
206    160.4    172.1
204.7    158.1    172.8
203    159.4    173
202    160.6    174
201.8    155.7    173.3
200    155    173
198.6    156.2    172.4
199    161.1    173.7
196.9    157.1    171.3
197.9    156    171.7
198    155.1    169.9
197.2    155    169
195    155.5    168.7
194    151.3    167.5
193.6    151    165.5
194.3    151.2    168.1
186.8    151    165
186    153.3    165.6
186.2    149.6    165.1
186    151.2    164.6
180.3    152    163.7
205.9    147.4    163.4
193.4    148    162
203.5    149.6    163
197.3    151.5    164.1
186.4    144.8    161.9
199.5    146.9    162
183.8    145    161
190.7    144.1    160.9
198    146.1    160.6
194.6    144.2    159.4
191.6    143    159
192.5    142.7    159.2
197.6    143.5    158.1
187    149.5    159.9
还有几组数据没有做出来,能不能把代码发给我,我的邮箱是leoliuf@hotmail.com QQ:304584537 非常感谢!!!:):)

3 楼

SSy =  6.9389e+004
[a b] =[.4630522386, .3716504396e-2]
RSS =26937.10671
MSe = 464.4329
R^2 =.611795

4 楼

十分感谢gslyd,能不能把代码帖上来,或发到我邮箱(leoliuf@hotmail.com)里,我还有几组数据没有得出来,需要算。谢谢!

:-):-):-):-):-)

5 楼

可用lsqcurvefit or nlinfit 进行拟合。以我给出的结果作为初值即可。
但!这样的数据并不与所给方程有很好的关系,这种拟合的效果并不好。

6 楼

我用nlinfit写了程序,还是不行,能不能贴一下程序,谢谢!

7 楼

x=data(:,1:2);y=data(:,3);
b0=[.4630522386, .3716504396e-2];
b=nlinfit(x,y,'myfun',b0)
其中的myfun:
function fy=myfun(b,x)
fy=b(1)*x(:,1).*exp(b(2)*x(:,2));

8 楼

谢谢gslyd,不过 Y=a*X1⊙exp(b*X2)中⊙是卷积关系,不是乘积,我也写了个程序,你看看对不对,
主程序:------------------------------------------------------------〉
X=data(:,2:3);
y=data(:,1);
beta0=[0.0001,0.0001];
X=[smooth(X(:,1),'rloess'),smooth(X(:,2),'rloess')];
y=smooth(y,'rloess');
[beta,r,J,SIGMA,mse]=nlinfit(X,y,@Perfusion,beta0);
Perfusion函数:------------------------------------------------------〉
function yhat = Perfusion(beta,X)
yhat=beta(1)*nconv(beta(2),X);
nconv函数:----------------------------------------------------------〉
function Y=nconv(beta,X)
Y0=conv(X(:,1),exp(-beta*X(:,2)));
Y=Y0(1:60,1);
不过运行时老是有错:-(

9 楼

data=' '
X=data(:,2:3);y=data(:,1);
b=[.4991699060e15,    .4370819265]
for l=1:100
    b=nlinfit(X,y,'Perfusion',b);
    b0=b
    b=lsqcurvefit('Perfusion',b0,X,y);
end
%-----------------
%function yhat = Perfusion(beta,X)
%yhat=beta(1)*nconv(beta(2),X);
%--------------------
%function Y=nconv(be,x)
%Y0=conv(x(:,1),exp(-be*x(:,2)));
%Y=Y0(1:60,1);

我来回复

您尚未登录,请登录后再回复。点此登录或注册