What books would you recommend to a CS undergraduate that did mostly web programming all his life, in order to pick up signal processing ? I am looking for something at a grad level and more geared toward an average (or below average) programmer.
I found
Ken Steiglitz "A Digital Signal Processing Primer: With Applications to Digital Audio and Computer Music"
one of the most accessible books on the subject (after trying a few of the 'classics'), he explains all needed math well (you do need to know some calculus though, its inevitable, but less than some other books imho). And really tries to give you a feeling/intuition for everything through lots of examples in digital audio (the field I was interested most).
For me it was one of the hardest things to learn through selfstudy I tried so far, but it gives great satisfaction and many "aha!" moments ;)
Probably the most accessible book with reasonable depth is Rick Lyons's Understanding Digital Signal Processing.
This is a new release: Digital Signal Processing 101: Everything you need to know to get started, the synopsis suggests it may be what you are looking for. You may want to wait for a review or extract publication if you cannot afford to buy it in spec.
If you want a free DSP book, check out The Scientist and Engineer's Guide to Digital Signal Processing by Steven W. Smith, Ph.D. I found it handy when I was interning at a national laboratory some years back and was asked to program a DSP chip to do some lock-in amplifying when I had no previous DSP experience (or books available to me on the subject).
DSP is discrete-time signals and systems with fixed/floating point quantization. A quick read that covers the basics of signals and systems is "Signals and Systems Made Ridiculously Simple" by Karu. It's based on a review packet he made as a TA at MIT in 1992. Here's a list of the topics:
- Introduction to Signals and Systems (2 pages)
- Continuous-Time Systems (4)
- The Frequency Domain (6)
- The Laplace Transform (6)
- CT Systems Analysis (6)
- Bode Plots (8)
- Discrete Signals and Z-Transforms (6)
- Discrete-Time Systems (4)
- Generalized Functions (2)
- The Impulse Response and Convolution (4)
- Discrete-Time Convolution (4)
- Continuous-Time Convolution (4)
- Deconvolution (2)
- Causality and Stability (4)
- Feedback (6)
- The Fourier Transform (8)
- Filters (10)
- Modulation (8)
- Sampling (6)
- Fourier Series (6 pages)
If you understand the basics of signals and systems, you should be able to use online tutorials to fill in specific topics as you need them, such as state-space analysis, FIR/IIR filter design, filter banks, adaptive filters, wavelets, random processes (given a prior background in probability and statistics), and ARMA models.
For a more mathematical and less 'engineering' point of view, I particularly liked Wavelets and Filter Banks by Strang and Nguyen -- but only if you have a decent grasp of linear algebra, which you really should if you're doing DSP.
It may help to buy a book with worked/solved examples such as those in Schaum's Outline series:
Signals and Systems by Hsu. Topics:
- Signals and Systems (61 problems)
- Linear Time-Invariant Systems (65)
- Laplace Transform and Continuous-Time LTI Systems (62)
- The Z-Transform and Discrete-Time LTI Systems (60)
- Fourier Analysis of Continuous-Time Signals and Systems (77)
- Fourier Analysis of Discrete-Time Signals and Systems (82)
- State Space Analysis (74 problems)
Digital Signal Processing by Hayes. Topics:
- Signals and Systems (77 problems)
- Fourier Analysis (76)
- Sampling (44)
- The Z-Transform (68)
- Transform Analysis of Systems (62)
- The DFT (63)
- The Fast Fourier Transform (25)
- Implementation of Discrete-Time Systems (64)
- Filter Design (73 problems)
I have found this one : http://www.amazon.com/Signal-Processing-First-James-McClellan/dp/0130909998/ref=sr_1_1?ie=UTF8&s=books&qid=1276906982&sr=8-1 Very easy to understand and very complete. Don't get frightened by the cover with all those kitties ( well, I prefer that to those ants on Deitel)