MATLAB: Conversion from Cartesian X,Y,Z to domain-centric cylindrical coordinates

cartesian to cylindrical

I just have a question on the conversion from Cartesian X,Y,Z to domain-centric cylindrical coordinates. I have a computed variable, an energy flux term, say F.
Currently, F is a function of x,y,z. Here, the x,y,and z are not lat-Lon values but are more like indices. For example, the grid has 480 grids in the X and Y direction with a spacing of 1km each. So I simply define X as 1000 to 480,000 in increments of 1000 (meters). Y and X are the same since the grid is uniform. I use actual Z values which are non-uniform.
What I’d like to do is to transform this variable, F into r,theta,z coordinates with reference to the domain center. What is the best way to do this in Matlab?

Best Answer

  • % example data
    X = 1000:1000:480000;
    Y = X;
    Z = sort(rand(size(X)));
    Domain_Center = [mean(X([1 end])) mean(Y([1 end])) mean(Z([1 end]))]
    % compute Cylindrical coordinates
    [theta,rho,z] = cart2pol(X-Domain_Center(1),Y-Domain_Center(2),Z - Domain_Center(3));
    % F = F