1# Signal Processing Examples
2
3This directory contains 15 Python examples covering the fundamentals and applications of signal processing. All examples use NumPy, SciPy, and Matplotlib.
4
5## Requirements
6
7```bash
8pip install numpy scipy matplotlib
9```
10
11## Files Overview
12
13### 1. `01_signals_classification.py` - Signals and Systems
14**Concepts:**
15- Basic signal types: sinusoidal, exponential, unit step, unit impulse, rectangular pulse
16- Signal classification: continuous vs discrete, periodic vs aperiodic, deterministic vs random
17- Even/odd decomposition
18- Energy and power computation
19- Time operations: shifting, scaling, reversal
20
21**Run:** `python 01_signals_classification.py`
22
23---
24
25### 2. `02_convolution.py` - LTI Systems and Convolution
26**Concepts:**
27- Discrete convolution implemented from scratch
28- Verification against `np.convolve`
29- LTI system impulse response and output computation
30- Moving average filter as convolution
31- Step-by-step convolution visualization
32- Convolution properties: commutativity, associativity, distributivity
33- RC circuit impulse response
34
35**Run:** `python 02_convolution.py`
36
37---
38
39### 3. `03_fourier_series.py` - Fourier Series
40**Concepts:**
41- Fourier series coefficients for square, sawtooth, triangular waves
42- Signal reconstruction using partial sums
43- Gibbs phenomenon visualization
44- Magnitude and phase spectra
45- Parseval's theorem verification
46- Convergence analysis (RMSE vs number of harmonics)
47
48**Run:** `python 03_fourier_series.py`
49
50---
51
52### 4. `04_fourier_transform.py` - Continuous Fourier Transform
53**Concepts:**
54- Numerical CTFT approximation for rectangular pulse, Gaussian, exponential decay
55- Magnitude and phase spectra plotting
56- Fourier transform properties: linearity, time shift, frequency shift (modulation)
57- Parseval's theorem verification
58- Rect-sinc duality
59- Energy spectral density
60
61**Run:** `python 04_fourier_transform.py`
62
63---
64
65### 5. `05_sampling_aliasing.py` - Sampling and Reconstruction
66**Concepts:**
67- Sampling at different rates (oversampling, critical, undersampling)
68- Aliasing demonstration when violating Nyquist criterion
69- Whittaker-Shannon sinc interpolation for signal reconstruction
70- Spectral analysis before and after sampling
71- Anti-aliasing filter design and application
72
73**Run:** `python 05_sampling_aliasing.py`
74
75---
76
77### 6. `06_fft_analysis.py` - DFT and FFT
78**Concepts:**
79- Manual DFT via matrix multiplication vs `np.fft.fft`
80- Computation time comparison (DFT O(N²) vs FFT O(N log N))
81- Zero-padding for frequency resolution improvement
82- Windowing effects: rectangular, Hanning, Hamming, Blackman
83- Spectral leakage analysis
84- Multi-tone signal detection
85
86**Run:** `python 06_fft_analysis.py`
87
88---
89
90### 7. `07_z_transform.py` - Z-Transform
91**Concepts:**
92- Common Z-transform pairs verification
93- Pole-zero diagram plotting with unit circle
94- System stability analysis from pole locations
95- Inverse Z-transform via partial fraction expansion
96- 2nd-order IIR system analysis
97- `scipy.signal.tf2zpk` and `zpk2tf` usage
98
99**Run:** `python 07_z_transform.py`
100
101---
102
103### 8. `08_filter_response.py` - Digital Filter Fundamentals
104**Concepts:**
105- FIR vs IIR filter comparison
106- Magnitude response, phase response, group delay
107- Moving average (FIR) and 1st-order recursive (IIR) filters
108- Impulse response and step response
109- Noise filtering application with SNR measurement
110- `scipy.signal.freqz` for frequency response
111
112**Run:** `python 08_filter_response.py`
113
114---
115
116### 9. `09_fir_design.py` - FIR Filter Design
117**Concepts:**
118- Window method: Hamming, Kaiser windows
119- Bandpass filter design
120- Optimal design: Parks-McClellan algorithm (`scipy.signal.remez`)
121- Window method vs optimal design comparison
122- Kaiser window parameter estimation
123- Filter application to multi-tone test signal
124
125**Run:** `python 09_fir_design.py`
126
127---
128
129### 10. `10_iir_design.py` - IIR Filter Design
130**Concepts:**
131- Butterworth, Chebyshev Type I/II, Elliptic filter design
132- Bilinear transform method
133- Frequency response comparison across filter families
134- Filter order vs transition band sharpness tradeoff
135- Minimum order comparison using `buttord`, `cheb1ord`, `ellipord`
136- Pole-zero diagrams for each filter type
137
138**Run:** `python 10_iir_design.py`
139
140---
141
142### 11. `11_multirate.py` - Multirate Processing
143**Concepts:**
144- Decimation with and without anti-aliasing filter
145- Interpolation with and without interpolation filter
146- Aliasing and imaging artifacts
147- Rational rate conversion (44100 Hz ā 48000 Hz)
148- `scipy.signal.decimate` and `resample_poly`
149- Spectral analysis at each processing stage
150
151**Run:** `python 11_multirate.py`
152
153---
154
155### 12. `12_spectral_estimation.py` - Spectral Analysis
156**Concepts:**
157- Periodogram and its variance problem
158- Bartlett's method (non-overlapping segments)
159- Welch's method (overlapping, windowed segments)
160- AR parametric estimation via Yule-Walker equations
161- Resolution vs variance tradeoff
162- Peak detection for frequency estimation
163
164**Run:** `python 12_spectral_estimation.py`
165
166---
167
168### 13. `13_adaptive_lms.py` - Adaptive Filters
169**Concepts:**
170- LMS (Least Mean Squares) algorithm implementation
171- NLMS (Normalized LMS) algorithm implementation
172- System identification application
173- Noise cancellation (Widrow noise canceller)
174- Learning curve analysis (MSE vs iteration)
175- Step size effect on convergence and stability
176- LMS vs NLMS comparison under non-stationary input
177
178**Run:** `python 13_adaptive_lms.py`
179
180---
181
182### 14. `14_spectrogram_wavelet.py` - Time-Frequency Analysis
183**Concepts:**
184- STFT spectrogram computation (`scipy.signal.stft`)
185- Chirp signal analysis
186- Time-frequency resolution tradeoff (window length effect)
187- Continuous Wavelet Transform (CWT) with Morlet wavelet
188- Spectrogram vs CWT scalogram comparison
189- Multi-component signal analysis (stationary + transient)
190
191**Run:** `python 14_spectrogram_wavelet.py`
192
193---
194
195### 15. `15_image_filtering.py` - Image Signal Processing
196**Concepts:**
197- Synthetic test image generation
198- 2D DFT computation and visualization (log magnitude spectrum)
199- Frequency domain filtering: ideal and Gaussian lowpass/highpass
200- Spatial domain filtering: Sobel edge detection, Gaussian blur
201- Frequency vs spatial domain filtering comparison
202- Convolution theorem verification in 2D
203
204**Run:** `python 15_image_filtering.py`