Clear Filters
Clear Filters

Question about calling user defined function to another script

2 views (last 30 days)
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.

Accepted Answer

Matt J
Matt J on 27 Oct 2022
Edited: Matt J on 27 Oct 2022
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 Comments
Hakyoon Kim
Hakyoon Kim on 27 Oct 2022
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 on 27 Oct 2022
Yes, using fplot,
fun=@(r) r.^2;
fplot(fun, [-1,1])
or with,
r=linspace(-1,1);
plot(r,fun(r))

Sign in to comment.

More Answers (0)

Categories

Find more on MATLAB in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!