Accelerating the pace of engineering and science

# 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?