Goal
Understand how a filter works through its impulse response and its measurable characteristics.
Prerequisites: Parts 01–03.
Future lessons
- Linearity and time invariance (LTI); adding the responses to separate inputs.
- Impulse response and convolution; storage of past samples and difference equations.
- FIR: a filter with a finite impulse response. Coefficients, passband and stopband, transition band and delay.
- Frequency response; FIR design with a windowed sinc and with the Parks–McClellan method.
- IIR: a filter with feedback. Stability, poles and zeros, second-order sections (SOS), Butterworth and Chebyshev filters. We introduce the Z-transform when we need it.
Lab plan
- Write convolution and an FIR yourself, then compare them with np.convolve and scipy.signal.lfilter.
- Design a CW filter with a width of 300–500 Hz and an SSB filter of about 2.4 kHz; set the band edges explicitly.
- Compare FIR and IIR by magnitude and phase response, delay, impulse response and number of operations.
We do the experiments in Python with NumPy, SciPy and Matplotlib. We keep the parameters, units and plots. The base models use float64 and complex128; we add bit-depth limits in separate experiments.
Completion criteria
- I set the requirements for the bands, ripple and attenuation before I select the coefficients.
- I can explain the filter delay, why it needs an initial state, and the stability conditions of an IIR.
Result for the main project
Receiver filters and tools to check their characteristics.