Fundamentals of Signals and Systems
Lab 2: Convolution, Correlation, and Finding Signals
Files necessary to compute this assignment: rudenko 01.mp4 to rudenko 39.mp4, get tune.m,get tune.p
Introduction
convolution describes the process of a signal x[n] passing through a linear, time-invariant system defined by an impulse response h[n]. Convolution is a central concept that describes every linear, time-invariant system that we create and use. Convolution describes how the circuits affect a given voltage input, how radio waves travel through the atmosphere, how to blur and sharpen images, how to recognize images/faces videos, etc. While many of these systems do not use convolution directly (we often use faster algorithms that indirectly perform convolution), understanding how and why convolution works is essential to all of them.
In this lab assignment, we will focus on understanding convolution and how to use it to design and analyze systems. We will create several system impulse responses and study how each system affects a given signal. We then study a widely used application of convolution, known as “template matching” or “matched filtering,” that is often used to locate images, radar or sonar signals, and musical segments in noisy data sets.
This lab assignment has three learning objectives:
To improve your understanding of convolution
To introduce you to the concept of correlation and template matching
To design your own “Name that tune” algorithm
Your experiment will be divided into three parts, each associated with an individual objective.
Deliverables
This lab assignment has two deliverables:
Your custom “lastname firstname lab2.m” file
Your answers to questions / inclusions of plots specified throughout the lab
(see grading rubric at the end of this document for a complete list of the questions)
Note: there is no special format for this submission, but be clear regarding what answer corresponds to what question.
Please electronically submit these deliverables to your lab teaching assistant via canvas.
Part 1: Convolution for Signal Manipulation
Create a Signal: Open the MATLAB editor and create a script file. In your script, create a discrete-time signal x[n] that is 20 samples in length. Start with this signal containing all zeros (i.e., we are “initializing” the signal). The easiest way to do this is to write:
>> x = zeros(20,1);
In your script file, make your signal x[n] equal to
x[n] = u[n − 3] − u[n − 8] − δ[n − 17] .
There are multiple ways that you can do this. Choose the way that works best for you. Manually plot x[n] and then plot x in MATLAB using the commands
>> n = 0:19;
>> stem(n, x);
>> xlabel(’Samples’);
>> ylabel(’Amplitude’);
Confirm that your plot and MATLAB plot match.
Note: The ftrst index in MATLAB (i.e., x(1)) corresponds to time n = 0 (i.e., x[n]). Therefore, keep in mind that our MATLAB index is always one value ahead of our n.
Convolve with a Delta Function: Now create a system impulse response h[n] that is also 20 samples in length. Create the impulse response h in MATLAB such that h[n] and y[n] are defined by
h[n] = δ[n]
y[n] = x[n] ∗ h[n].
Perform the convolution in MATLAB by using
>> y = conv(x, h)
Note: The output signal y[n] should now have a length of N = 39. We will see why in the next subsection.
Convolve with a Shifted Delta Function: Create a new impulse response h[n] that is also 20 samples in length. Create the impulse response h in MATLAB such that
h[n] = δ[n − k1] ,
for k1 = 5. Determine and plot the convolution y[n] = x[n] ∗ h[n] in MATLAB. Repeat this for
k1 = 6, k1 = 10, and k1 = 19.
Answer: What is relationship between your input x[n], your output y[n], and k1?
Answer: Why is it important to have an output length of N = 39?
Convolve with Two Delta Functions: Create a new impulse response h[n] that is also 20 sam- ples in length. Create the impulse response h in MATLAB such that
h[n] = δ[n] + δ[n − k2] ,
for k2 = 19. Determine and plot the convolution y[n] = x[n] ∗ h[n] in MATLAB. Repeat this for
k2 = 17, k2 = 14, and k2 = 11.
Answer: What is relationship between your input x[n], your output y[n], and k2?
Answer: What does this system do?
Convolve with a Box (Running Averaging): Create a new impulse response h[n] that is also 20 samples in length. Create the impulse response h in MATLAB such that
h[n] = (1/3)(u[n] − u[n − 3]) .
Determine and plot the convolution y[n] = x[n] ∗ h[n] in MATLAB.
Answer: What does this system do? What application might this be used in?
Convolve with a Difference (Edge Detection): Create a new impulse response h[n] that is also 20 samples in length. Create the impulse response h in MATLAB such that
h[n] = −δ[n] + 2δ[n − 1] − δ[n − 2] .
Determine and plot the convolution y[n] = x[n] ∗ h[n] in MATLAB.
Answer: What does this system do? What application might this be used in?
DescriptionIn this final assignment, the students will demonstrate their ability to apply two majorconstructs of the C programming language – Fu
Path finding involves finding a path from A to B. Typically we want the path to have certain properties,such as being the shortest or to avoid going t
Develop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. Th
1 Project 1 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of
1 Project 2 Introduction - the SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of