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 – Functions and Arrays – to solve computationalproblems.Arrays provide a convenient way to store &
The standard path finding involves finding the (shortest) path from an origin to a destination, typically on a map. This is anPath 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 through certain obstacles. As the main aim is to thinkabout path finding, we focus on the common task
Develop a program to emulate a purchase transaction at a retail store. This program will have two classes, a LineItem class and a Transaction class. The LineItem class will represent an individualDevelop a program to emulate a purchase transaction at a retail store. Thisprogram will have two classes, a LineItem class and a Transaction class. TheLineItem class will represent an individual line item of merchandise that acustomer is purchasing.
SeaPort Project series For this set of projects for the course, we wish to simulate some of the aspects of a number of Sea Ports. Here are the classes and their instance variables we wish to define: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 Sea Ports. Here are the classes and their instance variables we wish to define: SeaPortProgram e
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 Sea Ports. Here are the classes and their instance variables we wish to define: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 Sea Ports. Here are the classes and their instance variables we wish to define: SeaPortProgram e
The first programming project involves writing a program that parses, using recursive descent, a GUI definition language defined in an input file and generates the GUI that it defines. The grammar for this language is defined below:1Project 1The first programming project involves writing a program that parses, using recursive descent, a GUIdefinition language defined in an input file and generates the GUI that it defines. The grammar for thislanguage is defined below:gui ::= Wi
CMSC 335 Project SeaPort Solved Project 3 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 Sea PortsCMSC 335 Project SolvedProject 3 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 Sea Ports. Here are the classes and their instance variables we wish to define:
CMSC 335 Project 4 Solved SeaPort 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 Sea Ports Here are the classes and their instance variables we wish to defineProject 4 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 Sea Ports. Here are the classes and their instance variables we wish to define: SeaPortProgram ext
CMSC 451 Project 2 Solved The second project involves completing and extending the C++ program that evaluates statements of an expression language contained in the module 3 case studyProject 2 The second project involves completing and extending the C++ program that evaluates statements of an expression language contained in the module 3 case study. The statements of that expression language consist of an arithmetic expression f
CMSC 451 Project 1 Solved The first project involves benchmarking the behavior of Java implementations of one of the following sorting algorithms bubble sort selection sort insertion sort Shell sort, merge sort quick sort or heap sortCMSC 451 Project 1The first project involves benchmarking the behavior of Java implementations of one of thefollowing sorting algorithms, bubble sort, selection sort, insertion sort, Shell sort, merge sort,quick sort or heap sort. You must post your
The ready solutions purchased from Library are already used solutions. Please do not submit them directly as it may lead to plagiarism. Once paid, the solution file download link will be sent to your provided email. Please either use them for learning purpose or re-write them in your own language. In case if you haven't get the email, do let us know via chat support.
Get Free Quote!
253 Experts Online