Unwrap the phase of the phase spectrum.
function PhaseUnwrap(const Src: TVec; const Dst: TVec; RunningPhase: TRunningPhase; ActualZeroPadding: double = 1; Radians: boolean = false; Tolerance: double = 180): double;
The phase spectrum in Src is unwrapped and the result is placed in Dst. RunningPhase defines how the unwrapped phased will be further processed. Tolerance defines the maximum change allowed between consecutive values, before the 360 (or 2*Pi) degrees is added (or subtracted). Tolerance must always be specified in degrees.
If radians is True, the Src should contain the phase spectrum in radians, otherwise in degrees. If the time signal was padded with zeros, the ActualZeroPadding should hold the ratio: LengthAfterZeroPadding/LengthBeforeZeroPadding. ActualZeroPadding factor is needed to accurately determine the total phase delay. If phase delay is not an issue the ActualZeroPadding factor can be set to 1.
The Src may not have central spectrum element as its last value. If the phase spectrum was obtained from FFT on a real data, the vector must be subranged before passed to the phase unwrapping routine.
Phase unwrapping is extensively discussed in [1] (p. 790), especially because of its application in complex cepstrum estimation.
References:
[1] Discrete-time signal processing, Oppenheim and Schafer, Prentice-Hall, 1989.
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
|
What do you think about this topic? Send feedback!
|