maxframe.tensor.arctan2#
- maxframe.tensor.arctan2(x1, x2, out=None, where=None, **kwargs)[源代码]#
逐元素计算
x1/x2的反正切值,并正确选择象限。选择象限(即分支),使得
arctan2(x1, x2)是以弧度为单位的有符号角度,该角度介于从原点出发经过点 (1,0) 的射线与从原点出发经过点 (x2, x1) 的射线之间。(注意角色互换:第一个函数参数是 "y 坐标",第二个是 "x 坐标"。)根据 IEEE 规范,此函数在 x2 = +/-0 以及 x1 和/或 x2 = +/-inf 时有定义(具体值见注释)。此函数不适用于复数值参数;对于复数值的所谓幅角,请使用 angle。
- 参数:
x1 (array_like, real-valued) -- y 坐标。
x2 (array_like, real-valued) -- x 坐标。x2 必须可以广播以匹配 x1 的形状,反之亦然。
out (Tensor, None, or tuple of Tensor and None, optional) -- 用于存储结果的位置。如果提供,它必须具有输入广播后的形状。如果未提供或为 None,则返回一个新分配的 tensor。元组(只能作为关键字参数)的长度必须等于输出的数量。
where (array_like, optional) -- 值为 True 表示在该位置计算 ufunc,值为 False 表示保留输出中的原值。
**kwargs
- 返回:
angle -- 以弧度为单位的角度数组,范围为
[-pi, pi]。- 返回类型:
Tensor
备注
arctan2 与底层 C 库的 atan2 函数相同。以下特殊值在 C 标准中定义:[1]
x1
x2
arctan2(x1,x2)
±0
+0
±0
±0
-0
±π
> 0
±∞
+0 / +π
< 0
±∞
-0 / -π
±∞
+∞
±(π/4)
±∞
-∞
±(3π/4)
注意 +0 和 -0 是不同的浮点数,+inf 和 -inf 也是如此。
引用
示例
考虑四个位于不同象限的点:>>> import maxframe.tensor as mt
>>> x = mt.array([-1, +1, +1, -1]) >>> y = mt.array([-1, -1, +1, +1]) >>> (mt.arctan2(y, x) * 180 / mt.pi).execute() array([-135., -45., 45., 135.])
请注意参数的顺序。arctan2 在 x2 = 0 时以及其他一些特殊点处也有定义,其值在
[-pi, pi]范围内:>>> mt.arctan2([1., -1.], [0., 0.]).execute() array([ 1.57079633, -1.57079633]) >>> mt.arctan2([0., 0., mt.inf], [+0., -0., mt.inf]).execute() array([ 0. , 3.14159265, 0.78539816])