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.
math.png

 採用された回答

Stephan
Stephan 2018 年 12 月 9 日
編集済み: Stephan 2018 年 12 月 9 日

7 投票

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 件のコメント

Priodyuti Pradhan
Priodyuti Pradhan 2020 年 4 月 6 日
Thanks a lot for sharing! Really helpful!
sandeep
sandeep 2022 年 8 月 3 日
Is there a way to find the appropriate intial guess?
Rekib Uddin
Rekib Uddin 2023 年 8 月 19 日
Dear all,
How can we consider conditions in the custom equation....
e.g. y=-0.18 at x=0
Thanks and Regards
Torsten
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
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
Valrhona 2020 年 9 月 28 日

0 投票

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 件のコメント

Koral Villalobos
Koral Villalobos 2021 年 4 月 27 日
I need help with this too
sandeep
sandeep 2022 年 8 月 3 日
is there a way to find the appropriate intial guess?

サインインしてコメントする。

カテゴリ

ヘルプ センター および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

製品

リリース

R2015a

質問済み:

2018 年 12 月 9 日

コメント済み:

2023 年 8 月 31 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by