0
$\begingroup$

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!

$\endgroup$
0
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ 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]$ $\endgroup$
    – Hilmar
    Jun 20 at 19:02
  • $\begingroup$ @Hilmar: That's right, I was a bit too quick writing up my answer. I will edit ... $\endgroup$
    – Matt L.
    Jun 20 at 19:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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