matlab中的tan inverse没有给出正确的值

时间:2017-04-02 03:37:28

标签: matlab trigonometry inverse atan2

作为较长代码的一部分,我得到一个数量为phi1和phi2(大小为128x128的矩阵),它们是复数的参数。现在我在MATLAB中定义以下数量:

alpha=phi1-phi2;
S1=cos(alpha);
S2=sin(alpha);
K=atan2(S2,S1);

现在,K应该等于alpha。因此,矩阵B定义为:

B=K-alpha;

应为零。但结果是不同的。虽然B的几个元素为零,但它们中的许多元素的值为6.2832(即2pi)。 为什么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

atan2函数始终为returns values between -pi and pi。例如,对于alpha = 4您的代码

S1=cos(alpha);
S2=sin(alpha);
K=atan2(S2,S1)

给出

K =
  -2.2832

alpha但已移动(模2*pi}到-pipi之间的间隔。

这不应该是一个问题,因为2*pi不同的两个角度实际上是相同的。因此,一种可能的解决方案是通过减法模2*pi来比较角度:

>> mod(alpha-K, 2*pi)
ans =
     0

另请注意,由于numerical rounding errors,您不应该依赖模2*pi的差异0。相反,将其绝对值与给定的容差进行比较。

相关问题