Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

atan2

四象限反正切

说明

P = atan2(Y,X) 返回 YX四象限反正切 (tan-1),该值必须为实数。atan2 函数遵循当 x 在数学上为零(或者为 0-0)时 atan2(x,x) 返回 0 的约定。

示例

示例

全部折叠

计算点 y = 4x = -3 的四象限反正切。

atan2(4,-3)
ans = 2.2143

4 + 3i 转换为极坐标。

z = 4 + 3i;
r = abs(z)
r = 5
theta = atan2(imag(z),real(z))
theta = 0.6435

半径 r 和角 theta4 + 3i 的极坐标表示形式。

或者,使用 angle 计算 theta

theta = angle(z)
theta = 0.6435

rtheta 转换回原始复数。

z = r*exp(i*theta)
z = 4.0000 + 3.0000i

绘制 atan2(Y,X)(对于 -4<Y<4-4<X<4)。

定义要在其上绘制的区间。

[X,Y] = meshgrid(-4:0.1:4,-4:0.1:4);

计算 atan2(Y,X) 在此区间上的值。

P = atan2(Y,X);

使用 surf 生成函数的曲面图。请注意,plot 绘制存在于 Y=0 的不连续性(对于所有 X<0)。

surf(X,Y,P);
view(45,45);

输入参数

全部折叠

y 坐标,指定为标量、向量、矩阵、多维数组、表或时间表。输入 YX 必须具有相同的大小或具有兼容的大小(例如,Y 是一个 M×N 矩阵,X 是标量或 1×N 行向量)。有关详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | table | timetable

x 坐标,指定为标量、向量、矩阵、多维数组、表或时间表。输入 YX 必须具有相同的大小或具有兼容的大小(例如,Y 是一个 M×N 矩阵,X 是标量或 1×N 行向量)。有关详细信息,请参阅基本运算的兼容数组大小

数据类型: single | double | table | timetable

详细信息

全部折叠

四象限反正切

四象限反正切 atan2(Y,X) 基于图形中所示的 YX 的值返回闭区间 [–π, π] 中的值。

Values returned by atan2(Y,X). For negative X and negative Y, atan2(Y,X) returns values in the interval (–π, –π/2). For positive X and negative Y, atan2(Y,X) returns values in the interval (–π/2, 0). For positive X and positive Y, atan2(Y,X) returns values in the interval (0, π/2). For negative X and positive Y, atan2(Y,X) returns values in the interval (π/2, π)

相比之下,atan(Y/X) 返回的结果仅限于区间 [–π/2, π/2],如图的右侧所示。

IEEE 合规性

对于实数输入,atan2 的一些行为不同于 IEEE®-754 标准中推荐的行为。

  MATLAB® IEEE
atan2(0,-0)

0

pi

atan2(-0,-0)

0

-pi

扩展功能

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| | | |