README.md

Download
markdown 205 lines 6.1 KB
  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`