Group Delay and Phase Delay
The group delay of a filter is a measure of the average time delay of the filter as a function of frequency. The group delay is defined as the negative first derivative of the filter's phase response. If the complex frequency response of a filter is , then the group delay is
,
where is the continuous (unwrapped) phase of .
The phase delay of a filter is defined as the negative of the phase divided by the frequency:
.
FIR Filters
The complex frequency response of an order-linear-phase FIR filter can be expressed as , where is the amplitude. This table defines the phase, group delay, and phase delay.
Specification | Definition | Function |
|---|---|---|
Phase | ||
Group delay | ||
Phase delay |
For a linear-phase FIR filter, the group delay is constant over the entire frequency range. However, the phase delay is constant only at the frequencies where is positive.
Verify that a fourth-order FIR filter with a symmetric vector of coefficients has linear phase.
fs = 2000; fc = 200; N = 4; b = fir1(N,fc/(fs/2))
b = 1×5
0.0284 0.2370 0.4692 0.2370 0.0284
islinphase(b)
ans = logical
1
Use the grpdelay function to compute group delay of a filter. The group delay is one-half the filter order.
grpdelay(b,1,[],fs)

Use the phasedelay function to compute the phase delay of a filter. For this linear-phase FIR filter, the phase delay and group delay are constant over the entire frequency range.
phasedelay(b,1,[],fs)

IIR Filters
A linear phase response imposes the constraint , where . To satisfy this constraint, an IIR filter would require to have poles outside the unit circle, which makes the filter unstable. Therefore, IIR filters do not have a linear phase.
Verify that a fourth-order Butterworth lowpass filter does not have linear phase.
[b,a] = butter(N,fc/(fs/2)); islinphase(b,a)
ans = logical
0
Plot the group delay and the phase delay of the Butterworth lowpass filter. Since IIR filters lack linear phase, the group delay and phase delay are not constant over frequency. Also, the maxima in the group delay and phase delay plots are located around the filter cutoff frequency.
grpdelay(b,a,[],fs)

phasedelay(b,a,[],fs)
