MATLAB中atan与atan2角度讲解

atan2求的是一个点所对应的角的大小 ,且输出角度范围是【-π, π】
atan求的是一个数值对应的角,且输出角度范围是【-π/2, π/2】

例如:
atan(1)=0.7854
atan(1,1)=0.7854

https://i-blog.csdnimg.cn/blog_migrate/ce49ba0579cb9387a0bcdc9fe1b71599.png

c1 = atan2(sqrt(3), 3)*180/pi;    % result = 30    点(3, sqrt(3))
c2 = atan2(sqrt(3), 1)*180/pi;    % result = 60    点(1, sqrt(3))
c3 = atan2(-sqrt(3), 1)*180/pi;   % result = -60   点(1, -sqrt(3))
c4 = atan2(-sqrt(3), 3)*180/pi;   % result = -30   点(3, -sqrt(3))
c31 = atan2(sqrt(3), -1)*180/pi;  % result = 120   点(-1, sqrt(3))
c41 = atan2(sqrt(3), -3)*180/pi;  % result = 150   点(-3, sqrt(3))
c5 = atan2(-sqrt(3), -3)*180/pi;  % result = -150  点(-3, -sqrt(3))
c6 = atan2(-sqrt(3), -1)*180/pi;  % result = -120  点(-1, -sqrt(3))
c7 = atan2(-sqrt(3), 3)*180/pi;   % result = -30   点(3, -sqrt(3))
c8 = atan2(-sqrt(3), 1)*180/pi;   % result = -60   点(1, -sqrt(3))

https://i-blog.csdnimg.cn/blog_migrate/99e8b273eaae4caf6597e9b3da34c775.png

注意以下说明中均针对点(b, a),注意atan2使用时参数的先后顺序为a,b

atan2(a,b)是4象限反正切,它的取值不仅取决于正切值a/b,还取决于点 (b, a) 落入哪个象限
当点(b, a) 落入第一象限时,atan2(a,b)的范围是  0 ~ pi/2;
 当点(b, a) 落入第二象限时,atan2(a,b)的范围是  pi/2 ~ pi;
   当点(b, a) 落入第三象限时,atan2(a,b)的范围是  -pi/2~0;
 当点(b, a) 落入第四象限时,atan2(a,b)的范围是 -pi~-pi/2


而 atan(a/b) 仅仅根据正切值为a/b求出对应的角度 (可以看作仅仅是2象限反正切)
   当 a/b > 0 时,atan(a/b)取值范围是 0 ~ pi/2;
   当 a/b < 0 时,atan(a/b)取值范围是 -pi/2~0


故 atan2(a,b) = atan(a/b) 仅仅发生在 点 (b, a) 落入第一象限 (b>0, a>0)或 第三象限(b>0, a<0)。

当点 (b, a) 落入第二、三象限时,很显然atan2(a,b) 不等于 atan(a/b) ,并且atan2(a,b)也不可能等于 2*atan(a/b) 。

 

 

https://i-blog.csdnimg.cn/blog_migrate/ce49ba0579cb9387a0bcdc9fe1b71599.png      https://i-blog.csdnimg.cn/blog_migrate/ce49ba0579cb9387a0bcdc9fe1b71599.png

              (a)常用坐标系                         (b)图像坐标系(顺时针旋转90°)

针对不同坐标系角度变化问题:

(1)可以只记住常用坐标系下(MATLAB默认的计算atan、atan2的坐标系)的atan、atan2角度取值方式,见图(a)。其他坐标系的角度取值方式就是在图(a)坐标系下的旋转、对称等变换。如图(b)就是由默认坐标系图(a)经顺时针旋转90°(π/2)得到,即原坐标系+(π/2)得到,对于+(π/2)超出[-π, π]的情况,只需再在此基础上±2π即可,(图(a)除了左上角那个象限需+π/2-2π外,其他象限只需+π/2,但三角函数计算时(α+π/2-2π) = (α+π/2),因此进行方向合成时无需±2π)。

(2)在图(b)坐标系下计算atan、atan2时,只需利用图(b)坐标系下的dx、dy或点坐标,直接使用atan、atan2函数计算,计算得到的结果是图(b)坐标系下的弧度值。由此结果再逆时针旋转90°(减去π/2),即得到图(a)坐标系下的弧度值。

(3)同理,也可在图(a)坐标系下的dx、dy或点坐标,使用atan、atan2函数计算,此结果再顺时针旋转90°(π/2)即可得到图(b)坐标系下的弧度值。

(4)另外,针对求沿某特定方向的倾斜、曲率问题,只需将沿某坐标系下的x、y轴正方向的倾斜、曲率与该坐标系下所求特定方向的角度,利用方向合成公式计算即可。

  • 21
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在Matlabatan2函数和atan函数都是用于计算反正切函数的函数。不同之处在于,atan2接受两个参数,并返回以弧度为单位的角度,范围在-pi到pi之间。而atan函数仅接受一个参数并返回以弧度为单位的角度,范围在-pi/2到pi/2之间。 ### 回答2: matlabatan2函数和actan都是用来求反正切函数的函数。但是,在使用时两者有一些不同之处。 首先,actan只能求一个参数的反正切函数,即输入一个实数,输出其反正切值,而atan2可以求两个参数的反正切函数。具体来说,atan2(x,y)可以求解的是以原点为顶点,通过(x,y)这个点的角度;而actan函数只能求解以原点为顶点的角度。 其次,在计算时,actan函数只能输入一个实数x,其返回值是在-π/2到π/2之间的一个实数值,表示正切值为x的角度值;而在计算atan2(x,y)时,其输入参数是两个实数x和y,其返回值是在-π到π之间的实数值,表示以原点为顶点,经过点(x,y)的角度值。这样,atan2函数可以更加全面地表示出一个向量的方向,而actan则只能表示同一象限内的角度。 最后,需要注意的是,在计算时,actan函数需要输入实数,并且其返回值是弧度值。而atan2函数则可以输入实数或向量,并且其返回值也是弧度值。如果需要得到以度数表示的结果,需要将返回值乘以180/pi。 ### 回答3: MATLABatan2函数与actan函数都是与反正切函数有关的函数,但是它们的用途和表现形式略有不同。 首先,MATLABatan2函数是反正切函数的一种实现,它可以计算给定y坐标和x坐标的点的反正切值,返回的结果是[-π,π]的弧度值。与普通的atan函数不同的是,atan2函数可以处理x坐标等于0的点,而普通的atan函数不能处理这样的点。例如,若有一个点P(0,-1),则使用atan函数计算时会发生错误,而atan2函数则可以正确地计算出该点的反正切值。 其次,MATLAB的actan函数是反正切函数的一种变形,它的输入是一个实数x,返回的结果是[-π/2,π/2]的弧度值。该函数的计算公式为:actan(x) = atan(1/x)。因此,如果输入的x为0,那么actan函数将会返回无穷大,如果输入的x为负值,则actan函数返回的结果将会是一个负值。 总的来说,在MATLAB使用atan2函数可以更加方便地计算平面直角坐标系角度,特别是在处理x坐标为0的点时非常实用,而actan函数则适用于计算给定实数的反正切函数值,但由于其运算公式的特殊性质,其输入值要谨慎考虑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值