Skip to content

chenshuo/dspfirst

Repository files navigation

DSP First in Python

DSP demos from http://dspfirst.gatech.edu ported to Python, using Claude Code.

Original MATLAB version by Prof. James H. McClellan, Dr. Jordan Rosenthal, et al. (Georgia Tech, 1994–2021).

Demos

Install PyQt6 and dependencies first.

pip install PyQt6 numpy scipy matplotlib

Sinusoids Drill

Tests the user's ability to identify the amplitude, frequency, and phase of a displayed cosine wave: $x(t) = A\cos(2\pi f t + \phi)$

$ ./sindrill.py
Matlab Python

Phasor Race

$ ./phrace.py
Matlab Python

ZDrill

Timed quiz on phasor / complex-number operations.

$ ./zdrill.py
Matlab Python

Fourier series demo

Illustrates how a periodic signal is built up from its Fourier series.

$ ./fseriesdemo.py
Matlab Python

Complex Spin demo

$ ./cspin.py
Matlab Python

Continuous-Discrete Sampling Demo

$ ./con2dis.py
Matlab Python

Strobe Demo — Rotating Disc / Aliasing Demo

Simulates a rotating disc with an arrow being flashed by a strobe light. Vary the flash rate to observe aliasing concepts.

$ ./strobedemo.py
Matlab Python

Discrete Convolution demo

$ ./dconvdemo.py
Matlab Python

Continuous Convolution demo

Visualises continuous-time convolution interactively: y(t) = ∫ x(τ) h(t−τ) dτ

$ ./cconvdemo.py
Matlab Python

Discrete LTI System demo

$ ./dltidemo.py
Matlab Python

Continuous LTI System demo

$ ./cltidemo.py
Matlab Python

Filter Design demo

$ ./filterdesign.py
Matlab Python

Pole-Zero demo (z-domain / Discrete-Time)

Interactive placement and dragging of poles (×) and zeros (○) in the z-plane. Magnitude/phase frequency response and impulse response update in real time.

$ ./pezdemo.py
Matlab Python

Spectrogram demo

Demonstrates how window type, window size, FFT size, and overlap affect the spectrogram of linear chirps, sinusoids, or audio files.

$ ./specgramdemo.py
Matlab Python

DSP First book series

James H. McClellan, Ronald W. Schafer, and Mark A. Yoder wrote three books together, the first 6 chapters are almost the same, as well as two chapters on $z$-Transforms and IIR Filters.

  • DSP First: A Multimedia Approach (523 pp.) was published in 1998, focused almost entirely on the digital domain.
  • Signal Processing First (512 pp.), published in 2003, expanded the original book, adding several chapters covering Continuous-Time Linear Time-Invariant (LTI) systems, the Continuous-Time Fourier Transform (CTFT), and analog filtering/modulation/sampling. It was designed to serve as a complete, single-semester course covering both analog and digital concepts.
  • DSP First, second edition (592 pp.) features three new chapters on Discrete-Time Fourier Transform, The Discrete Fourier Transform, and the Fourier Series.
Chapters DSP First: A Multimedia Approach (1st Ed, 1998) Signal Processing First (2003) DSP First
(2nd Ed, 2016)
Introduction Chap. 1 Chap. 1 Chap. 1
Sinusoids Chap. 2 Chap. 2 Chap. 2
Spectrum Representation Chap. 3 Chap. 3 Chap. 3
Sampling & Aliasing Chap. 4 Chap. 4 Chap. 4
FIR Filters Chap. 5 Chap. 5 Chap. 5
Frequency Response of FIR Filters Chap. 6 Chap. 6 Chap. 6
Discrete-Time Fourier Transform Chap. 7
Discrete Fourier Transform Chap. 8
$z$-Transforms Chap. 7 Chap. 7 Chap. 9
IIR Filters Chap. 8 Chap. 8 Chap. 10
Continuous-Time Signals and LTI Systems Chap. 9
Frequency Response Chap. 10
Continuous-Time Fourier Transform Chap. 11
Filtering, Modulation, and Sampling Chap. 12
Computing the Spectrum Chap. 13
Spectrum Analysis Chap. 9
Complex Numbers Appx. A Appx. A Appx. A
Programming in Matlab Appx. B Appx. B Appx. B
Laboratory Projects Appx. C Appx. C Labs online
CD-ROM Demos Appx. D Appx. D Demos online
Fourier Series Appx. C

Other books by the authors

About

DSP demos from dspfirst.gatech.edu ported to Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors