2
$\begingroup$

I'm relatively new to DSP and I'm currently investigating FIR filter and IIR filters. From what I've found FIR filters can be implemented efficiently using the overlap-save method, but I was wondering if it might be possible to do the same using a IIR zero-phase filter?

For example say I have a fairly long signal if I divided the signal into overlapping chunks similarly to how overlap-save does it, and I zero-phase filter each of these chunks to prevent phase distortions then discard the overlapping samples as per the algorithm, is there any way I would be able to end up with a consistent end result? I've been looking around the web and in books but I haven't been able to find any sources that says it's possible except for this site:

http://www.dsprelated.com/freebooks/sasp/Overlap_Add_OLA_STFT_Processing.html

Where it says for Zero-phase to overlap the segment with two of it's neighbors. I've tried experimenting with the instructions and attempted to implemented and used an overlapping low-pass zero-phase filter on a signal as seen below, with the overlap length being 150 on each end of the segments. I've also padded the borders of each segment with 0s to prevent border distortions. From the looks of the result I got it doesn't seem like that it'll be smooth however when I combine them compared to if I filtered it all in one go.

enter image description here

If anyone could give me some pointers on what I might be doing wrong and where I need to look further it'd be great thanks!

$\endgroup$
  • $\begingroup$ Welcome to DSP.SE! Interesting question. I suspect you'll need to set the filter initial conditions to get the ends to match. $\endgroup$ – Peter K. Nov 11 '15 at 14:27
  • $\begingroup$ in real time? or processing "off line"? the latter can be zero phase because it need not be causal. the former can be linear phase, but it must be causal. $\endgroup$ – robert bristow-johnson May 10 '16 at 1:20
1
$\begingroup$

If you apply a zero-phase IIR (for instance, by filtering both forwards and backwards) to a segment of a signal that has been zero-padded on both sides, and the two zero-padding lengths are equal or greater than the length of the IIR filter's impulse response (until that response drops below your desired noise floor), then you can sum non-overlapping segments, but you have to keep and include the zero-padded tails in the sum (similar to overlap add). The error will be related to the (infinite length) ends of the IIR tails that have been cut off by finite length zero-padding.

$\endgroup$

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.