怎么在matlab里编一个程序,把直角坐标的点 转换成 极坐标的点

数字转换, 比如 输入直角坐标的点(x,y) 然后输出的是其在极坐标中 点的坐标(r,theta)

首先,matlab 本身提供了把直角坐标转化为极坐标的函数 cart2pol。调用方法为:

[TH,R] = cart2pol(X,Y)  TH 是极坐标的角度坐标,R 是距离坐标。

[TH,R,Z] = cart2pol(X,Y,Z) 这个函数同时支持3维直角坐标到柱坐标的转换。


如果因为是作业或者练习,一定要自己写一个的话,请继续往下看。

考虑到这个程序的性质,编成一个函数比较适合。编写这个函数需要用到直角坐标与极坐标的数学关系。考虑到输入参数可能是一个向量或矩阵,关系式里面的运算符应该用加点运算符。


函数代码如下:

function [ TH,R ] = mycart2pol(X,Y)

%this function transforms corresponding elements of data

%stored in Cartesian coordinates X,Y to polar coordinates

%angle TH and radius R.

R=(X.^2+Y.^2).^0.5;

TH=atan(Y./X);

end


测试结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-22
有现成的函数啊:
[theta,r] = cart2pol(x,y);

如果一定要自己写:
theta = atan2(y,x);
r = sqrt(x.^2+y.^2);
第2个回答  2018-07-06
atan返回值属于-pi/2到pi/2之间,所以这个答案的程序是有bug的,建议采用自带的函数,当然已采纳答案的思路还是很不错的