"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.

回答(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

类别

帮助中心File Exchange 中查找有关 Startup and Shutdown 的更多信息

产品

版本

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by