2016-09-23 12 views
0

У меня возникла проблема на протяжении всего процесса преобразования преобразования декартовых в Полярный, а затем обратно в декартово, чтобы подтвердить, что мое первоначальное преобразование было успешным.Преобразование декартовых координат в полярные координаты - Matlab

Но по какой-то причине, когда я возвращаюсь обратно в декартовы координаты с полярными координатами из третьего квадранта, значения x и y - это неправильный путь.

Возьмите эту часть моего кода, например:

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 

Все остальные x и y преобразования, которые попадают в трех других квадрантах поставил x и y обратно в правильном порядке.

Эта часть кода, однако, не поставил x и y обратно в правильном порядке:

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