Преобразование из декартовых координат в лог-полярные координаты - PullRequest
0 голосов
/ 13 ноября 2010

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

Однако я не уверен, как правильно выполнить операцию 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 содержит логополярные координаты, заданные в качестве первого столбца, соответствующего расстоянию, и второго столбца, соответствующего углу.

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

Я бы сделал

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

2 голосов
/ 13 ноября 2010

Используйте atan2 () , чтобы выполнить всю эту тяжелую работу за вас.

...