"Unrecognized function or variable" error when using fminbnd on an anonymous function

Any time I call an anonymous function in fminbnd, an error is returned, particularly with this code:
f=@(x) x^3;
g=@(x) 4*cos(x);
h=@(x) 6*exp(g(f(x)));
fminbnd(@h, -10, 10)
The error is:
Unrecognized function or variable 'h'.
Error in fminbnd (line 233)
x= xf; fx = funfcn(x,varargin{:});
Error in Homework8 (line 25)
fminbnd(@h, -10, 10)
If I copy the code and paste it into its own function file and then try to use fminbnd, it works as intended.

Answers (2)

Here, h is already defined as a function handle, so the '@' is not necessary, and is in fact causing the error.
Try this.
f=@(x) x^3;
g=@(x) 4*cos(x);
h=@(x) 6*exp(g(f(x)));
fminbnd(h, -10, 10)
ans = -7.2440
h is already a function handle, there's no need to try to make it one again.
f1 = @sin; % Regular function handle
f2 = @(x) x.^2; % Anonymous function (also a function handle)
h = @(x) f1(x)+f2(x); % Another function handle
fminsearch(h, pi/2)
ans = -0.4501

Categories

Products

Release

R2020b

Asked:

on 19 Mar 2021

Commented:

on 8 Apr 2022

Community Treasure Hunt

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

Start Hunting!