Given a FIR filter (non-causal) with phase zero and real coefficients given by $$H(z) = \sum_{n=-M}^{M}h[n]z^{-n}$$ with ripple $\delta_2$.

How can I obtain a filter $H_{{\rm min}}(z)$ of minimum phase of $M+1$ coefficients, from $H(z)$? How are those filter related (amplitudes, $\omega$, ripple)?

I know that if the filter is causal with real coefficients I can use this relation between the original filter and the minimum one:

$$H(z) = H_{\rm min}(z) H_{\rm ap}(z),$$

but in this exercise I can't.

What can I do?

  • $\begingroup$ Can you factor H(z) into poles and zeros? If so, flip/mirror all the zeros outside the unit circle. If not, then you might have to settle for a cepstrum/cepstral or iterative approximation to Hmin() with just approximately the same frequency response. $\endgroup$
    – hotpaw2
    Jul 6, 2016 at 19:40
  • $\begingroup$ I know that it's non-causal, so the ROC is from the "smallest" pole to the origin (I mean, I don't include the $\infty$). I read a little bit about cepstrum in Oppenheim-Schafer but I didn't study that this half-year, so I think I can use another thing to solve that. I can write H(z) using that coefficients are real, like $$H(z) = \sum_{n=-M}^{M} h(n) z^{-n}$$ (that equation is part of the exercise, so, if someone can edit the question, please add that equation) $\endgroup$
    – Euler
    Jul 6, 2016 at 19:59
  • $\begingroup$ @hotpaw2: If you just mirror all zeros, you'll get a filter with the same order. The exercise requires a filter of half the order. $\endgroup$
    – Matt L.
    Jul 6, 2016 at 21:03
  • $\begingroup$ Yes, I know that. And that's why I can't use the relation between $H(z)$ and $H_{min}(z)$ that I wrote in the question. What can I do? $\endgroup$
    – Euler
    Jul 6, 2016 at 21:06

1 Answer 1


The procedure you're looking for is called lifting and, as far as I know, it was first introduced by Hermann and Schuessler:

O. Herrmann and H. W. Schuessler, Design of nonrecursive filters with minimum phase, Electron. Lett., 6(11): 329–330, 28th May 1970

The procedure is very well explained in this presentation by Ivan Selesnick. I'll briefly summarize it here, but it's important to look at the figures in the presentation.

Since you have a zero-phase filter, you know that $H(e^{j\omega})$ is real-valued. If you know the maximum error in the stopband $\delta_s$, you can define a new real-valued and non-negative transfer function by adding $\delta_s$ to $H(e^{j\omega})$:

$$H_2(\omega)=H(e^{j\omega})+\delta_s\ge 0\tag{1}$$

In the time domain this simply means adding $\delta_s$ to the central tap $h[0]$. In this way, all zeros on the unit circle become double zeros (look at the corresponding figure in the presentation quoted above). Now you only keep the zeros of $H_2(z)$ that are inside the unit circle, and one of each of the double zeros on the unit circle. In this way you reduce the filter order by a factor of $2$. Now you just need to scale the filter such that its passband amplitude oscillates around $1$. It is a straightforward exercise to derive the actual ripple values of the minimum phase filter given the ripple of the linear phase filter. Again, reading the presentation will help.


Your Answer

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

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