Spectral analysis of signals in Python

Bandwidth estimator function and analysis of ECG, audio, and seismogram signals.

Introduction

This project seeks to apply computational methods for bandwidth estimation of real signals through spectral analysis. We apply techniques such as periodogram, Welch, and percentile energy criteria to quantify the frequency range where most of the signal's energy is concentrated.

Project Development

We analyzed three types of signals:

  • Biomedical: Electrocardiograms (ECG) and plethysmographs (PPG)
  • Audio: Human voice and whale calls
  • Seismic: Earthquake recordings from Chile (M6.4) and Argentina (M5.6)

Two main functions were implemented: one for low-frequency signals (low-pass, sweeping from 0 Hz) and another for signals with mid-band components (dynamic band-pass, expanding from the spectral peak). Results include specific bandwidths and seismic magnitude estimates through PSD integration.

Skills Acquired

This project was developed for the Digital Signal Processing course, where I delved deeper into the mathematics behind a DFT, signal quantization, windowing, and FIR/IIR filtering, to name a few examples.

I also deepened my familiarity with NumPy and SciPy libraries, graphing with Matplotlib, and learned to search for public databases for biomedical and seismic signals. This undoubtedly provided greater self-learning flexibility for future work in signal analysis.

Repository

Access to this and other relevant work can be found in the following repository .

Related

Latest projects