Skip to main content
added 87 characters in body
Source Link
Hilmar
  • 48.2k
  • 1
  • 32
  • 67

I was wondering, does this property also holds for the transposed direct form 1?

It does not. In fact in terms of numerical performance, transposed direct form 1 is outright terrible.

It helps to look at transfer function from the input to the state variables. For single biquad we have

$$H(z) = \frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}} = A(z)\cdot B(z)$$,

where $B(z) = b_0+b_1z^{-1}+b_2z^{-2}$ is the transfer function of the zeros and $A(z) = \frac{1}{a_0+a_1z^{-1}+a_2z^{-2}}$ is the transfer function of the poles.

For TDF1 the transfer function from the input to the state is simply.

$H_{TDF1} = A(z)$

The structure applies first $A(z)$ and then $B(z)$. This is often not good since $A(z)$ can be really large (compensated by $B(z)$ being really small).

For TDF2 we simply get $H_{TDF2} = H(z)-b0$

The state transfer function is in the same order of magnitude than the overall transfer function (minus a constant) and it's overall much better behaved.

A simple example: let's look at typical audio filter: a 2nd order Butterworth high pass filter with a cutoff of 40Hz and a sample rate of 48 kHz.

The maximum gain from input to state is for TDF2 is just 2 dB. For DTF1 it's over 91 dB !!! So it's over 30,000 times bigger!

enter image description here

I was wondering, does this property also holds for the transposed direct form 1?

It does not. In fact in terms of numerical performance, transposed direct form 1 is outright terrible.

It helps to look at transfer function from the input to the state variables. For single biquad we have

$$H(z) = \frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}} = A(z)\cdot B(z)$$,

where $B(z) = b_0+b_1z^{-1}+b_2z^{-2}$ is the transfer function of the zeros and $A(z) = \frac{1}{a_0+a_1z^{-1}+a_2z^{-2}}$ is the transfer function of the poles.

For TDF1 the transfer function from the input to the state is simply.

$H_{TDF1} = A(z)$

The structure applies first $A(z)$ and then $B(z)$. This is often not good since $A(z)$ can be really large (compensated by $B(z)$ being really small).

For TDF2 we simply get $H_{TDF2} = H(z)-b0$

The state transfer function is in the same order of magnitude than the overall transfer function (minus a constant) and it's overall much better behaved.

A simple example: let's look at typical audio filter: a 2nd order Butterworth high pass filter with a cutoff of 40Hz and a sample rate of 48 kHz.

The maximum gain from input to state is for TDF2 is just 2 dB. For DTF1 it's over 91 dB !!! So it's over 30,000 times bigger!

I was wondering, does this property also holds for the transposed direct form 1?

It does not. In fact in terms of numerical performance, transposed direct form 1 is outright terrible.

It helps to look at transfer function from the input to the state variables. For single biquad we have

$$H(z) = \frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}} = A(z)\cdot B(z)$$,

where $B(z) = b_0+b_1z^{-1}+b_2z^{-2}$ is the transfer function of the zeros and $A(z) = \frac{1}{a_0+a_1z^{-1}+a_2z^{-2}}$ is the transfer function of the poles.

For TDF1 the transfer function from the input to the state is simply.

$H_{TDF1} = A(z)$

The structure applies first $A(z)$ and then $B(z)$. This is often not good since $A(z)$ can be really large (compensated by $B(z)$ being really small).

For TDF2 we simply get $H_{TDF2} = H(z)-b0$

The state transfer function is in the same order of magnitude than the overall transfer function (minus a constant) and it's overall much better behaved.

A simple example: let's look at typical audio filter: a 2nd order Butterworth high pass filter with a cutoff of 40Hz and a sample rate of 48 kHz.

The maximum gain from input to state is for TDF2 is just 2 dB. For DTF1 it's over 91 dB !!! So it's over 30,000 times bigger!

enter image description here

Source Link
Hilmar
  • 48.2k
  • 1
  • 32
  • 67

I was wondering, does this property also holds for the transposed direct form 1?

It does not. In fact in terms of numerical performance, transposed direct form 1 is outright terrible.

It helps to look at transfer function from the input to the state variables. For single biquad we have

$$H(z) = \frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}} = A(z)\cdot B(z)$$,

where $B(z) = b_0+b_1z^{-1}+b_2z^{-2}$ is the transfer function of the zeros and $A(z) = \frac{1}{a_0+a_1z^{-1}+a_2z^{-2}}$ is the transfer function of the poles.

For TDF1 the transfer function from the input to the state is simply.

$H_{TDF1} = A(z)$

The structure applies first $A(z)$ and then $B(z)$. This is often not good since $A(z)$ can be really large (compensated by $B(z)$ being really small).

For TDF2 we simply get $H_{TDF2} = H(z)-b0$

The state transfer function is in the same order of magnitude than the overall transfer function (minus a constant) and it's overall much better behaved.

A simple example: let's look at typical audio filter: a 2nd order Butterworth high pass filter with a cutoff of 40Hz and a sample rate of 48 kHz.

The maximum gain from input to state is for TDF2 is just 2 dB. For DTF1 it's over 91 dB !!! So it's over 30,000 times bigger!