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).
Install PyQt6 and dependencies first.
pip install PyQt6 numpy scipy matplotlibTests the user's ability to identify the amplitude, frequency, and phase
of a displayed cosine wave:
$ ./sindrill.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./phrace.py| Matlab | Python |
|---|---|
![]() |
![]() |
Timed quiz on phasor / complex-number operations.
$ ./zdrill.py| Matlab | Python |
|---|---|
![]() |
![]() |
Illustrates how a periodic signal is built up from its Fourier series.
$ ./fseriesdemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./cspin.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./con2dis.py| Matlab | Python |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
$ ./dconvdemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
Visualises continuous-time convolution interactively: y(t) = ∫ x(τ) h(t−τ) dτ
$ ./cconvdemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./dltidemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./cltidemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
$ ./filterdesign.py| Matlab | Python |
|---|---|
![]() |
![]() |
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 |
|---|---|
![]() |
![]() |
Demonstrates how window type, window size, FFT size, and overlap affect the spectrogram of linear chirps, sinusoids, or audio files.
$ ./specgramdemo.py| Matlab | Python |
|---|---|
![]() |
![]() |
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
- 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 | ||
|
|
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 |
-
James H. McClellan, known for Parks-McClellan FIR filter design algorithm.
Computer-Based Exercises for Signal Processing Using MATLAB 5, written by James H. McClellan, C. Sidney Burrus, Alan V. Oppenheim, Thomas W. Parks, Ronald W. Schafer, and Hans W. Schuessler, 1994.
-
Ronald W. Schafer co-authored two DSP books with Alan V. Oppenheim, Digital Signal Processing (1975) and Discrete-Time Signal Processing (1st ed. 1989, 2nd ed. 1999, 3rd ed. 2009). Co-authored Digital Processing of Speech Signals with Lawrence R. Rabiner, published in 1978.
-
Mark A. Yoder wrote BeagleBone Cookbook, built campanion website for Discrete-Time Signal Processing 3e, and maintains Signal Processing First website.






























