0

Given a high pass transfer fn of the form
$H_{hp}=a_{1}*z^0 +a_{2}*z^{-1} + ... a_{n}*z^{-n}$
Is it possible to calculate a causal low pass filter using
$H_{lp} = z*(1-H_{hp})$ ?
attempting
$H_{lp} = (1-a_{1})*z - a_{2}*z^0 - a_{3}*z^{-1}... - a_{n}*z^{n-1}$
doesn't appear causal, and setting $(1-a_{1})$ to 0 doesn't give the expected freq-response plot.

if z(1-H) is not causal, how can I at least calculate a low pass $1-H_{hp}$ ?
1-(coefficients of $H_{hp})$,-(coefficients of $H_{hp}$), 1./coefficients of $H_{hp}$ all seem to have a high-pass freq-response...

Thank you!

1 Answers1

0

A type I (odd length $N$, even symmetry) FIR highpass filter with transfer function

$$H_{HP}(z)=\sum_{n=0}^{N-1}h_{HP}[n]z^{-n}\tag{1}$$

has a real-valued amplitude function

$$A_{HP}(\omega)=H_{HP}\big(e^{j\omega}\big)e^{j\omega (N-1)/2}\tag{2}$$

If the highpass filter is normalized such that it approximates unity in its passband, it can be transformed into a lowpass filter with amplitude function

$$A_{LP}(\omega)=1-A_{HP}(\omega)\tag{3}$$

The corresponding complex frequency is then given by

$$H_{LP}(e^{j\omega})=A_{LP}(\omega)e^{-j\omega (N-1)/2}\tag{4}$$

and the filter coefficients are

$$h_{LP}[n]=-h_{HP}[0],-h_{HP}[1],\ldots,1-h_{HP}[(N-1)/2],\ldots,-h_{HP}[N-1]\tag{5}$$

So you just invert the coefficients and add the value $1$ to the (inverted) center bin.

Note that this trick usually works well only for linear phase filters, even though in some cases a similar method can be applied to minimum-phase IIR filters (see this answer). Also take a look at this answer.

A more general method for transforming a highpass filter to a lowpass filter (or vice-versa) makes use of an all-pass transformation as explained in this answer.

Matt L.
  • 89,963
  • 9
  • 79
  • 179
  • I don't think it works this way. $1-H_{HP}(z)$ is only a lowpass if $H_{HP}$ is zero phase, i.e. non causal. It can works for a linear phase high pass but only if you shift the unit impulse to the center of the impulse response, i.e. $h_{LP}[n] = \delta[n-N/2]-h_{HP}[n]$ – Hilmar Jun 20 '21 at 19:02
  • @Hilmar: That's right, I was a bit too quick writing up my answer. I will edit ... – Matt L. Jun 20 '21 at 19:32