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

1 Stimme

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
When I run that script I get an error. Subscript indices must either be real positive integers or logicals.
This code:
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
ran for me without error, and produced this plot:
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)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by