How do you create a surf plot in cylindrical coordinates?
96 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Akzeptierte Antwort
Jonathan Epperl
am 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);
Weitere Antworten (2)
Matt J
am 17 Nov. 2012
Use TriScatteredInterp to interpolate your data onto a cartesian grid. Then plot using SURF as usual.
0 Kommentare
Teja Muppirala
am 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 Kommentare
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!