Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Convolution</title>
- <link href="../new/css/default.css" rel="stylesheet" type="text/css" />
- <script type='text/javascript' src='../new/js/jquery-1.5.js'></script>
- <script type='text/javascript' src='../new/js/jquery.droppy.js'></script>
- <link rel="stylesheet" href="../new/css/droppy.css" type="text/css" />
- <script type='text/javascript' src='../new/js/jcc.js'></script>
- <script>
- $(function(){
- if($.browser.msie){
- if($.browser.version.substr(0,1)!="9"){
- $('#greenBox2').corner({tl:{radius:5}, tr:{radius:5}, bl:{radius:5}, br:{radius:5}, antiAlias:true });
- }
- }else{
- $('#greenBox2').corner({tl:{radius:5}, tr:{radius:5}, bl:{radius:3}, br:{radius:5}, antiAlias:true });
- }
- });
- </script>
- <link rel="stylesheet" href="../new/css/jquery.treeview.css" />
- <script src="../new/js/jquery.cookie.js" type="text/javascript"></script>
- <script src="../new/js/jquery.treeview.js" type="text/javascript"></script>
- <script type="text/javascript" src="../new/js/demo.js"></script>
- </head>
- <body>
- <div id="divPage">
- <div id="wrapper" class="not-logged-in">
- <!-- Header -->
- <div id="header">
- <h1>The Scientist and Engineer's Guide to<br />Digital Signal Processing<br /><span class="txtBlue txt26">By Steven W. Smith, Ph.D.</span></h1>
- <div id="menu">
- <ul id='nav' style="margin-left:10px;"><li><a href="../index.html">Home</a></li><li><a href="../pdfbook.html" class="selected">The Book by Chapters</a></li><li class="drop"><a href="../about.html">About the Book</a>
- <ul>
- <li><a href="../copyrite.html">Copyright and permissible use</a></li>
- <li><a href="../whatdsp.html">What is DSP?</a></li>
- <li><a href="../eightres.html">8 good reasons for learning DSP</a></li>
- <li><a href="../reviews.html">Comments by reviewers</a></li>
- <li><a href="../errata.html">Errata</a></li>
- <li><a href="download.html">Free Software and Teaching Aids</a></li>
- <li><a href="../editions.html">Differences Between Editions</a></li>
- </ul>
- </li><li><a href="../swsmith.html">Steven W. Smith</a></li><li><a href="http://www.dsprelated.com/blogs-1/nf/Steve_Smith.php">Blog</a></li><li><a href="../contact.html">Contact</a></li>
- </ul>
- <script type="text/javascript">$(function() {$("#nav").droppy();});</script>
- </div>
- </div>
- <!-- Content -->
- <!-- -->
- <div id="columnLeft">
- <div class="box">
- <h2>Book Search</h2>
- <div id="search">
- <form action="http://www.dspguide.com/search.php" method="post">
- <input type="text" name="searchfor" class="txtField" />
- <input type="image" src="../new/images/btn-go.png" name="Submit" value="Submit" class="button" />
- <div class="clear"><!-- --></div>
- </form>
- </div>
- </div>
- <div class="box">
- <h2>Download this chapter in PDF format</h2>
- <b><a href="http://www.dspguide.com/CH6.PDF">Chapter6.pdf</a></b>
- <br />
- <img src="../new/images/adobe-reader.png" alt="" vspace="5" />
- </div>
- <div class="box">
- <h2>Table of contents</h2>
- <ul id="red" class="treeview-red">
- <ul style="border-top:1px solid #aeaeeb;"><li style="border-top:1px solid #aeaeeb;"><a href="../ch1.html">1: The Breadth and Depth of DSP</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch1/1.html">The Roots of DSP</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch1/2.html" style="color:#b4b4e9;">Telecommunications</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch1/3.html">Audio Processing</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch1/4.html">Echo Location</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch1/5.html">Image Processing</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2.html">2: Statistics, Probability and Noise</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/1.html">Signal and Graph Terminology</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/2.html" style="color:#b4b4e9;">Mean and Standard Deviation</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/3.html">Signal vs. Underlying Process</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/4.html">The Histogram, Pmf and Pdf</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/5.html">The Normal Distribution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/6.html">Digital Noise Generation</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch2/7.html">Precision and Accuracy</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3.html">3: ADC and DAC</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/1.html">Quantization</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/2.html" style="color:#b4b4e9;">The Sampling Theorem</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/3.html">Digital-to-Analog Conversion</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/4.html">Analog Filters for Data Conversion</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/5.html">Selecting The Antialias Filter</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/6.html">Multirate Data Conversion</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch3/7.html">Single Bit Data Conversion</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4.html">4: DSP Software</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/1.html">Computer Numbers</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/2.html" style="color:#b4b4e9;">Fixed Point (Integers)</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/3.html">Floating Point (Real Numbers)</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/4.html">Number Precision</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/5.html">Execution Speed: Program Language</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/6.html">Execution Speed: Hardware</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch4/7.html">Execution Speed: Programming Tips</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5.html">5: Linear Systems</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/1.html">Signals and Systems</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/2.html" style="color:#b4b4e9;">Requirements for Linearity</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/3.html">Static Linearity and Sinusoidal Fidelity</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/4.html">Examples of Linear and Nonlinear Systems</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/5.html">Special Properties of Linearity</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/6.html">Superposition: the Foundation of DSP</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/7.html">Common Decompositions</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch5/8.html">Alternatives to Linearity</a></li></ul></li><li class="open" style="border-top:1px solid #aeaeeb;"><a href="../ch6.html" style="color:#b4b4e9;">6: Convolution</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="1.html">The Delta Function and Impulse Response</a></li><li style="border-top:1px solid #aeaeeb;"><a href="2.html" style="color:#b4b4e9;">Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="3.html">The Input Side Algorithm</a></li><li style="border-top:1px solid #aeaeeb;"><a href="4.html">The Output Side Algorithm</a></li><li style="border-top:1px solid #aeaeeb;"><a href="5.html">The Sum of Weighted Inputs</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch7.html">7: Properties of Convolution</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch7/1.html">Common Impulse Responses</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch7/2.html" style="color:#b4b4e9;">Mathematical Properties</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch7/3.html">Correlation</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch7/4.html">Speed</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8.html">8: The Discrete Fourier Transform</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/1.html">The Family of Fourier Transform</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/2.html" style="color:#b4b4e9;">Notation and Format of the Real DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/3.html">The Frequency Domain's Independent Variable</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/4.html">DFT Basis Functions</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/5.html">Synthesis, Calculating the Inverse DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/6.html">Analysis, Calculating the DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/7.html">Duality</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/8.html">Polar Notation</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch8/9.html">Polar Nuisances</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch9.html">9: Applications of the DFT</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch9/1.html">Spectral Analysis of Signals</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch9/2.html" style="color:#b4b4e9;">Frequency Response of Systems</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch9/3.html">Convolution via the Frequency Domain</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10.html">10: Fourier Transform Properties</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/1.html">Linearity of the Fourier Transform</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/2.html" style="color:#b4b4e9;">Characteristics of the Phase</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/3.html">Periodic Nature of the DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/4.html">Compression and Expansion, Multirate methods</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/5.html">Multiplying Signals (Amplitude Modulation)</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/6.html">The Discrete Time Fourier Transform</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch10/7.html">Parseval's Relation</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11.html">11: Fourier Transform Pairs</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/1.html">Delta Function Pairs</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/2.html" style="color:#b4b4e9;">The Sinc Function</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/3.html">Other Transform Pairs</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/4.html">Gibbs Effect</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/5.html">Harmonics</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch11/6.html">Chirp Signals</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch12.html">12: The Fast Fourier Transform</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch12/1.html">Real DFT Using the Complex DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch12/2.html" style="color:#b4b4e9;">How the FFT works</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch12/3.html">FFT Programs</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch12/4.html">Speed and Precision Comparisons</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch12/5.html">Further Speed Increases</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch13.html">13: Continuous Signal Processing</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch13/1.html">The Delta Function</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch13/2.html" style="color:#b4b4e9;">Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch13/3.html">The Fourier Transform</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch13/4.html">The Fourier Series</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14.html">14: Introduction to Digital Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/1.html">Filter Basics</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/2.html" style="color:#b4b4e9;">How Information is Represented in Signals</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/3.html">Time Domain Parameters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/4.html">Frequency Domain Parameters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/5.html">High-Pass, Band-Pass and Band-Reject Filters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch14/6.html">Filter Classification</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch15.html">15: Moving Average Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch15/1.html">Implementation by Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch15/2.html" style="color:#b4b4e9;">Noise Reduction vs. Step Response</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch15/3.html">Frequency Response</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch15/4.html">Relatives of the Moving Average Filter</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch15/5.html">Recursive Implementation</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch16.html">16: Windowed-Sinc Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch16/1.html">Strategy of the Windowed-Sinc</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch16/2.html" style="color:#b4b4e9;">Designing the Filter</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch16/3.html">Examples of Windowed-Sinc Filters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch16/4.html">Pushing it to the Limit</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch17.html">17: Custom Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch17/1.html">Arbitrary Frequency Response</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch17/2.html" style="color:#b4b4e9;">Deconvolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch17/3.html">Optimal Filters</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch18.html">18: FFT Convolution</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch18/1.html">The Overlap-Add Method</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch18/2.html" style="color:#b4b4e9;">FFT Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch18/3.html">Speed Improvements</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch19.html">19: Recursive Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch19/1.html">The Recursive Method</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch19/2.html" style="color:#b4b4e9;">Single Pole Recursive Filters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch19/3.html">Narrow-band Filters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch19/4.html">Phase Response</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch19/5.html">Using Integers</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch20.html">20: Chebyshev Filters</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch20/1.html">The Chebyshev and Butterworth Responses</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch20/2.html" style="color:#b4b4e9;">Designing the Filter</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch20/3.html">Step Response Overshoot</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch20/4.html">Stability</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch21.html">21: Filter Comparison</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch21/1.html">Match #1: Analog vs. Digital Filters</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch21/2.html" style="color:#b4b4e9;">Match #2: Windowed-Sinc vs. Chebyshev</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch21/3.html">Match #3: Moving Average vs. Single Pole</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22.html">22: Audio Processing</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/1.html">Human Hearing</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/2.html" style="color:#b4b4e9;">Timbre</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/3.html">Sound Quality vs. Data Rate</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/4.html">High Fidelity Audio</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/5.html">Companding</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/6.html">Speech Synthesis and Recognition</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch22/7.html">Nonlinear Audio Processing</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23.html">23: Image Formation & Display</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/1.html">Digital Image Structure</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/2.html" style="color:#b4b4e9;">Cameras and Eyes</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/3.html">Television Video Signals</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/4.html">Other Image Acquisition and Display</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/5.html">Brightness and Contrast Adjustments</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/6.html">Grayscale Transforms</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch23/7.html">Warping</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24.html">24: Linear Image Processing</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/1.html">Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/2.html" style="color:#b4b4e9;">3x3 Edge Modification</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/3.html">Convolution by Separability</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/4.html">Example of a Large PSF: Illumination Flattening</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/5.html">Fourier Image Analysis</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/6.html">FFT Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch24/7.html">A Closer Look at Image Convolution</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch25.html">25: Special Imaging Techniques</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch25/1.html">Spatial Resolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch25/2.html" style="color:#b4b4e9;">Sample Spacing and Sampling Aperture</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch25/3.html">Signal-to-Noise Ratio</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch25/4.html">Morphological Image Processing</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch25/5.html">Computed Tomography</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26.html">26: Neural Networks (and more!)</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/1.html">Target Detection</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/2.html" style="color:#b4b4e9;">Neural Network Architecture</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/3.html">Why Does it Work?</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/4.html">Training the Neural Network</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/5.html">Evaluating the Results</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch26/6.html">Recursive Filter Design</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27.html">27: Data Compression</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/1.html">Data Compression Strategies</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/2.html" style="color:#b4b4e9;">Run-Length Encoding</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/3.html">Huffman Encoding</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/4.html">Delta Encoding</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/5.html">LZW Compression</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/6.html">JPEG (Transform Compression)</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch27/7.html">MPEG</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28.html">28: Digital Signal Processors</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/1.html">How DSPs are Different from Other Microprocessors</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/2.html" style="color:#b4b4e9;">Circular Buffering</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/3.html">Architecture of the Digital Signal Processor</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/4.html">Fixed versus Floating Point</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/5.html">C versus Assembly</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/6.html">How Fast are DSPs?</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch28/7.html">The Digital Signal Processor Market</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29.html">29: Getting Started with DSPs</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/1.html">The ADSP-2106x family</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/2.html" style="color:#b4b4e9;">The SHARC EZ-KIT Lite</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/3.html">Design Example: An FIR Audio Filter</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/4.html">Analog Measurements on a DSP System</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/5.html">Another Look at Fixed versus Floating Point</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch29/6.html">Advanced Software Tools</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30.html">30: Complex Numbers</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/1.html">The Complex Number System</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/2.html" style="color:#b4b4e9;">Polar Notation</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/3.html">Using Complex Numbers by Substitution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/4.html">Complex Representation of Sinusoids</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/5.html">Complex Representation of Systems</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch30/6.html">Electrical Circuit Analysis</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch31.html">31: The Complex Fourier Transform</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch31/1.html">The Real DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch31/2.html" style="color:#b4b4e9;">Mathematical Equivalence</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch31/3.html">The Complex DFT</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch31/4.html">The Family of Fourier Transforms</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch31/5.html">Why the Complex Fourier Transform is Used</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch32.html">32: The Laplace Transform</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch32/1.html">The Nature of the s-Domain</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch32/2.html" style="color:#b4b4e9;">Strategy of the Laplace Transform</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch32/3.html">Analysis of Electric Circuits</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch32/4.html">The Importance of Poles and Zeros</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch32/5.html">Filter Design in the s-Domain</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33.html">33: The z-Transform</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/1.html">The Nature of the z-Domain</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/2.html" style="color:#b4b4e9;">Analysis of Recursive Systems</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/3.html">Cascade and Parallel Stages</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/4.html">Spectral Inversion</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/5.html">Gain Changes</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/6.html">Chebyshev-Butterworth Filter Design</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch33/7.html">The Best and Worst of DSP</a></li></ul></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34.html">34: Explaining Benford's Law</a><ul><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/1.html">Frank Benford's Discovery</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/2.html" style="color:#b4b4e9;">Homomorphic Processing</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/3.html">The Ones Scaling Test</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/4.html">Writing Benford's Law as a Convolution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/5.html">Solving in the Frequency Domain</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/6.html">Solving Mystery #1</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/7.html">Solving Mystery #2</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/8.html">More on Following Benford's law</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/9.html">Analysis of the Log-Normal Distribution</a></li><li style="border-top:1px solid #aeaeeb;"><a href="../ch34/10.html">The Power of Signal Processing</a></li></ul></li>
- </ul>
- </ul>
- </div>
- <div class="box">
- <h2>How to order your own hardcover copy</h2>
- Wouldn't you rather have a bound book instead of 640 loose pages?<br />
- Your laser printer will thank you!<br />
- <b>Order from <a href="http://www.amazon.com/Scientist-Engineers-Digital-Signal-Processing/dp/0966017633/ref=pd_bxgy_b_img_a">Amazon.com</a>.</b>
- </div>
- </div>
- <!-- -->
- <div id="columnRight">
- <div id="adbox">
- </div>
- <div class="breadcrumbs"><a href="../ch6.html">Chapter 6 - Convolution</a> / Convolution</div><h2>Chapter 6: Convolution</h2><div class="subTitle">Convolution</div><p><div style="text-align: justify"><p>Let's summarize this way of understanding how a system changes an input
- signal into an output signal. First, the input signal can be decomposed into a set
- of impulses, each of which can be viewed as a scaled and shifted delta function.
- Second, the output resulting from each impulse is a scaled and shifted version
- of the impulse response. Third, the overall output signal can be found by
- adding these scaled and shifted impulse responses. In other words, if we know
- a system's impulse response, then we can calculate what the output will be for
- any possible input signal. This means we know <i>everything</i> about the system.
- There is nothing more that can be learned about a linear system's characteristics.
- (However, in later chapters we will show that this information can be
- represented in different forms). </p>
- <p>The impulse response goes by a different name in some applications. If the
- system being considered is a <i>filter</i>, the impulse response is called the <span style="font-weight: bold">filter
- kernel</span>, the <span style="font-weight: bold">convolution kernel</span>, or simply, the <span style="font-weight: bold">kernel</span>. In image processing, the
- impulse response is called the <span style="font-weight: bold">point spread function</span>. While these terms are
- used in slightly different ways, they all mean the same thing, the signal
- produced by a system when the input is a delta function.</p>
- <div style="text-align: center; margin: 20px;"><img src="../graphics/F_6_1.gif" border="0" alt=""></img></div>
- <p>Convolution is a formal mathematical operation, just as multiplication,
- addition, and integration. Addition takes two <i>numbers</i> and produces a third
- <i>number</i>, while convolution takes two <i>signals</i> and produces a third <i>signal</i>.
- Convolution is used in the mathematics of many fields, such as probability and
- statistics. In linear systems, convolution is used to describe the relationship
- between three signals of interest: the input signal, the impulse response, and the
- output signal.</p>
- <p>Figure 6-2 shows the notation when convolution is used with linear systems.
- An input signal, <i>x</i>[<i>n</i>], enters a linear system with an impulse response, <i>h</i>[<i>n</i>], resulting in an output signal, <i>y</i>[<i>n</i>]. In equation form: <i>x</i>[<i>n</i>] * <i>h</i>[<i>n</i>] = <i>y</i>[<i>n</i>].
- Expressed in words, the input signal convolved with the impulse response is
- equal to the output signal. Just as addition is represented by the plus, +, and
- multiplication by the cross, ×, convolution is represented by the star, *. It is
- unfortunate that most programming languages also use the star to indicate
- multiplication. A star in a computer program means multiplication, while a star
- in an equation means convolution. </p>
- <div style="text-align: center; margin: 20px;"><img src="../graphics/F_6_2.gif" border="0" alt=""></img></div>
- <div style="text-align: center; margin: 20px;"><img src="../graphics/F_6_3.gif" border="0" alt=""></img></div>
- <p>Figure 6-3 shows convolution being used for low-pass and high-pass filtering.
- The example input signal is the sum of two components: three cycles of a sine
- wave (representing a high frequency), plus a slowly rising ramp (composed of
- low frequencies). In (a), the impulse response for the low-pass filter is a smooth
- arch, resulting in only the slowly changing ramp waveform being passed to the
- output. Similarly, the high-pass filter, (b), allows only the more rapidly
- changing sinusoid to pass. </p>
- <p>Figure 6-4 illustrates two additional examples of how convolution is used to
- process signals. The inverting attenuator, (a), flips the signal top-for-bottom,
- and reduces its amplitude. The discrete derivative (also called the first
- difference), shown in (b), results in an output signal related to the <i>slope</i> of the
- input signal.</p>
- <p>Notice the lengths of the signals in Figs. 6-3 and 6-4. The input signals are 81
- samples long, while each impulse response is composed of 31 samples. In most
- DSP applications, the input signal is hundreds, thousands, or even millions of
- samples in length. The impulse response is usually much shorter, say, a few
- points to a few hundred points. The mathematics behind convolution doesn't
- restrict how long these signals are. It does, however, specify the length of the
- output signal. The length of the output signal is</p>
- <div style="text-align: center; margin: 20px;"><img src="../graphics/F_6_4.gif" border="0" alt=""></img></div>
- <p>equal to the length of the input signal, plus the length of the impulse response,
- minus one. For the signals in Figs. 6-3 and 6-4, each output signal is: 81 + 31 - 1 = 111 samples long. The input signal runs from sample 0 to 80, the
- impulse response from sample 0 to 30, and the output signal from sample 0 to
- 110. </p>
- <p>Now we come to the detailed mathematics of convolution. As used in Digital
- Signal Processing, convolution can be understood in two separate ways. The
- first looks at convolution from the <span style="font-weight: bold">viewpoint of the input signal</span>. This involves
- analyzing how each sample in the input signal <i>contributes</i> to many points in the
- output signal. The second way looks at convolution from the <span style="font-weight: bold">viewpoint of the
- output signal</span>. This examines how each sample in the output signal has <i>received</i>
- information from many points in the input signal.</p>
- <p>Keep in mind that these two perspectives are different ways of thinking about
- the same mathematical operation. The first viewpoint is important because it
- provides a <i>conceptual</i> understanding of how convolution pertains to DSP. The
- second viewpoint describes the <i>mathematics</i> of convolution. </p>
- <p>This typifies one of the most difficult tasks you will encounter in DSP: making
- your conceptual understanding fit with the jumble of mathematics used to
- communicate the ideas.</p></div></p>Next Section: <a href="3.html">The Input Side Algorithm</a>
- </div>
- <div class="clear"><!-- --></div>
- </div>
- </div>
- <!-- Footer -->
- <div id="footer">
- <a href="../index.html">Home</a> | <a href="../pdfbook.html">The Book by Chapters</a> | <a href="../about.html">About the Book</a> | <a href="../swsmith.html">Steven W. Smith</a> | <a href="http://www.dsprelated.com/blogs-1/nf/Steve_Smith.php">Blog</a> | <a href="../contact.html">Contact</a>
- <br />
- Copyright © 1997-2011 by California Technical Publishing
- </div>
- <script type="text/javascript">
- var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
- document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
- </script>
- <script type="text/javascript">
- try {
- var pageTracker = _gat._getTracker("UA-1774944-11");
- pageTracker._trackPageview();
- } catch(err) {}</script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement