0
$\begingroup$

In general, we all know that the direct form 1 equation for a biquad filter is given by

$$y(n) = b_0x(n) + b_1x(n-1) + b_2x(n-2) - a_1y(n-1) - a_2y(n-2)$$

But when it comes to practical applications like for audio processing applications, I have seen many people using

$$y(n) = b_0x(n) + 2b_1x(n-1) + b_2x(n-2) - 2a_1y(n-1) - a_2y(n-2)$$

as the filter equation in their codes.

So, I just want to know the reason why we need to multiply $a_1$ and $b_1$ coefficients by 2?

$\endgroup$
1
  • $\begingroup$ I've never seen that, can you maybe link to an example of such code? quite possibly, it's computationally advantageous? $\endgroup$ Jun 28, 2020 at 13:22

1 Answer 1

1
$\begingroup$

This may be a misunderstanding based on a fixed point implementation. Fixed point implementations can benefit from "fractional multiplies" which requires a number format where all absolute values are 1 or less. In Q notation that would be Q15.0 for a signed 16-bit integer. Many processors have a dedicated hardware instruction for this operation, which makes it fast and efficient.

Assuming that all poles and zeros are inside the unit circle, we have $|b_0|, |b_2|, |a_2| < 1$ but $|b_1|, |a_1| < 2$. In order to avoid shifting associated with mixed Q notation, the $b_1$ and $a_1$ coefficients are split in have, so numbers can be kept in the same Q. Hence it would be implemented as

$$y[n] = b_0 \cdot x[n] + b_1/2 \cdot x[n-1] + b_1/2 \cdot x[n-1] + b_2 \cdot x[n-1] ...$$

or

$$y[n] = b_0 \cdot x[n] + (b_1/2 \cdot x[n-1]) \ll 1 + b_2 \cdot x[n-1] ...$$

where $\ll$ is the left-shift operator.

This may looks like the coefficient is multiplied by two but in reality it's first split in half to make it's magnitude smaller than $1$, so the same type of fixed point multiplication can be used for all operations.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.