MATLAB: 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.

plotssurf

%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)')

Best Answer

  • 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).