invfreqz

Compute digital filter coefficients from frequency response values.

Syntax

[b,a] = invfreqz(h,f,nb,na)

[b,a] = invfreqz(h,f,nb,na,w)

Inputs

h
The complex frequency response values.
Type: double
Dimension: vector
f
The frequencies corresponding to h. The values in Hz must be normalized relative to fs/(2*pi), where fs is the sampling frequency, so that the Nyquist frequency corresponds to a value of pi.
Type: double
Dimension: vector
nb
The filter numerator polynomial order.
Type: integer
Dimension: scalar
na
The filter denominator polynomial order.
Type: integer
Dimension: scalar
w
Optional weights applied to achieve a weighted fitting of the response values.
Type: double
Dimension: vector

Outputs

b
The estimated numerator polynomial coefficients of the filter.
Type: double
Dimension: vector
a
The estimated denominator polynomial coefficients of the filter.
Type: double
Dimension: vector

Example

Recover coefficients from the output of a digital Chebyshev I filter.

order = 3;
fc = 200;
fs = 1000;
[b1,a1] = cheby1(order, 1, fc/(fs/2), 'z')
f = [0:0.2:2] * fc;
h = freqz(b1,a1,f,fs);
[b2,a2] = invfreqz(h,pi*f/(fs/2),order,order)
b1 = [Matrix] 1 x 4
0.07360  0.22079  0.22079  0.07360
a1 = [Matrix] 1 x 4
1.00000  -0.97613  0.85676  -0.29186
b2 = [Matrix] 1 x 4
0.07360  0.22079  0.22079  0.07360
a2 = [Matrix] 1 x 4
1.00000  -0.97613  0.85676  -0.29186

Comments

It is recommended to use freqz to assess the quality of the fitted filter coefficients.