Borrar filtros
Borrar filtros

Plotting Anonymous Function of two variables

7 visualizaciones (últimos 30 días)
Michael Haag
Michael Haag el 19 de Sept. de 2023
Comentada: Michael Haag el 20 de Sept. de 2023
Hello,
I have defined the following Anonymous Function of two variables:
f1 = @(x) erf(x(1))+cos(x(2));
When writing the command for plotting via fsurf
fsurf(f1,[-5 0 -5 5])
Error using surf
Z must be a matrix, not a scalar or vector.
I get the following warning and my figure remains empty:
Warning: Function behaves unexpectedly on array inputs. To improve performance, properly vectorize
your function to return an output with the same size and shape as the input arguments.
So, what am I doing wrong?
I know that I can plot the function with
f1 = @(x,y) erf(x)+cos(y);
fsurf(f1,[-5 0 -5 5])
but I want to plot it like at the beginning.
How can I plot a Anonymous Function that is defined as mentioned at the beginning?
Regards,
Michael
  5 comentarios
Dyuman Joshi
Dyuman Joshi el 20 de Sept. de 2023
"the objective function has to be defined as mentioned"
I am bit skeptical about "has to".
Can you give more details about what you are trying to? Can you share the objective function?
Michael Haag
Michael Haag el 20 de Sept. de 2023
s = @(x1,x2) erf(x1)+cos(x2); %use this for surface plotting
objective = @(x) s(x(1), x(2)); %use this for fmincon
This is exactly what I need! Thanks a lot.
@Dyuman Joshi: I just want to minimize a simple function. My intention was to figure out how to define the function thta I am able to minimize it with fmincon and to plot it afterwards.

Iniciar sesión para comentar.

Respuesta aceptada

Matt J
Matt J el 19 de Sept. de 2023
f1 = @(x) erf(x(1))+cos(x(2));
fsurf(@(x1,x2) f1([x1,x2]) , [-5 0 -5 5])
Warning: Function behaves unexpectedly on array inputs. To improve performance, properly vectorize your function to return an output with the same size and shape as the input arguments.
  2 comentarios
Michael Haag
Michael Haag el 19 de Sept. de 2023
Editada: Michael Haag el 19 de Sept. de 2023
Thank's a lot. But the warning is still issued. Is there a nicer way to do the plotting with the function defined as mentioned?
Matt J
Matt J el 19 de Sept. de 2023
Editada: Matt J el 19 de Sept. de 2023
You're welcome, but please Accept-click the answer.
No, you cannot avoid the warning with the input syntax you've chosen, except with warning off.
f1 = @(x) erf(x(1))+cos(x(2));
warning off
fsurf(@(x1,x2) f1([x1,x2]) , [-5 0 -5 5])
warning on

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Surface and Mesh Plots en Help Center y File Exchange.

Productos


Versión

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by