I was pushing poles and zeros around on micromodeler.com/dsp/# and found an interesting effect. First, I established a simple two pole lowpass filter. It's lag (group delay) is about 3.5 samples. This is shown in the first screen capture. Then I added a pair of conjugate zeros inside the poles on the same radials. The result is "zero group delay" without much impact on the amplitude response,LowPass.jpgZeroLag.jpg as shown in the second screen capture. How is this possible? I verified in the Octave program that the lag was reduced to about 2 samples. Is there a process to really design such "zero lag" filters?
It is true but remember there is no such thing as a free lunch.
I recommend you to read a brief paper from Kendall Castor-Perry (Jan 2012) 'Prediction and negative-delay filters: Five things you should know'. Kendall is a wise guy.
I use a method similar to that of Castor-Perry, but is superior because it doesn't have the amplitude problems in the transfer response. In my method I first LowPass the input waveform. Then I take the difference between the waveform and the filter output. Next, I LowPass filter the difference. Finally, I add the smoothed difference to the original LowPass filter response. The result is about as good as it gets. Some interesting variations can be created because the two LowPass filters are not necessarily constrained to have the same passband.
At a theoretical level, I am still puzzled about the placement of the zeros shown in my screen captures.
Can you post the coefficients of your filter (the filter having poles & zeros) here? I'd like to "plug" those coefficients into my filter-analysis software. Thanks.
For other readers, Castor-Perry the paper suggested by Javier can be found at:
I actually just found the answer to my problem. It turns out that micromodeler.com/dsp/# shows both the theoretical group delay as the rate change of angle as well as the simulated group delay. I was looking at the theoretical group delay. I guess the rate change of phase can actually go negative, but that is of no help in the real world. There ain't no free lunch after all.
Regarding the coefficients, I just started with a 2 pole Butterworth.