fun(@x)

72 次查看(过去 30 天)
aymos
aymos 2018-6-26
Hi,
I have a semilog graph which must be fitted (in its linear region) using this equation: y = 6e17*B*log[(x+B)/B]
Can you please tell how can I obtain the value of constant B, using fun(@x) ?
Thank you so much in advance for your help !
  2 个评论
Rik
Rik 2018-6-26
You should look into the fit function.
aymos
aymos 2018-6-26
Can you please be more elaborate ?

请先登录,再进行评论。

回答(2 个)

Ameer Hamza
Ameer Hamza 2018-6-26
编辑:Ameer Hamza 2018-6-26
If you have a vector of x and y values then you can use several functions to estimate B. The correct method to use depending on your definition of the error function. For example, if you want to estimate B by minimizing the MSE (mean square error) then use lsqcurvefit(). For example,
xdata = ...; % vector of x values
ydata = ...; % vector of y values
y = @(B, x) 6e17*B.*log((x+B)./B);
B_estmated = lsqcurvefit(y, 1, xdata, ydata);
^ initial point for the numerical optimization algorithm.
Similarly, if you have some other error function, then you can use fmincon().
  11 个评论
aymos
aymos 2018-6-27
Thanks Ameer.. and by what variable are you defining the predicted output ? (you are using y for both predicted and actual output?)
[~, y] = ode45(@(t,y) odefun(A, B, C, y), t, y0);
Ameer Hamza
Ameer Hamza 2018-6-27
Yes, this equation will give the predicted output y. Also, I realize that using one y together in one statement can be a bit confusing but this syntax is correct. MATLAB does not confuse both y's with each other. You can change either one of the y to another variable name to avoid confusion.

请先登录,再进行评论。


abdul aleem shaik
abdul aleem shaik 2021-2-27
I=a1+a2+a3 how to express this in terms of I = fun(ai)

类别

Help CenterFile Exchange 中查找有关 Linear Programming and Mixed-Integer Linear Programming 的更多信息

标签

尚未输入任何标签。

Community Treasure Hunt

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

Start Hunting!

Translated by