Plotting Anonymous Function of two variables
Afficher commentaires plus anciens
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])
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 commentaires
Dyuman Joshi
le 19 Sep 2023
"I have defined the following Anonymous Function of two variables:"
No, that is an anonymous function of a single variable i.e. x.
From the documentation of fsurf - "Specify a function of the form z = f(x,y). The function must accept two matrix input arguments and return a matrix output argument of the same size."
"How can I plot a Anonymous Function that is defined as mentioned at the beginning?"
Any particular reason why you want to use that approach?
Michael Haag
le 19 Sep 2023
When doing some optimization with i.e. fmincon
For situations like that, I would do,
s = @(x1,x2) erf(x1)+cos(x2); %use this for surface plotting
objective = @(x) s(x(1), x(2)); %use this for fmincon
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
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Surface and Mesh Plots dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

