# Transform linear-phase FIR to minimum-phase FIR

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?

• 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. – hotpaw2 Jul 6 '16 at 19:40
• 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) – Euler Jul 6 '16 at 19:59
• @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. – Matt L. Jul 6 '16 at 21:03
• 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? – Euler Jul 6 '16 at 21:06

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.