Can someone tell me what I'm doing wrong. I have looked over this for quite a while already with no success. I think I am messing up when it comes to element by element operation, but I have tried everything I know with no luck.

1 view (last 30 days)
%this script will plot a 3-D plot of P(v) as a function of v and T
M=0.032;
R=8.31;
x=[0:1000];
y=[70:320];
[X,Y]=meshgrid(x,y);
Z=4*pi*(M/(Y.*2*pi*R)).^(3/2)*(X.^2).*exp((-X.^2*M)./(Y.*2*R))
surf(X,Y,Z)
xlabel('v (m/s)');ylabel('T (K)');zlabel('P(v)')

Accepted Answer

Star Strider
Star Strider on 3 Apr 2015
When in doubt, vectorise everything!
This works:
M=0.032;
R=8.31;
x=[0:1000];
y=[70:320];
[X,Y]=meshgrid(x,y);
Z=4*pi*(M./(Y.*2*pi*R)).^(3/2).*(X.^2).*exp((-X.^2*M)./(Y.*2*R));
mesh(X,Y,Z)
xlabel('v (m/s)');ylabel('T (K)');zlabel('P(v)')
I replaced your surf call with mesh because the surf plot was so dense it looked completely black (in R2015a).
  4 Comments
John D'Errico
John D'Errico on 3 Apr 2015
Edited: John D'Errico on 3 Apr 2015
The black lines arise because matlab uses black edges in the grid. You can turn them off with a set command, something like
H = surf(X,Y,Z);
set(H,'edgecolor','none')
or you can use the shading command as I usually do, because it is easy to remember when I am feeling lazy.
surf(X,Y,Z)
shading interp
Either will kill the black lines in the surface.
Star Strider
Star Strider on 3 Apr 2015
Thank you, John. I don’t myself encounter that problem often enough to have searched for a different solution other than switching to mesh. I’ll consider the 'edgecolor' and ‘shading’ options next time.

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics Objects 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!