Question about calling user defined function to another script

4 ビュー (過去 30 日間)
Hakyoon Kim
Hakyoon Kim 2022 年 10 月 27 日
コメント済み: Stephen23 2022 年 10 月 27 日
hello
first here is my user_defined_function code.(name is A_execute1.m)
function A=A_execute1(r)
global V;
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
second, this is the script file(i made) that i want to call A_execute1 file to.
(to draw graph to see)
r=[-100:0.01:100];
V=10;
fminbnd('A_execute1',-100, 100)
plot(r,A_execute1(r)), xlabel('r'), ylabel('A')
grid
but it says error that
Error using fminbnd (line 237)
User supplied objective function must return a scalar
value.
Error in test4 (line 3)
fminbnd('A_execute1',-100, 100)
why it says that error?
i think i designed scalar value, not vector.
  1 件のコメント
Stephen23
Stephen23 2022 年 10 月 27 日
Do not use global variablesto pass parameter values, use the methods shown here: https://www.mathworks.com/help/matlab/math/parameterizing-functions.html

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

採用された回答

Matt J
Matt J 2022 年 10 月 27 日
編集済み: Matt J 2022 年 10 月 27 日
It returns empty.
%r=[-100:0.01:100];
V=10;
A_execute1(-100)
ans = []
Don't use global variables. Use anonymous functions, or other alternatives discussed here.
[r,fval]=fminbnd(@(r) A_execute2(r,V),-100,100)
r = -99.9999
fval = -3.1416e+04
function A=A_execute1(r)
global V;
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
function A=A_execute2(r,V)
A=pi*r*(sqrt(r^2+((9*V^2)/(pi^2*r^4))));
end
  3 件のコメント
Hakyoon Kim
Hakyoon Kim 2022 年 10 月 27 日
thx for your answer.
can i draw graph through anonymous function?
plot(@(r)), xlabel(''), ylabel('')
grid
or
plot(fun), xlabel(''), ylabel('')
grid
Matt J
Matt J 2022 年 10 月 27 日
Yes, using fplot,
fun=@(r) r.^2;
fplot(fun, [-1,1])
or with,
r=linspace(-1,1);
plot(r,fun(r))

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMATLAB についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by