You are previewing Signal Processing in C.
O'Reilly logo
Signal Processing in C

Book Description

Signal Processing in C Written by experts in the field, this invaluable guide provides you with a unified software structure for digital signal processing and numerical analysis in C. Using extensive examples, it clearly explains basic digital signal processing. This book shows you how to develop modular, well structured C code for any DSP application. Signal Processing in C also:

* Provides a wealth of practical, real-world algorithms

* Includes complete coverage of DSP fundamentals such as discrete-time frequency, waveforms, the Nyquist Frequency, aliasing, band pass sampling, and more

* Illuminates theoretical concepts through gradual, step-by-step development of actual C code

* Shows you how to design programs utilizing the most popular signal filtering methods, including Fourier, Fast Fourier, FIR and IIR filters

Table of Contents

  1. Cover Page
  2. Title Page
  3. Copyright
  4. Acknowledgments
  5. Contents
  6. List of Figures
  7. Introduction
    1. PROJECT ORIENTATION
    2. THE THREE PARTS
    3. ENHANCED READABILITY
    4. SCOPE
    5. A MENU-DRIVEN DSP ENVIRONMENT AND COMPANION LIBRARY
  8. PART 1: Bells and Bell Choirs
    1. CHAPTER 1: The Fundamentals of Digital Signal Processing
      1. 1.1 DISCRETE-TIME FREQUENCIES AND WAVEFORMS
      2. 1.2 THE NYQUIST FREQUENCY: THE HIGHEST DISCRETE-TIME FREQUENCY
      3. 1.3 ALIASING AND BANDPASS SAMPLING
      4. 1.4 DISCRETE-TIME SOLUTIONS ARE EXACT
      5. 1.5 BUILDING ON THE FOUNDATION
    2. CHAPTER 2: Continuous-Time Simple Harmonic Oscillators
      1. 2.1 LINEARITY AND TIME-INVARIANCE
      2. 2.2 TWO SIMPLE HARMONIC OSCILLATORS
      3. 2.3 REDUCTION TO FIRST-ORDER EQUATIONS
      4. 2.4 THE MATRIX EQUATION VIEWPOINT
      5. 2.5 APPLICATION TO THE MASS-AND-SPRING SYSTEM
      6. 2.6 THE THREE CATEGORIES OF SOLUTIONS
    3. CHAPTER 3: Discrete-Time Simple Harmonic Oscillators
      1. 3.1 FIRST-ORDER DISCRETE-TIME SOLUTIONS
      2. 3.2 THE DISCRETE-TIME MATRIX SOLUTION
      3. 3.3 THE DISCRETE-TIME SIMPLE HARMONIC OSCILLATOR
      4. 3.4 THE SECOND-ORDER APPROXIMATION
      5. 3.5 CONCLUSIONS
    4. CHAPTER 4: A Bell and an Organ Pipe
      1. 4.1 THE EQUATIONS
      2. 4.2 A BELL
      3. 4.3 AN ORGAN PIPE
      4. 4.4 SCALING THE WAVEFORM
    5. CHAPTER 5: A Choir of Bells
      1. 5.1 PLANNING THE PROJECT
      2. 5.2 AN ENCAPSULATED BELL
      3. 5.3 PARSING, PLAYING, AND GRAPHING
      4. 5.4 THE MUSICAL NOTATION
  9. PART II: Supporting Chapters
    1. CHAPTER 6: Programming Vectors and Matrices
      1. 6.1 TOWARD A NEW STANDARD
      2. 6.2 AN ENCAPSULATED VECTOR
      3. 6.3 BUT IS IT EFFICIENT?
      4. 6.4 SOME POSSIBLE ALTERNATIVES
      5. 6.5 MATRICES
      6. 6.6 MATRIX MULTIPLICATION
      7. 6.7 EFFICIENCY OF MATRIX MULTIPLICATION
    2. CHAPTER 7: The Function Interface Standard
      1. 7.1 HEADER FILES AND FUNCTION PROTOTYPES
      2. 7.2 SOME EXAMPLES FROM THE LIBRARY
      3. 7.3 ERROR REPORTING AND CONTROL
      4. 7.4 COMPLEX NUMBERS
      5. 7.5 MACROS
      6. 7.6 VECTORS
    3. CHAPTER 8: Fourier Transforms, Uncertainty, and Convolutions
      1. 8.1 INTRODUCTION TO FOURIER TRANSFORMS
      2. 8.2 THE BRA-AND-KET NOTATION
      3. 8.3 THE ORTHOGONALITY THEOREM
      4. 8.4 PREPARATIONS
      5. 8.5 THE FOURIER TRANSFORM THEOREM
      6. 8.6 THE SQUARE PULSE
      7. 8.7 SOME CAUTIONS
      8. 8.8 MORE ABOUT THE BRA AND KET
      9. 8.9 EQUAL POWERS AND OTHER PROPERTIES
      10. 8.10 THE UNCERTAINTY RELATION
      11. 8.11 MINIMUM UNCERTAINTY
      12. 8.12 SOME EXTENSIONS
      13. 8.13 THE TRANSFER FUNCTION
      14. 8.14 CONVOLUTIONS
    4. CHAPTER 9: Discrete Fourier Transforms
      1. 9.1 THE CENTRAL IDEAS
      2. 9.2 THE FOURIER TRANSFORM IN FOUR CASES
    5. CHAPTER 10: Windowing the Data
      1. 10.1 RESTRICTIONS TO FINITE TIME
      2. 10.2 WINDOWING
      3. 10.3 UNCERTAINTY PRODUCTS FOR FINITE WINDOWS
      4. 10.4 PRACTICAL WINDOW COMPARISONS
      5. 10.5 IIR, FIR, AND DFT FILTERS
    6. CHAPTER 11: A Unified View of Fourier Transforms
      1. 11.1 GROUPS AND CHARACTERS
      2. 11.2 INTEGRATION ON GROUPS
      3. 11.3 THE GROUP OF CHARACTERS
      4. 11.4 DISCRETE CONVOLUTIONS
      5. 11.5 FOURIER TRANSFORM ON A GROUP
      6. 11.6 SPECIAL CASES OF THE FOURIER TRANSFORM
    7. CHAPTER 12: The Fast Fourier Transform
      1. 12.1 THE BRUTE FORCE METHOD
      2. 12.2 THE FAST METHOD
      3. 12.3 THE FAST FOURIER TRANSFORM
      4. 12.4 THE FFT OF TWO REAL VECTORS
  10. PART III: Waveforms and Filters
    1. CHAPTER 13: From Waveforms to Filters
      1. 13.1 INTRODUCTION
      2. 13.2 THE IMPULSE RESPONSE TELLS ALL
      3. 13.2.2 The FIR Technique
      4. 13.3 FREQUENCY ANALYSIS OF WAVEFORMS
      5. 13.4 SPECTRA OF THE INITIAL TRANSIENTS
      6. 13.5 SPECIFYING THE FILTER
    2. CHAPTER 14: Filtering and Z-Transforms
      1. 14.1 INTRODUCTION
      2. 14.2 POLES AND ZEROS FROM DIFFERENTIAL EQUATIONS
      3. 14.3 DISCRETE-TIME POLES AND ZEROS
      4. 14.4 THE GENERAL DISCRETE-TIME FILTER
      5. 14.5 COMPUTING THE ZEROS ALL AT ONCE
      6. 14.6 THE GAIN OF A SYSTEM OF ZEROS
      7. 14.7 COMPUTING THE POLES ALL AT ONCE
      8. 14.8 GAIN OF THE POLES AND RINGING
      9. 14.9 THE GAIN OF DISCRETE-TIME FILTERS
    3. CHAPTER 15: Programming the Filters
      1. 15.1 NUMERICAL ERRORS
      2. 15.2 CIRCULAR BUFFERS
      3. 15.3 REPRESENTING THE POLES AND ZEROS
      4. 15.4 COMPUTING THE COEFFICIENTS
      5. 15.5 THE FILTERING ROUTINE
    4. CHAPTER 16: Extracting the Filter from a Waveform
      1. 16.1 GENERAL LINEAR PREDICTIVE ESTIMATION
      2. 16.2 AN LP PROGRAM
      3. 16.3 THE GAIN OF A FILTER
      4. 16.4 TESTING THE LP METHOD
      5. 16.5 LP AS A SPECTRAL ESTIMATOR
      6. 16.6 LP APPLIED TO THE GLOCKENSPIEL
      7. 16.7 LP APPLIED TO THE PIANO
      8. 16.8 OTHER INSTRUMENTS AND ADDITIONAL CHALLENGES
  11. References
  12. Index