# Plotting Anonymous Function of two variables

6 vues (au cours des 30 derniers jours)
Michael Haag le 19 Sep 2023
Commenté : Michael Haag le 20 Sep 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 commentairesAfficher 3 commentaires plus anciensMasquer 3 commentaires plus anciens
Dyuman Joshi le 20 Sep 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 le 20 Sep 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.

Connectez-vous pour commenter.

### Réponse acceptée

Matt J le 19 Sep 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 commentairesAfficher AucuneMasquer Aucune
Michael Haag le 19 Sep 2023
Modifié(e) : Michael Haag le 19 Sep 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 le 19 Sep 2023
Modifié(e) : Matt J le 19 Sep 2023
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

Connectez-vous pour commenter.

### Catégories

En savoir plus sur Surface and Mesh Plots dans Help Center et File Exchange

R2020b

### Community Treasure Hunt

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

Start Hunting!

Translated by