How to plot a 3D graph?
Afficher commentaires plus anciens
I wrote a code to measure the temperature in terms of time and depth but when I plot my 3D graph, the temperature's values increased significantly from their 2D values and I would like to know why?
Here is my code:
alpha=0.128e-6;
Ts=-20; Ti=10;
t=linspace(0,2.592*10^6,75);
z=linspace(0,3,75);
T=(erf(z./(2*sqrt(alpha.*t)))*(Ti-Ts))+Ts;
[tt,zz]=meshgrid(t,z);
TT=tt.^2-zz.^2;
surf(zz,tt,TT);
xlabel('depth')
ylabel('time')
zlabel('temperature')
Réponses (1)
Chad Greene
le 6 Oct 2015
Modifié(e) : Chad Greene
le 6 Oct 2015
This isn't a problem with plotting, it's a problem with your data. See:
hist(TT(:))
Your TT matrix has some pretty big values in it, whereas your T matrix has values mostly in the range of -10 to 10 degrees.
Why aren't you calculating TT the same way you calculated T?
TT=(erf(zz./(2*sqrt(alpha.*tt)))*(Ti-Ts))+Ts;

3 commentaires
Thomas Chateauvert
le 6 Oct 2015
Modifié(e) : Walter Roberson
le 6 Oct 2015
Chad Greene
le 6 Oct 2015
Without any context it's hard to know what you mean by funky or what the surface should look like. Matlab's plotting the data you're giving it, so I can only assume the issue is with the data. Be descriptive about what's wrong with the surface above, and what you want it to look like.
Chad Greene
le 6 Oct 2015
Did you mix up the order of zz and tt when plotting? Try this:
pcolor(tt,zz,TT);
shading interp
xlabel('time')
ylabel('depth')
set(gca,'YDir','reverse')
cb = colorbar;
ylabel(cb,'temperature')

Note I opted for pcolor although surfaces look cool, they're rarely of great use for displaying scientific data.
Catégories
En savoir plus sur Graph and Network Algorithms dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!