MATLAB函数angle、unwrap

一、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

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

二、unwrap功能

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

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

二、 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弧度。

w = [0:.2:3,3.5:1:10]; 
p = [    0
     -1.5728
     -1.5747
     -1.5772
     -1.5790
     -1.5816
     -1.5852
     -1.5877
     -1.5922
     -1.5976
     -1.6044
     -1.6129
     -1.6269
     -1.6512
     -1.6998
     -1.8621
      1.7252
      1.6124
      1.5930
      1.5916
      1.5708
      1.5708
      1.5708 ];
semilogx(w,p,'b*-'), hold 

使用unwrap来校正相角,得到的跳跃为2.6959,小于默认的跳跃公差π。 该图将新曲线绘制在原始曲线上。

Example 2

Array P features smoothly increasing phase angles except for discontinuities at elements (3,1) and (1,2).

P = [      0    7.0686    1.5708    2.3562
      0.1963    0.9817    1.7671    2.5525
      6.6759    1.1781    1.9635    2.7489
      0.5890    1.3744    2.1598    2.9452 ]

The function Q = unwrap(P) eliminates these discontinuities.

Q =
           0    7.0686    1.5708    2.3562
      0.1963    7.2649    1.7671    2.5525
      0.3927    7.4613    1.9635    2.7489
      0.5890    7.6576    2.1598    2.9452
发布了38 篇原创文章 · 获赞 73 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/woshiyuzhoushizhe/article/details/102498565
今日推荐