How to fit my data to interpolated functions
9 ビュー (過去 30 日間)
古いコメントを表示
Hi all,
I need to do a complex fit of a power-law plus a few Gaussians (and no problem until here) but I have to add a different function coming from an array of x-y points downloaded from people who made numerical simulations. These five functions are given by the following five x-y couples x1,y1 etc...
This is how my model look like, but I get errors as it seems it can't read the variables x1,y1,x2,y2 etc
It says "??? Unrecognized function or variable 'x1' "
Anyone please know how I can do this?
Thanks in advance
mod=fittype(['F0*x^alpha' ... %powerlaw
'+A1b*exp(-((x-c1b)^2)/(2*s1b^2))' ... %gauss1b
'+A1n*exp(-((x-c1n)^2)/(2*s1n^2))' ... %gauss1n
'+A2n*exp(-((x-c2n)^2)/(2*s2n^2))' ... %gauss2n
'+A2o*exp(-((x-c2o)^2)/(2*s2o^2))' ... %gauss2out
'+A3n*exp(-((x-c3n)^2)/(2*s3n^2))' ... %gauss3n
'+A3o*exp(-((x-(c3n-(c2n-c2o)))^2)/(2*s3o^2))'... %gauss3out
'+k1*interp1(x1,y1,x)' ... %interpolated func 1
'+k2*interp1(x2,y2,x)' ... %interpolated func 2
'+k3*interp1(x3,y3,x)' ... %interpolated func 3
'+k4*interp1(x4,y4,x)' ... %interpolated func 4
'+k5*interp1(x5,y5,x)' ... %interpolated func 5
],...
'independent','x', ...
'coefficients',{'F0','alpha', ...
'A1b','c1b','s1b',...
'A1n','c1n','s1n',...
'A2n','c2n','s2n',...
'A2o','c2o','s2o',...
'A3n','c3n','s3n',...
'A3o','s3o',...
'k1','k2','k3','k4','k5',...
});
0 件のコメント
回答 (1 件)
Steven Lord
2024 年 10 月 8 日
Rather than defining your function as a large piece of text, I would define it as a function as per the "Fit a Curve Defined by a File" example on the fittype documentation page. I'd also either define your x1, x2, etc. variables inside that function or (if you want to be able to change them without having to modify the code) define them as problem parameters and specify their values in your call to the fit function.
参考
カテゴリ
Help Center および File Exchange で Linear and Nonlinear Regression についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!