Surface plot generation for a 3-variable function
Show older comments
Greetings, Could you please advise how to generate a surface plot for a 3- variable function. (The meshgrid and function are working properly but the surf() function keeps throwing out error and no graph appears)
u=1000:4:3000;
v=400:1.6:1200;
w=0.25:0.001:0.75;
[x,y,z]=meshgrid(u,v,w);
g=x*x+y*y-z*z;
surf(u,v,g)
Thanks!
Also Could you let me know how to plot surf(u,w,g) and surf (v,w,g) in separate graphs.
Answers (2)
Walter Roberson
on 8 Apr 2019
0 votes
surf can only be used for rectangular (2d) data arrays.
For 3d data arrays your choices include
- isosurface
- slice
- volumeviewer or underlying functionality can be called directly in very recent releases
- vol3d v2 from File Exchange
- scatter3 and encode the value by color or size
Try to use a for loop to plot the resulting expression in 3rd dimension as shown below since surf function plots 2D matrices only
u=100:5:300;
v=40:1.6:120;
w=0.25:0.1:0.75;
[x,y,z]=meshgrid(u,v,w);
g=x.^2+y.^2-z.^2;
hold on
for k = 1:length(size(z,3))
surf(u,v,g(:,:,k))
end
colorbar
shading interp
view(3)
grid
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!