Plotting a surface in MATLAB

1 vue (au cours des 30 derniers jours)
Anthont Goddard
Anthont Goddard le 3 Oct 2015
Commenté : Star Strider le 3 Oct 2015
I would like to plot
f(x,y) = x^2*y/(x^2 + y^2)
How do I do this in matlab?
  2 commentaires
sally_wu
sally_wu le 3 Oct 2015
Modifié(e) : sally_wu le 3 Oct 2015
Maybe like this?
x=2;
y=3;
f(x,y) = x^2*y/(x^2 + y^2);
linspace(x,y)
Anthont Goddard
Anthont Goddard le 3 Oct 2015
I am just getting a load of text output. Not a 3d plot

Connectez-vous pour commenter.

Réponse acceptée

Star Strider
Star Strider le 3 Oct 2015
You need to use the meshgrid (or equivalently, ndgrid) function:
x = linspace(-1, 1);
y = linspace(-2, 2);
[X,Y] = meshgrid(x,y);
f = @(x,y) x.^2.*y./(x.^2 + y.^2);
figure(1)
surf(X,Y,f(X,Y))
grid on
I created a function for ‘f’ here, but you could as easily use it simply as:
f = X.^2.*Y./(X.^2 + Y.^2);
and then plot as:
plot(X,Y,f)
I ‘vectorised’ your code to do element-wise operations. See the documentation on Array vs. Matrix Operations for a full discussion.
  4 commentaires
Anthont Goddard
Anthont Goddard le 3 Oct 2015
Ah that worked. Thanks :)
Star Strider
Star Strider le 3 Oct 2015
My pleasure!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Line Plots dans Help Center et File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by