How do you create a surf plot in cylindrical coordinates?
94 views (last 30 days)
Show older comments
In general, the syntax for a surf plot is surf(X,Y,Z). I have u = F(r,z). I'd like to do surface plots of u for multiple cross sections at z = h1, h2, h3, etc. Is there a simple way to create a surf plot in cylindrical coordinates, i.e., something that would be analagous to the syntax: surf(r,phi,u) where u = u(r,h1)?
0 Comments
Accepted Answer
Jonathan Epperl
on 19 Nov 2012
Or even easier, remember that you're not forced to put just one variable X in the first argument of surf, all you need is a parametrization. So in your case, assume you have vectors r and phi. Then make them into a grid, obtain a matrix with z-values using your function F and just plot:
[R PHI] = meshgrid(r,phi);
Z = F(R,PHI); % which assumes your function is vectorized
surf(R.*cos(PHI), R.*sin(PHI), Z);
More Answers (2)
Matt J
on 17 Nov 2012
Use TriScatteredInterp to interpolate your data onto a cartesian grid. Then plot using SURF as usual.
0 Comments
Teja Muppirala
on 19 Nov 2012
You can use POL2CART to convert the data from r/theta to x/y and then call SURF.
[R,TH] = ndgrid(0:0.1:5,linspace(0,2*pi,41));
F = @(r,th) sin(th).*sinc(1+r);
Z = F(R,TH);
[X,Y] = pol2cart(TH,R);
surf(X,Y,Z);
0 Comments
See Also
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!