## IIR filters and frequency warping

Ivan_C
KVRian

1017 posts since 11 Aug, 2004, from Marcoussis, France
Hello everybody !

If I want the digital equivalent of the analog transfer function of a (linear) filter (no zero-delay or nonlinear stuff here), I need to apply frequency warping stuff, because I use the bilinear transform. To proceed, I have to correct the frequency cutoff values before the transformation, so the frequency response of the filter in the digital domain will match more the analog one.

This operation is easy when we want to calculate, say the classic biquads / SVF digital implementation coefficients, because the cutoff frequency is displayed explicitely in the equations. Moreover, it is also possible to simplify a lot the equations needed to get the digital filters coefficients, using remarkable indentities, when we want to change one parameter during the execution of the filter (see for example the formulas in the RBJ cookbook).

My question is the following : how do I apply the frequency warping efficiently if I want to get the digital implementation of any analog filter, when I have only the numerical values of its coefficients, and no formula where the frequency cutoff values are explicit ?

I think one way to do that would be to calculate the poles and zeros of the analog filter, to apply the frequency warping on these frequency-like values, and then calculate again the coefficients in the Laplace domain, but I think there may be another way more efficient to do the things too...

Z1202
KVRian

807 posts since 11 Apr, 2002
Wolfen666 wrote:Hello everybody !

If I want the digital equivalent of the analog transfer function of a (linear) filter (no zero-delay or nonlinear stuff here), I need to apply frequency warping stuff, because I use the bilinear transform. To proceed, I have to correct the frequency cutoff values before the transformation, so the frequency response of the filter in the digital domain will match more the analog one.

This operation is easy when we want to calculate, say the classic biquads / SVF digital implementation coefficients, because the cutoff frequency is displayed explicitely in the equations. Moreover, it is also possible to simplify a lot the equations needed to get the digital filters coefficients, using remarkable indentities, when we want to change one parameter during the execution of the filter (see for example the formulas in the RBJ cookbook).

My question is the following : how do I apply the frequency warping efficiently if I want to get the digital implementation of any analog filter, when I have only the numerical values of its coefficients, and no formula where the frequency cutoff values are explicit ?

I think one way to do that would be to calculate the poles and zeros of the analog filter, to apply the frequency warping on these frequency-like values, and then calculate again the coefficients in the Laplace domain, but I think there may be another way more efficient to do the things too...

The idea of the "cutoff" choice in the frequency warping is that you can choose a single point on the frequency response that will map exactly to the same value (there is exactly one degree of freedom to play with). Customarily the cutoff is chosen as such point, but you can choose any other one. (This is actually explained in S.3.9 of the VAFilterDesign book)
Ivan_C
KVRian

1017 posts since 11 Aug, 2004, from Marcoussis, France
Hello !

If I have two first order lowpass filters, which have a different cutoff frequency, I can apply the frequency warping to each one a different way, so their digital implementation will have a frequency response which match the one from the analog filter, for each cutoff frequency, right ? So there are two degrees of freedom here isn't it ?

Well, you have answered to my question partially
Z1202
KVRian

807 posts since 11 Apr, 2002
Wolfen666 wrote:So there are two degrees of freedom here isn't it ?
Because in this case you apply the prewarping to two different transfer functions separately This will change their combined transfer function is a non-mappable way, though (it won't preserve the relationship between magnitude and phase).
Ivan_C
KVRian

1017 posts since 11 Aug, 2004, from Marcoussis, France
OK, thanks for the information

Moderator: Moderators (Main)