When we developed analog systems, interconnecting the circuit elements provided a natural starting place for constructing useful devices. In discrete-time signal processing, we are not limited by hardware considerations but by what can be constructed in software.
One of the first analog systems we described was the amplifier (Amplifiers: Amplifiers). We found that implementing an amplifier was difficult in analog systems, requiring an op-amp at least. What is the discrete-time implementation of an amplifier? Is this especially hard or easy?
In fact, we will discover that frequency-domain implementation of systems, wherein we multiply the input signal's Fourier transform by a frequency response, is not only a viable alternative, but also a computationally efficient one. We begin with discussing the underlying mathematical structure of linear, shift-invariant systems, and devise how software filters can be constructed.