Fitting data with custom equation
591 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have some datas to fit with by the following equation : d*atan(b*(x+a))+c . I've done it by the " curve fitting tool" how I can incorporate this process in a matlab script ? I'd like to obtain the parameter a,b,c,d as an answer.
Thanks.

0 件のコメント
採用された回答
Stephan
2018 年 12 月 9 日
編集済み: Stephan
2018 年 12 月 9 日
Hi,
you can use this code:
% Some data - replace it with yours (its from an earlier project)
x = [177600,961200, 2504000, 4997000, 8884000]';
y = [6.754, 24.416, 58.622, 107.980, 154.507]';
% Define Start points, fit-function and fit curve
x0 = [1 1 1 1];
fitfun = fittype( @(a,b,c,d,x) d*atan(b*(x+a))+c );
[fitted_curve,gof] = fit(x,y,fitfun,'StartPoint',x0)
% Save the coeffiecient values for a,b,c and d in a vector
coeffvals = coeffvalues(fitted_curve);
% Plot results
scatter(x, y, 'r+')
hold on
plot(x,fitted_curve(x))
hold off
Due to, that this code is taken from an older project and the values dont represent your function the result here is a very bad fit - but to show how it works with a custom function inside a script it should be good enough.
Best regards
Stephan
5 件のコメント
Torsten
2023 年 8 月 19 日
編集済み: Torsten
2023 年 8 月 19 日
You can insert the point in the custom equation thereby reducing the number of unknown parameters:
d*atan(b*(0+a)) + c = -0.18
-> d*atan(b*a) + c = -0.18
-> c = -0.18 - d*atan(b*a)
Thus the modified custom equation to be fitted reads:
d*(atan(b*(x+a)) - atan(b*a)) - 0.18
which now has only 3 instead of 4 unknown parameters.
Zeyu Ma
2023 年 8 月 31 日
Hi there, I wonder how to restrict the values of the parameters.
For example, force parameter a to be 0<a<1.
Thank you!
その他の回答 (1 件)
Valrhona
2020 年 9 月 28 日
I have a question regarding the curve fitting tool itself.
How can I change the z=f(x,y) to f(x).
I cannot change the x, y, or z data in this curve fitting tool.
I would like to use a custom f(x) function (not f(x,y))
Many thanks!
2 件のコメント
参考
カテゴリ
Help Center および File Exchange で Get Started with Curve Fitting Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!