Circular Convolution

The questions below are due on Thursday April 10, 2025; 02:00:00 PM.
 
You are not logged in.

Please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.mit.edu) to authenticate, and then you will be redirected back to this page.

Part a. Write a Python program called conv to compute the convolution of two discrete-time signals: x_1[n] and x_2[n]. Assume that the signal x_1[n] is zero outside the range 0\le n\lt N_1 and that the signal x_2[n] is zero outside the range 0\le n\lt N_2. Represent these signals as Python lists x_1 and x_2 where the first element in each list represents the value of the signal at n=0 and the lengths of x_1 and x_2 are N_1 and N_2 respectively.

Demonstrate the use of your program by convolving two rectangular pulses: one of length 3 and the other of length 7.

Part b. Write a Python program called circconv to compute the circular convolution of two discrete-time signals: x_1[n] and x_2[n], as described in the previous part. Inputs to circconv should include the two input lists as well as the analysis width N of the circular convolution.

Demonstrate the use of your program by circularly convolving two rectangular pulses that are each of length 32 using an analysis width of N=32. Compare the result of circular convolution with that of conventional convolution. Briefly explain the relation of these two results.

Part c.

Let x_3[n] represent the following signal:

x_3[n]=\cases{\sin(2\pi n/32)&if $0\le n\lt32$\cr0&otherwise\cr}
Compute the conventional convolution of x_3[\cdot] with itself.

Compare the result with an analogous circular convolution, where the analysis window is N=32. Briefly explain how the two results differ.

Please upload a single pdf file that contains your answers to all parts of this problem:

 No file selected