将笛卡尔坐标转换为极坐标 - Matlab

时间:2016-09-23 19:01:06

标签: matlab polar-coordinates cartesian-coordinates

我在整个转换过程中遇到问题,将笛卡尔转换为Polar,然后回到笛卡尔以确认我的初始转换是否成功。

但是,出于某种原因,当我使用第三象限的极坐标转换回笛卡尔坐标时,我的xy值是错误的。

以我的代码的这部分为例:

x = -2.075548439;
y = -2.481775416;

if x < 0 && y < 0 % QUAD 3

    radius = sqrt( (x^2) + (y^2) );
    theta = atand( (y*-1)/(x*-1) );
    theta = (270 - theta);
end

x = radius * cosd(theta); 
y = radius * sind(theta);

% answer: x = -2.481775416, and y = -2.075548439

其他三个象限内的所有其他xy次转换都会使xy按正确顺序重新启用。

然而,这部分代码确实将xy按正确的顺序放回来了:

x = 3.130287009;
y = -0.50613326;

if x > 0 && y < 0 % QUAD 4

    radius = sqrt( (x^2) + (y^2) );
    theta = atand( (y*-1)/(x) );
    theta = (360 - theta);
end

x = radius * cosd(theta); 
y = radius * sind(theta);

% answer: x = 3.130287009, and y = -0.50613326

1 个答案:

答案 0 :(得分:0)

您无需检查特殊情况。以下代码正确地将笛卡尔转换为极坐标,用于任何象限中的点。

x = -2.075548439;
y = -2.481775416;

radius = sqrt( (x^2) + (y^2) );
theta = atan2d( y, x );

x = radius * cosd(theta); 
y = radius * sind(theta);