Plotting a surface in MATLAB

1 Ansicht (letzte 30 Tage)
Anthont Goddard
Anthont Goddard am 3 Okt. 2015
Kommentiert: Star Strider am 3 Okt. 2015
I would like to plot
f(x,y) = x^2*y/(x^2 + y^2)
How do I do this in matlab?
  2 Kommentare
sally_wu
sally_wu am 3 Okt. 2015
Bearbeitet: sally_wu am 3 Okt. 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 am 3 Okt. 2015
I am just getting a load of text output. Not a 3d plot

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Star Strider
Star Strider am 3 Okt. 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 Kommentare
Anthont Goddard
Anthont Goddard am 3 Okt. 2015
Ah that worked. Thanks :)
Star Strider
Star Strider am 3 Okt. 2015
My pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Line Plots finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by