2016-09-23 511 views
0

我在整个转换过程中将笛卡儿转换为极坐标,然后返回到笛卡尔以确认我的初始转换成功。将笛卡尔坐标转换为极坐标 - Matlab

但是,由于某些原因,当我从第三象限转换回极坐标的笛卡尔坐标时,我的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 

回答

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); 
+3

而且更容易的是,'help cart2pol','help pol2cart',除非是他的任务。 – Jeon

+0

谢谢,这工作得很好,并极大地缩短了我的剧本!我唯一需要做的就是从360中减去负角度,一旦复制并粘贴到Excel中以获得与我的其余数据匹配的正角度。 – user1574598

相关问题