A lab-focused repository for CCE3206: Digital Signal Processing at the University of Malta. Each practical session explores a key DSP concept using Python (NumPy, SciPy) in Jupyter notebooks.
This repository includes 4 hands-on labs, each with a worksheet and an implemented solution notebook. Topics range from sampling theory and IIR filtering to FIR design and FFT-based frequency analysis.
- Signal generation and pulse train sampling
- Power spectrum comparison (original vs sampled)
- Aliasing effects and Nyquist violations
- Chebyshev low-pass filtering
- First-order IIR filter with recursive feedback
- Impulse and step response simulation
.wavsignal filtering and power spectrum analysis- Gain/phase computation
- Experimental vs theoretical Bode plots
- FIR system implementation and frequency response
- Filter length and performance tradeoffs
- Visualization of filtering effects
- (See worksheet for theoretical context)
- Manual DFT matrix computation
- Symmetry and conjugation in transforms
- Parseval’s theorem and energy conservation
- FFT implementation and performance gains
These practicals were designed as skill-building exercises rather than full projects. Emphasis is on signal understanding and implementation from first principles.
This repository does not include a requirements.txt file.
To run the notebooks, make sure you have the following Python libraries installed:
pip install numpy scipy matplotlib jupyterOr use:
conda install numpy scipy matplotlib jupyterDSP-Labs/
├── Practical_1/
│ ├── cce3206-practical-1.pdf
│ └── practical_1_solution.ipynb
├── Practical_2/
│ ├── cce3206-practical-2.pdf
│ └── practical_2_solution.ipynb
├── Practical_3/
│ ├── cce3206-practical-3.pdf
│ └── practical_3_solution.ipynb
├── Practical_4/
│ ├── cce3206-practical-4.pdf
│ └── practical_4_solution.ipynb
└── README.mdGraham Pellegrini
University of Malta
GitHub: @GrahamPellegrini