If you choose to embark upon an entrepreneurial career, you will often find yourself putting together financial spreadsheets to model your business. Investors in particular love to pore over scenarios of how your business might develop, and having a good financial model is an invaluable tool to have at your disposal. Of course, if you’re smart, you’ll want to thoroughly test your spreadsheet to make sure that your financial logic contains no embarrassing errors. One of the techniques for doing that is to enter an arbitrary billion dollars into one of the input cells, and see where else in your spreadsheet unexpected extra billions show up. It is very easy to spot billions of dollars when they start to appear in places they don’t belong. You might say that what you are doing is measuring the “impulse response” of your spreadsheet.
Digital filters are no different. Data goes in one place, and results come out someplace else. In this case, both the inputs and outputs are streams of numbers. Conceptually, digital filters are quite simple things. You take the input value, and add to it bits of the previous input values together with bits of the previous output values. That’s really all there is to it. The filter design tells you how many of the previous input and output values go into the mix, and precisely what fraction of each to use. Some filters only rely on the previous input values, and don’t use the previous output values. Filters that do use the previous output values have an interesting property – each output value contains a little bit of each and every previous input value.
What are the implications when a bit of one input value ends up in each and every one of the subsequent output values? A very easy analysis would be to take a signal comprising digital silence – in effect nothing but zeros – and modify it so that one data point (and only one data point) is at a maximum value. We call this waveform an “Impulse”. We put this data stream through our digital filter and see what comes out the other end. What happens is that the output comprises a stream of zeros up until the time the impulse reaches the input of the filter. After that, the output will comprise a sequence of non-zero values – in effect a series of echoes of the original impulse. This artificial construct – how the residue of one single impulse value in a sea of zeros appears in the output data stream – is called the “impulse response” of the filter. If the filter uses only previous input values and no previous output values, then the echoes will fall to zero as soon as we reach the point where the impulse is no longer one of the previous values that goes into the mix. Such filters are called “Finite Impulse Response” (FIR) filters. If, however, the filter uses previous output values, then the echoes of the impulse will remain within the output signal forever, or at least until such time as its magnitude becomes too small to register. These filters are called “Infinite Impulse Response” (IIR) filters.
An impulse response looks like a waveform. You can easily plot it out. It looks like a waveform precisely because it is a waveform, and you can do anything with it that you can do with any other waveform. Impulse responses have many interesting properties, most of which are beyond the scope of this post. But, as an example, if we take its Fourier transform, the result is the transfer function of the filter, which is to say its frequency and phase responses. This is why the key aspects of a filter’s performance are intimately inter-related. Once you define a filter’s frequency response (for example by defining the characteristics of a low-pass filter) and phase response (for example by specifying linear phase or minimum phase), you will have set in stone its impulse response. In other words, the impulse response (IR) is the direct consequence of the choices you have made in terms of frequency response (FR) and phase response (PR). What it boils down to, is that when it comes to filter design, you only get to specify any two of its IR, PR and FR, and the third will be determined for you.