Documentation Center

  • Trial Software
  • Product Updates

unwrap

Correct phase angles to produce smoother phase plots

Syntax

Q = unwrap(P)
Q = unwrap(P,tol)
Q = unwrap(P,[],dim)
Q = unwrap(P,tol,dim)

Description

Q = unwrap(P) corrects the radian phase angles in a vector P by adding multiples of ±2π when absolute jumps between consecutive elements of P are greater than or equal to the default jump tolerance of π radians. If P is a matrix, unwrap operates columnwise. If P is a multidimensional array, unwrap operates on the first nonsingleton dimension.

Q = unwrap(P,tol) uses a jump tolerance tol instead of the default value, π.

Q = unwrap(P,[],dim) unwraps along dim using the default tolerance.

Q = unwrap(P,tol,dim) uses a jump tolerance of tol.

    Note   A jump tolerance less than π has the same effect as a tolerance of π. For a tolerance less than π, if a jump is greater than the tolerance but less than π, adding ±2π would result in a jump larger than the existing one, so unwrap chooses the current point. If you want to eliminate jumps that are less than π, try using a finer grid in the domain.

Examples

Example 1

The following phase data comes from the frequency response of a third-order transfer function. The phase curve jumps 3.5873 radians between w = 3.0 and w = 3.5, from -1.8621 to 1.7252.

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 

Using unwrap to correct the phase angle, the resulting jump is 2.6959, which is less than the default jump tolerance π. This figure plots the new curve over the original curve.

semilogx(w,unwrap(p),'r*-')

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

See Also

|

Was this topic helpful?