Signal Theory
From Fourier analysis to digital filter design — the mathematics of signals and systems
Course Overview
Signal theory is the mathematical backbone of modern communications, control systems, audio engineering, medical imaging, and countless other fields. This course takes you from the fundamentals of continuous-time signals through Fourier analysis, the Laplace and Z transforms, sampling theory, and into practical digital signal processing with FFT algorithms and filter design.
What makes this course unique:
- Full MathJax equations: Every theorem is stated precisely with complete derivations
- Interactive demos: Live Fourier series visualisation with up to 50 harmonics
- Fortran backend: High-performance FFT, PSD, and filter kernels (
signal_kernels.f90) - Python wrapper: NumPy/SciPy fallback via
SignalProcessorclass - REST API: Flask endpoints for FFT, PSD, filtering, sinc reconstruction, and spectrograms
8 Chapters
Ch 1: Signals & Systems
Classification, linearity, time-invariance, convolution integral, impulse response.
Ch 2: Fourier Series
Trigonometric & complex forms, Dirichlet conditions, Parseval's theorem, Gibbs phenomenon.
Ch 3: Fourier Transform
Continuous FT, properties, convolution theorem, Plancherel theorem, uncertainty principle.
Ch 4: Laplace Transform
Region of convergence, transfer functions, poles & zeros, inverse transform, stability.
Ch 5: Sampling & Nyquist
Shannon–Nyquist theorem, aliasing, ideal reconstruction, practical ADC/DAC.
Ch 6: DFT & FFT
Discrete Fourier transform, Cooley–Tukey radix-2 algorithm, zero-padding, spectral leakage.
Ch 7: Z-Transform
Definition, ROC, inverse Z-transform, relationship to DTFT, difference equations.
Ch 8: Digital Filters
FIR vs IIR, window method, bilinear transform, Butterworth/Chebyshev, implementation.
Backend Architecture
Fortran 90
signal_kernels.f908 optimised routines: FFT, DFT, Welch PSD, IIR/FIR filters, sinc interpolation, windowing.
Python Wrapper
signal_backend.pySignalProcessor class via f2py with graceful NumPy/SciPy fallback.
Flask API
signal_app.py6 REST endpoints: /api/fft, /api/psd, /api/filter, /api/fourier, /api/sinc, /api/spectrogram.
# Build Fortran kernels
cd backend && f2py -c signal_kernels.f90 -m signal_kernels --opt="-O3 -march=native"
# Run Flask API
cd backend && python signal_app.py