How do you create a surf plot in cylindrical coordinates?
조회 수: 44 (최근 30일)
이전 댓글 표시
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
채택된 답변
Jonathan Epperl
2012년 11월 19일
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);
추가 답변 (2개)
Matt J
2012년 11월 17일
Use TriScatteredInterp to interpolate your data onto a cartesian grid. Then plot using SURF as usual.
댓글 수: 0
Teja Muppirala
2012년 11월 19일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Surface and Mesh Plots에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!