Plotting a surface in MATLAB

2 views (last 30 days)
I would like to plot
f(x,y) = x^2*y/(x^2 + y^2)
How do I do this in matlab?
  2 Comments
sally_wu
sally_wu on 3 Oct 2015
Edited: sally_wu on 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 on 3 Oct 2015
I am just getting a load of text output. Not a 3d plot

Sign in to comment.

Accepted Answer

Star Strider
Star Strider on 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 Comments
Anthont Goddard
Anthont Goddard on 3 Oct 2015
Ah that worked. Thanks :)

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!