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