All systems, including filters, are causal. That means they can't produce a response to an (unpredictable) stimulus before that stimulus arrives. So, how the heck can you build a filter that 'predicts' something? Well, it all depends on how high you set your sights for the quality and the relevance of that prediction.
So, riffing on the “Five Things You Should Know” format that was very popular last time, let's ask five central questions whose answers can help us navigate through this filtery quagmire.
How do filters delay signals?
Information can be impressed on a signal in many ways, and it always takes a finite amount of time to pass through a processing system. You'll be very familiar with the concept of the propagation delay of a digital block. It's simply the time elapsed between some state change at the input to the corresponding state change at the output of that block. The digital-minded reader's first thought might be of a stream of '1's and '0's, expressed physically as detectably different voltage or current levels. Propagation delay is fine for such signals, but not meaningful when we consider analog signals that don't really have defining features associated with particular points in time.
We often lowpass-filter signals and data sequences to get rid of 'noise' – high-frequency variations that we’ve decided have no meaning and are getting in the way of observing a more important underlying feature. The filtering process can lend our observation a rather 'heavy touch', though; it's definitely a case of the observer affecting the observation. The most obvious consequence of conventional filtering, when we view the response graphically, is that there’s clearly a time delay between variations in the input signal and corresponding variations in the filtered output. We’ll see this clearly on a test signal in a moment when we look at some examples.
How do we quantify this form of delay?