iirgrpdelay (Digital Filter Design Toolkit, MathScript Function)
Owning Class: singlerate
Syntax
[b, a] = iirgrpdelay(n, f, e, grd)
[b, a] = iirgrpdelay(n, f, e, grd, w)
[b, a] = iirgrpdelay(n, f, e, grd, w, r)
[b, a, offset] = iirgrpdelay(n, f, e, grd)
[b, a, offset] = iirgrpdelay(n, f, e, grd, w)
[b, a, offset] = iirgrpdelay(n, f, e, grd, w, r)
Description
Designs an allpass, infinite impulse response (IIR) filter that approximates the group delay you specify.
Inputs
Name | Description |
n | Specifies the order of the filter. n is an even, positive integer. |
f | Specifies the frequency points. f is a vector whose values increase monotonically between 0 and 1. |
e | Specifies the band edge frequencies. e is a vector whose values must also exist in f. |
grd | Specifies the group delay at f. grd is a vector of the same length as f. |
w | Specifies the weight of each frequency point. w is a vector of the same length as f. The default is a vector in which each element has a value of 1. |
r | Specifies the maximum value of the radius of any filter pole. r is a double-precision, floating-point number that must fall in the range (0, 1). The default is 0.9999. |
Outputs
Name | Description |
b | Returns the numerator of the designed IIR filter. b is a real vector with a length of n+1. |
a | Returns the denominator of the designed IIR filter. a is a real vector with a length of n+1. |
offset | Returns the group delay offset, which is the difference between the specified group delay and the approximated group delay. offset is a double-precision, floating-point number greater than zero. |
Examples
[b, a] = iirgrpdelay(10, [0, 0.4], [0, 0.4], [9, 0]);figure;
grpdelay(b, a);
[b0, a0] = ellip(7, 0.1, 60, 0.5);
f = [0:0.4/256:0.4];
grd0 = grpdelay(b0, a0, f*pi);
[b, a] = iirgrpdelay(6, f, [0, 0.4], max(grd0)-grd0);
comp_b = conv(b, b0);
comp_a = conv(a, a0);
figure;
grpdelay(b0, a0);
figure;
grpdelay(comp_b, comp_a);