What are some recommended resources (books, tutorials, lectures, etc.) on digital signal processing, and how to begin working with it on a technical level?
16 Answers
My recommendation in terms of text books is Rick Lyons's Understanding DSP. My review of the latest edition is here.
I, and many others from the ${\tt comp.dsp}$ community and elsewhere, have helped Rick revise parts of the text since the first edition.
For self-study, I know of no better book.
As an on-line, free resource, I recommend Steve Smith's book. Personally, I prefer Rick's style, but Steve's book as the advantage of online accessibility (and the online version is free!).
Edit:
Rick sent me some feedback that I thought I'd share here:
For your colleagues that have a copy of my DSP book, I'll be happy to send them the errata for my book. All they have to do is send me an E-mail telling me (1) The Edition Number, and (2) the Printing Number of their copy of the book. The Printing Number can be found on the page just before the 'Dedication' page. My E-mail address is: R.Lyons [at] ieee.org
I recommend that your colleagues have a look at: http://www.redcedar.com/learndsp.htm
Rick also gave me a long list of online DSP references. There are way too many to put here. I will see about setting up a GoogleDocs version and re-post here later.
-
1$\begingroup$ +1 for the Rick Lyons book recommendation - it's much more accessible than the more common and more academic recommendations such as Oppenheim & Schafer $\endgroup$– Paul RCommented Oct 15, 2011 at 9:57
-
2$\begingroup$ I have just started to read Rick Lyons book as a refresher/self-study - that man has made the field VERY accessible to the reader. He understands that there is more than math for understanding a subject, and that the reader must have an intuitive feel for it. He manages to teach it very very well. $\endgroup$– SpaceyCommented Oct 15, 2011 at 18:11
-
2$\begingroup$ I'm accepting this one as the answer, although I give kudos to Dipan as well for the more theoretical recommendations. $\endgroup$– DulanCommented Oct 16, 2011 at 5:01
-
1$\begingroup$ @someguy: Understood. For me, most of that stuff only makes sense (to me!) when put into the context of solving a problem. Just talking about it theoretically (even if well-explained), makes it harder to grasp. I'll bounce your feedback to Rick! If you have any suggestions about how it can be improved, I'm sure he'd love to hear it. $\endgroup$– Peter K. ♦Commented Jun 21, 2012 at 21:18
-
1$\begingroup$ @IsaacKleinman : Do both! Steve's book is available for free to download: dspguide.com If that works for you, you're done. If not, take a look at Rick's book. $\endgroup$– Peter K. ♦Commented Feb 11, 2013 at 21:12
Paul Falstad's Java applets are a fantastic way to interact with systems and learn them intuitively. The Digital Filter applet is a revelation.
Check out the rest at http://www.falstad.com/mathphysics.html.
For a more informal introduction, I like A Digital Signal Processing Primer by Ken Steiglitz, which is exactly what it says it is. I TAed a class using this text and really liked the style. It's well written, and makes the material pretty interesting.
A DSP Primer is written for a broad audience including:
- Students of DSP in Engineering and Computer Science courses.
- Composers of computer music and those who work with digital sound.
- WWW and Internet developers who work with multimedia.
- General readers interested in science that want an introduction to DSP.
Features:
- Offers a simple and uncluttered step-by-step approach to DSP for first-time users, especially beginners in computer music.
- Designed to provide a working knowledge and understanding of frequency domain methods, including FFT and digital filtering.
- Contains thought-provoking questions and suggested experiments that help the reader to understand and apply DSP theory and techniques.
-
$\begingroup$ If I hadn't already upvoted this one, it would get another +1 just for that Digital Filter applet. $\endgroup$– datageist ♦Commented Oct 28, 2011 at 18:07
The below three are the best referred Text books on this subject.
Discrete-Time Signal Processing, Prentice-Hall Signal Processing Series by Alan V. Oppenheim, Ronald W. Schafer, John R. Buck.
Digital Signal Processing: Principles, Algorithms and Applications, Prentice Hall John G. Proakis, Dimitris K Manolakis
Signals and Systems, Prentice Hall Alan V. Oppenheim, Alan S. Willsky, with S. Hamid
If you need to pick one of them, pick - Discrete-Time Signal Processing Prentice-Hall Signal Processing Series by Alan V. Oppenheim, Ronald W. Schafer, John R. Buck. Of course, as listed in Hossein's answer Sanjit Mitra might just be easy for beginner.
Further books with their individual strengths:
- Digital Processing of Signals, Wiley & Sons by M. Bellanger. Nice intro to filters, very cheap used.
- A Foundation in Digital Communications, Cambridge University Press by Amos Lapidoth. *A really smooth and clean intro to signal theory. Available for free online.
- A statistical Theory of Mobile-Radio Reception, The Bell System Technical Journal (BSTJ), July-Aug 1968. Ever wondered how to model random channels and what they do to signals? Great classical paper, available online.
-
$\begingroup$ Alan V. Oppenheim books are great and widely used! $\endgroup$– RoyiCommented Oct 15, 2011 at 12:55
-
$\begingroup$ You can see a list of Signal Processing books suggested by professor Oppenheim at [DoradoList](www.doradolist.com/alan-oppenheim.html) $\endgroup$– TJ1Commented Jul 13, 2018 at 12:47
For theoretical studies, Oppenheim is the god but if you're going to use it in practice, Mitra is one of the best:
Digital Signal Processing: A Computer-Based Approach, Sanjit K. Mitra
-
1$\begingroup$ @hossein, do you know if it has exercises with solutions? $\endgroup$ Commented Jul 6, 2017 at 2:58
You can visit the MIT OpenCourseWare. A set of 20 video lectures by professor Alan V. Oppenheim.
In addition to the already mentioned books, if you are focused towards algorithm development, Proakis' Digital Signal Processing using MATLAB is an excellent resource for starters. The numerical recipes series is also an excellent resource regarding how to implement some core DSP algorithms (spectral decomposition, convolutions, interpolation and extrapolation etc.) in practical situations.
For me, Oppenheim gives a much more rigorous theoretical treatment to the subject as compared to Proakis. Proakis, I've always felt, provides somewhat more applicability to real world scenarios.
The DSP neophyte who has some mathematical maturity may want to start with
- Martin Vetterli, Jelena Kovačević, Vivek Goyal, Foundations of Signal Processing, 2014.
which is freely available online. The authors have also made their two other books freely available online:
Jelena Kovačević, Vivek Goyal, Martin Vetterli, Fourier and Wavelet Signal Processing, 2013.
Martin Vetterli, Jelena Kovačević, Wavelets and Subband Coding, 2007.
From the preface of Foundations of Signal Processing:
This book covers the foundations for an in-depth understanding of modern signal processing. It contains material that many readers may have seen before scattered across multiple sources, but without the Hilbert space interpretations, which are essential in signal processing. Our aim is to teach signal processing with geometry, that is, to extend Euclidean geometric insights to abstract signals; we use Hilbert space geometry to accomplish that. With this approach, fundamental concepts – such as properties of bases, Fourier representations, sampling, interpolation, approximation, and compression – are often unified across finite dimensions, discrete time, and continuous time, thus making it easier to point out the few essential differences. Unifying results geometrically helps generalize beyond Fourier-domain insights, pushing the understanding farther, faster.
I found this applet very helpful when understanding the nature of convolution in time. The Joy of Convolution. It lets you "draw" your time signals and convolve them so you get a picture of what's happening in the time domain.
I would add to the list the book "Digital Filters", by Richard Hamming. A short classic, rather than a heavy tome.
https://www.amazon.com/dp/B01MS8W9XI
This book will go through different projects that will teach the reader how to write software: to improve their singing, synthesize different guitar sounds, change the human brainwave, break glass, help people to relax and learn about many different sound engineering and DSP tools : DFT, FFT, High pass filter, low pass filter, fundamental frequency, Karplus-strong algorithm. In this book they will learn about: Isochronic tones, Binaural beats, and Monaural beats and how to code them. Then they will be able to come up with their own beats. They will learn about sound waves and a lot more. There are very few books / websites that show people how to code DSP tools. There are a lot that show the theory but not many that show the application, so I think this Book would be very useful for high school students, college students, and inter level employees.
Online courses are a great resources for Self Studying of Signal Processing.
There are many on Coursera:
- Digital Signal Processing.
- Audio Signal Processing for Music Applications.
- Fundamentals of Digital Image and Video Processing.
There are good options on edX as well:
- Discrete Time Signal Processing.
- Signals and Systems, Part 1.
- Signals and Systems, Part 2.
- Discrete Time Signals and Systems, Part 1: Time Domain.
- Discrete Time Signals and Systems, Part 2: Frequency Domain.
Enjoy the ride!
Here you can find a list of great DSP books suggested by top experts such as Professor Alan Oppenheim from MIT.
I routinely teach on-line courses on DSP that combine pre-recorded video that you can watch at your own pace with live interactive workshop sessions and tons of examples and material in Python in Jupyter Notebooks. These courses are geared toward wireless communications and software radio (my primary background), but provide general and practical DSP for many fields by covering foundational topics such as the Fourier, Laplace and z-transforms in a way that you weren't taught in school (very intuitive), and applying that to practical FIR filter design, the FFT, multi-rate processing, and control loop implementations commonly used in software radio. I focus on building a very intuitive understanding of practical signal processing implementations and working in the time and frequency domains.
You can find the latest course offerings through dsprelated.com and the Boston IEEE:
https://www.dsprelated.com/courses
https://ieeeboston.org/2022-courses/
The courses courses are highlighted below with some example graphics (see the links above for a lot more details about each course):
DSP for Wireless Communications
DSP for Software Radio
Python Applications for Digital Design and Signal Processing
Some people like to focus on DSP as a subject in of itself. I like to think that learning is more of a spiral than a linear progression. I would suggest that you pursue an application that interests you that uses signal processing and there are many and growing. Most of the important breakthroughs in DSP were found by people solving their own problems. All the books suggested above are very good. An interesting problem with a simple solution is typically more appealing to a student to a page of proofs, unless you like a page a proofs and that works too.
You can take a look at:
https://www.doradolist.com/signal.html
and see some list of great DSP books recommended by world-renowned Professors Like Oppenheim, Widrow, Kailath etc.
You have received some good advice on academic books on signal processing. Learning about the Z-transform and Shannon-Nyquists sampling theoreme is fundamental to signal processing.
I would argue that learning to program (Python, Matlab or C seems popular) is important to most dsp practitioners. Even those who design fpgas and asics will probably benefit from programming knowledge. I wish that this was a more integrated part of my own dsp education. We learned java from general programming educators, math from general math educators, statistics from… but I find that the math-dsp-programming «cluster» is a thing that require some specialized silo-crossing.