| Signal Processing Toolbox | ![]() |
Average filter delay (group delay)
Syntax
grpdelay(b,a) [gd,w]=grpdelay(b,a,n) [gd,f]=grpdelay(b,a,n,fs) [gd,w]=grpdelay(b,a,n,'whole') [gd,f]=grpdelay(b,a,n,'whole',fs) gd=grpdelay(b,a,w) gd=grpdelay(b,a,f,fs) grpdelay(Hd)
Description
The group delay of a filter is a measure of the average delay of the filter as a function of frequency. It is the negative first derivative of the phase response of the filter. If the complex frequency response of a filter is
, then the group delay is
where
is frequency and
is the phase angle of
.
grpdelay(b,a)
with no output arguments plots the group delay versus frequency in the current figure window.
[gd,w] returns the = grpdelay(b,a,l)
i-point group delay,
, of the digital filter
given the numerator and denominator coefficients in vectors b and a. grpdelay returns both gd, the group delay, and w, a vector containing the n frequency points in radians. grpdelay evaluates the group delay at n points equally spaced around the upper half of the unit circle, so w contains n points between 0 and
.
[gd,f] specifies a positive sampling frequency = grpdelay(b,a,n,fs)
fs in hertz. It returns a length n vector f containing the actual frequency points at which the group delay is calculated, also in hertz. f contains n points between 0 and fs/2.
[gd,w] and = grpdelay(b,a,n,'whole')
[gd,f] use = grpdelay(b,a,n,'whole',fs)
n points around the whole unit circle (from 0 to 2
, or from 0 to fs).
gd return the group delay evaluated at the points in = grpdelay(b,a,f,fs)
w (in radians) or f (in hertz), respectively, where fs is the sampling frequency in hertz.
grpdelay(Hd)
plots the group delay and displays the plot in fvtool. The input Hd is a dfilt filter object or an array of dfilt filter objects.
grpdelay works for both real and complex filters.
Examples
Plot the group delay of Butterworth filter b(z)/a(z):
The same example using a dfilt object and displaying the result in the Filter Visualization Tool (fvtool) is
Plot both the group and phase delays of a system on the same graph:
gd=grpdelay(b,a,512); gd(1)=[]; % Avoid NaNs [h,w]=freqz(b,a,512); h(1)=[]; w(1)=[]; pd=-unwrap(angle(h))./w; plot(w,gd,w,pd,':') xlabel('Frequency (rad/sec)'); grid; legend('Group Delay','Phase Delay');
Algorithm
grpdelay multiplies the filter coefficients by a unit ramp. After Fourier transformation, this process corresponds to differentiation.
See Also
cceps, fft, freqz, hilbert, icceps, rceps
| goertzel | hamming | ![]() |
© 1994-2005 The MathWorks, Inc.