MATLAB函数atan2与atan的区别,angle、unwrap

一 atan 和 atan2

理解一: 

atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2);

那么这两个点形成的斜率的角度计算方法分别是:

float angle = atan( (y2-y1)/(x2-x1) );

float angle = atan2( y2-y1, x2-x1 );

 atan 和 atan2 区别:

1:参数的填写方式不同;

2:atan2 的优点在于 如果 x2-x1等于0 依然可以计算,但是atan函数就会导致程序出错;

理解二:

tan(θ) = y / x

θ = atan(y / x)求出的θ取值范围是[-PI/2, PI/2]。

θ = atan2(y, x)求出的θ取值范围是[-PI, PI]。

  • 当 (x, y) 在第一象限, 0 < θ < PI/2.

  • 当 (x, y) 在第二象限 PI/2 < θ≤PI.

  • 当 (x, y) 在第三象限, -PI < θ < -PI/2.

  • 当 (x, y) 在第四象限, -PI/2 < θ < 0.

当点(x, y)在象限的边界也就是坐标轴上时:

  • 当 y 是 0,x 为非负值, θ = 0.

  • 当 y 是 0, x 是 负值, θ = PI.

  • 当 y 是 正值, x 是 0, θ = PI/2.

  • 当 y 是 负值, x 是 0, θ = -PI/2.

由此可知,一般情况下用atan即可,当对所求出角度的取值范围有特殊要求时,应使用atan2。

二、angle

相位角

  1. 语法
    P =angle(Z)
  2. 描述
    P = angle(Z)返回复数数组Z的每个元素的相角(以弧度为单位)。角度介于±π之间。
  3. 对于复数Z,幅值R和相角theta由下式给出
    R =绝对值(Z)
    θ=角度(Z)
  4. 可以根据
    Z = R. * exp(i * theta)转换回原始复数Z。
  5. 例子
    矩阵元素的相角
    创建一个复数值矩阵,并计算每个元素的相角。
    Z = [1-1 i  2 + 1i  3-1i   4 + 1i
           1 + 2i 2-2i 3 + 2i 4-2i
           1-3i 2 + 3i 3-3i 4 + 3i
           1 + 4i 2-4i 3 + 4i 4-4i];
  6. P= angle(Z)
    P = 4×4

   -0.7854 0.4636 -0.3218 0.2450
    1.1071 -0.7854 0.5880 -0.4636
   -1.2490 0.9828 -0.7854 0.6435
    1.3258 -1.1071 0.9273 -0.7854

  1. 算法
    角度函数采用复数z = x + iy并计算atan2(y,x)来找到在xy平面上在正x轴和从原点到点(x,y)的射线之间形成的角度。这个相位角也是复数对数的虚部,因为

三 unwrap

1、什么是unwrap

要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一、二象限中的角度为0~pi,三四象限的角度为0~-pi。若一个角度从0变到2pi,但实际得到的结果是0~pi,再由-pi~0,在w=pi处发生跳变,跳变幅度为2pi,这就叫相位的卷绕。unwrap(w)就是解卷绕,使相位在pi处不发生跳变,从而反应出真实的相位变化。

2、unwrap功能

unwrap功能检查出数据相位跳变,并纠正跳变,实际上在检查是否跳变的时候是有个标准unwrap(pha,tol),这个tol就是标准,在默认的情况下,这个标准是pi,也就是说unwrap在检查到数据前后两点的差距在超过tol的时候,就认为有跳变。然后就会处理数据,让后面的数据加2pi或者减2pi是数据连续。大部分情况下使用pi这个标准都比较合适,所以第二个参数可以缺省,特殊情况下是可以通过设置tol调整鉴别标准。
3、unwrap使用

unwrap函数不单能对数列作用,还能对矩阵作用,实现对矩阵每一行或者每一列实施相位矫正,所以完整的格式是unwrap(pha,tol,dim)。最后一个参数dim表示需要对矩阵的行,还是列进行unwrap操作。如果对列每一列操作,那么第三个参数可以缺省而要对每一行操作,那么第三个参数填2。比如,unwrap(pha,[],2)表示对矩阵phi中的相位数据,每一行实施相位矫正,使用默认的检测跳变标准。

 

4、 unwrap

  1. unwrap
    校正相位角以产生更平滑的相位图
  2. 句法
    Q =unwrap(P)
    Q =unwrap(P,tol)
    Q =unwrap(P,[ ],dim)
    Q =unwrap(P,tol,dim)
  3. 描述
    当P的连续元素之间的绝对跳变大于或等于π弧度的默认跳变公差时,
    Q = unwrap(P)通过添加±2π的倍数来校正矢量P中的弧度相位角。
    如果P是矩阵,则展开,操作按列进行。
    如果P是多维数组,则展开,将在第一个非单维度上进行。
  4. Q = unwrap(P,tol)使用跳跃公差tol而不是默认值π。
    Q = unwrap(P,[],dim)使用默认公差沿暗角展开。
    Q = unwrap(P,tol,dim)使用tol的跳跃公差。

以下相位数据来自三阶传递函数的频率响应。 相位曲线从-1.8621到1.7252在w = 3.0和w = 3.5之间跃迁3.5873弧度。

  • 7
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 在Matlab中,atan2函数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: MATLAB中的atan2函数与actan函数都是与反正切函数有关的函数,但是它们的用途和表现形式略有不同。 首先,MATLAB中的atan2函数是反正切函数的一种实现,它可以计算给定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函数则适用于计算给定实数的反正切函数值,但由于其运算公式的特殊性质,其输入值要谨慎考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

倒鸡毛的臭小子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值