2010-11-13 131 views
0

我想將在笛卡爾系統中給出的一些點座標轉換爲對數極座標系。從直角座標轉換到對數極座標

但是,我不確定如何很好地執行atan操作。

目前,我做了如下,這似乎是非常醜陋的。

Xlp = zeros(n, 2); 
    Xlp(:, 1) = log(sqrt(Xt(:, 1).^2 + Xt(:, 2).^2)); 
    sel = Xlp(:, 1) >= 0 && Xlp(:, 2) >= 0; 
    Xlp(sel, 2) = atan(Xt(sel, 2)/Xt(sel, 1)); 
    sel = Xlp(:, 1) >= 0 && Xlp(:, 2) < 0; 
    Xlp(sel, 2) = repmat(2*pi, size(sel), 1) + atan(Xt(sel, 2)/Xt(sel, 1)); 
    sel = Xlp(:, 1) < 0 && Xlp(:, 2) >= 0; 
    Xlp(sel, 2) = repmat(pi, size(sel), 1) + atan(Xt(sel, 2)/Xt(sel, 1)); 
    sel = Xlp(:, 1) < 0 && Xlp(:, 2) < 0; 
    Xlp(sel, 2) = repmat(pi, size(sel), 1) + atan(Xt(sel, 2)/Xt(sel, 1)); 

輸入點位於Xt中,第一列爲X座標值,第二列爲Y座標值。 Xlp包含對應於距離的第一列和對應於角度的第二列給出的對數座標。

+0

在此實現中有笛卡爾座標和極座標:http://www.mathworks.com/matlabcentral/fileexchange/29117-mouse-activity-tracking – 2011-01-08 08:34:05

回答

2

使用atan2()爲您做所有這些辛苦的工作。

3

我做

[THETA,RHO] = cart2pol(X,Y) 
RHO=log(RHO)