9

Given I have coefficients a0, a1, a2, b1, and b2, defining the difference equation for a digital filter as:

y[n] = a0 * x[n] + a1 * x[n - 1] + a2 * x[n - 2] - b1 * y[n - 1] - b2 * y[n - 2]

Which defines a low-pass filter with particular cutoff frequency, how can I obtain the coefficients A0, A1, A2, B1, B2, which similarly define a high-pass filter with the same cutoff frequency? I'm aware there are so-called "bandform transformations" for converting a prototype low-pass into a high-pass, but to my knowledge, these are not directly applicable to discrete-time/digital filters, so I am unaware of any way to apply them to this problem.

If these coefficients are derived from a complex-conjugate pair of zeros and/or of poles given the discrete transfer function for the low-pass filter would be:

H(z) = (z - Zero[0]) * (Z - Zero[1])/[(Z - Pole[0]) * (Z - Pole[1])]

Is there then a way to transform this function to the corresponding high-pass filter I'm looking for to get the poles and zeros from the new transfer function?

user2649681
  • 201
  • 2
  • 4

1 Answers1

11

You can apply a so-called all-pass transformation to a discrete-time low-pass prototype filter in order to convert it to other standard filters (such as high-pass, band-pass, and band-stop). This is accomplished by transforming the complex variable $z$ in the transfer function of the prototype filter by a function $G(z)$ which satisfies $|G(e^{j\omega})|=1$, i.e., $G(z)$ is an all-pass function. This makes sure that the transformation maps the unit circle onto itself, i.e., the frequency response of the new filter is just a shifted and/or warped version of the prototype frequency response.

The most straightforward way to transform a discrete-time low-pass filter to a high-pass filter is to use the trivial transform $G(z)=-z$, i.e.,

$$H_{HP}(z)=H_{LP}(-z)\tag{1}$$

If $H_{LP}(z)$ is given by

$$H_{LP}(z)=\frac{\displaystyle\sum_{k=0}^Nb[k]z^{-k}}{\displaystyle 1+\sum_{k=1}^{N}a[k]z^{-k}}\tag{2}$$

then $H_{HP}(z)$ becomes

$$H_{HP}(z)=\frac{\displaystyle\sum_{k=0}^N(-1)^kb[k]z^{-k}}{\displaystyle 1+\sum_{k=1}^{N}(-1)^ka[k]z^{-k}}\tag{3}$$

This transformation shifts the low-pass frequency response by $\pi$ (i.e., by half the sampling frequency). Consequently, if $\omega_c$ is the cut-off frequency of the low-pass prototype filter, the cut-off frequency of the resulting high-pass filter is given by $\omega'_c=\pi-\omega_c$.

Other cut-off frequencies can be obtained by applying the more general lowpass-to-highpass transformation

$$G(z)=-\frac{z+\alpha}{1+\alpha z},\qquad |\alpha|<1\tag{4}$$

The simple transformation shown above is obtained from $(4)$ by the choice $\alpha=0$.

This and other frequency transformations applicable to discrete-time filters are treated in some detail in Chapter $7.4$ of the third edition of Oppenheim and Schafer's Discrete-Time Signal Processing.

Also take a look at these related questions and their answers: Q1, Q2.

Matt L.
  • 89,963
  • 9
  • 79
  • 179