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 包含对数极坐标,第一列对应于距离,第二列对应于角度。

4

2 回答 2

3

我会做

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

?

于 2010-11-14T12:13:28.390 回答
2

使用atan2()为您完成所有这些艰苦的工作。

于 2010-11-13T11:57:37.213 回答