A digital signal processing toolkit for generating, approximating, and analyzing frequencies using Fourier series and fast Fourier transforms.
Explore the Documentation »
Report Bug
·
Request Feature
Table of Contents
This repository contains Digital Signal Processing Analysis, an academic project developed from scratch in 2024 for the Processamento Digital de Sinais course at ISEL (Instituto Superior de Engenharia de Lisboa).
The primary goal of this project is to apply fundamental digital signal processing concepts to a computational environment, translating mathematical formulations of waveforms and Fourier series into practical Python code to study signal behavior in both the time and frequency domains.
- Signal Generation: Generate and visualize complex waveforms by mathematically combining multiple sine and cosine waves.
-
Fourier Series Approximation: Reconstruct specific waves computationally by iterating variable harmonic terms (
$N$ ). - Amplitude Spectrum Analysis: Utilize Fast Fourier Transforms (FFT) to accurately identify and visualize the frequency components of digital signals.
- Data Visualization: Clear plotting of time-domain signals and frequency-domain spectrums using the Matplotlib library.
- Computational Mathematics: Consolidated the ability to translate complex mathematical formulas into efficient, iterative code blocks.
- Frequency Domain Insights: Gained a deeper practical understanding of how signals are composed and how to analyze them using their spectral density.
- Python Scientific Stack: Improved proficiency with
numpyfor mathematical operations andmatplotlibfor generating professional engineering plots.
Follow these instructions to set up a local copy of the project on your machine to view the notebook and run the signal processing algorithms.
- Python 3.x
- Jupyter Notebook or JupyterLab
- Required Libraries:
numpy,matplotlib
- Clone the repository:
git clone https://github.com/GuilhermeGraca/python-digital-signal-processing.git
- Navigate to the project directory:
cd python-digital-signal-processing - Install the required libraries (if not already installed):
pip install numpy matplotlib jupyter
- Open the Jupyter Notebook:
jupyter notebook "python-digital-signal-processing.ipynb"
Once the notebook is open, you can run the cells sequentially to see how different signals are mathematically generated and plotted. You can experiment by changing the frequency variables (Fs), modifying the number of terms (
Guilherme Graça
- ISEL (Instituto Superior de Engenharia de Lisboa) - For providing the academic foundation and resources for this project during the Processamento Digital de Sinais course.
- David Delgado - Project collaborator and co-author.
- Martim Ramos - Project collaborator and co-author.

