我想将笛卡尔系统中给出的一些点坐标转换为对数极坐标笛卡尔系统。
但是,我不确定如何很好地执行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 :(得分:3)
我会做
[THETA,RHO] = cart2pol(X,Y)
RHO=log(RHO)
答案 1 :(得分:2)
使用atan2()为您完成所有这些艰苦的工作。