# Convolution and Fourier Series

September 24, 2017 | Author: Virn Maneqk | Category: Electronic Filter, Fast Fourier Transform, Fourier Transform, Applied Mathematics, Algorithms

#### Description

1

1

Convolution

In class, you’ve learned that the convolution of two signals x[n] and h[n] is defined as x[n] ∗ h[n] =

+∞ X

x[k]h[n − k]

(1)

k=−∞

The purpose of this part of the project is to learn how to use Matlab to convolve signals, and to explore an application to echo cancellation.

1.1

Implementing Convolution using the Matlab function conv

In Matlab the function conv(h,x) convolves the two finite-length sequences represented by the vectors h and x. The function call y = conv(h,x) returns the output y[n] = h[n] ∗ x[n] in the correct order, but does not keep track of the time-indices of y[n]. Part 1: (6 points) 1a. We start with an example. Let x[n] = u[n] − u[n − 6]. Analytically derive x[n] ∗ x[n]. Sketch both x[n] and x[n] ∗ x[n]. 1b. What happens if one repeatedly convolves x[n] with itself? Use conv to find: (i) y[n] = x[n] ∗ x[n]; (ii) z[n] = y[n] ∗ y[n]; and (iii) w[n] = z[n] ∗ z[n]. Use stem to plot x[n], y[n], z[n] and w[n]. After defining x, y, z, w appropriately, your plotting commands may look something like >> >> >> >> >>

figure; subplot(411); subplot(412); subplot(413); subplot(414);

stem(x); stem(y); stem(z); stem(w);

The command subplot(mnk) puts m × n plots on the same page. Attach the plot to the answer booklet. You may recognize that the repeated convolution converges to a “bell” shape (also known as the Gaussian shape in probability theory). You may also look at the implementation of the conv function in Matlab by typing type conv. 1c. When a length-k1 vector is convolved with a length-k2 vector, what is the length of the resulting vector? Explain. What is the length of w[n]? Briefly explain. In Matlab, the time index for vectors starts with 1. However, signals in real applications do not always start at time 1. So, it is important to keep track of the indices manually. In addition, we often need to calculate the response of a causal LTI system with an infinite-length impulse response h[n] to an infinite-length input x[n]. Naturally, Matlab can only keep track of finite-length vectors. Part 2: (8 points) 2a. If h[n] and x[n] are non-zero on the finite intervals a ≤ n ≤ b and c ≤ n ≤ d, respectively, for what interval will y[n] be non-zero? Explain. 2b. Consider the following signal and impulse response: µ ¶n−2 1 x[n] = u[n − 2], 2 h[n] = −δ[n + 1] + 2δ[n − 2]. 2

Construct a vector x for x[n] up to n = 24. Construct a vector h for h[n] over −1 ≤ n ≤ 2. Let y = conv(h,x). On the same page, use the Matlab command stem (with subplot) to plot x, h and y with the correct time indices. Write down the matlab commands for creating x, h, y, and the plot. Attach the plot to the answer booklet. You can overload Matlab operators to operate on a vector component-wise. For example, 0.5.b(1:3) creates a vector [0.5, 0.52 , 0.53 ]. To align the time index, you need to create a vector of time axis when calling stem (e.g. stem(-1:2,h) aligns the 4-element h to start at time index −1).

1.2

Echo Cancellation

A basic signal processing task in many voice applications is echo cancellation. Echos can result from, for example, reflections off walls in conference rooms that are picked up by speaker phones or off mismatched switching equipment in telephone lines. The effect of a single echo can be modelled as: y[n] = x[n] + αx[n − N ],

(2)

where x[n] is the voice signal, N is the delay resulting from the greater distance the echo must travel, and α is a constant modelling the attenuation of signal energy resulting from non-perfect reflection. The example in this part has N = 1000 and α = 0.5. Part 3: (12 points) 3a. In your answer booklet, sketch the impulse response h[n] for the system of (2) for 0 ≤ n ≤ 1500. 3b. An echo removal system must take y[n] as input and produce x[n] as output. Thus, an echo removal system must be described by the difference equation (2) with input x[n] replaced by y[n], and output y[n] replaced by x[n], i.e., x[n] = y[n] + αy[n − N ], which is equivalent to: y[n] = x[n] − αy[n − N ].

(3)

In your answer booklet, analytically derive the impulse response of the above inverse system g[n], and sketch g[n] for 0 ≤ n ≤ 4N . 3c. Verify analytically that h[n] ∗ g[n] = δ[n]. 3d. Load the file lineup.mat into Matlab using load lineup.mat. Type who in Matlab to see the variables loaded in. (Typing clear prior to load will erase all prior variables from your workspace.) Listen to the signal y (with echo) by typing soundsc(y). Process the signal y with your echo removal system using the command x = filter(1,a,y). Type help filter to understand how a should be defined for this function call. Listen to the output of the inverse system by typing soundsc(x). In your answer booklet, use Matlab notation to write down the appropriate a. (Hint, you may use zeros(1,n) to create a vector of n 0’s. Be careful that in Matlab, the time index for vectors always starts with 1.) Attach plots of y and x. Use the commands subplot(211) and subplot(212) to put both plots on the same page. Use the command axis([0 7000 -7 7]) after each plot so that both plots are on the same scale. Point out on the plots where the signals differ, as a result of the echo removal.

3

2

Fourier Series

Fourier series is a representation of periodic signals as a linear combination of harmonically related complex exponentials. A continuous-time periodic function x(t) with period T can be expressed as +∞ X

x(t) =

ak ejkω0 t

(4)

x(t)e−jkω0 t dt,

(5)

k=−∞

where ω0 = 2π/T and ak =

1 T

Z

T

0

i.e., a continuous-time periodic function x(t) is decomposed into a sum of complex exponentials with a discrete set of frequencies {· · · , −2ω0 , −ω0 , 0, ω0 , 2ω0 , · · · }. The computation of the continous-time Fourier series coefficients involves integration. On a computer, one has to resort to numerical integration to compute ak approximately. This part of the project illustrates how this is done in Matlab. The main idea is to discretize x(t), i.e. sampling x(t) with sampling period Ts ¿ T . Let x[n] = x(t)|t=nTs , n = 0, 1, · · · , N − 1, where N = T /Ts . Then, the discrete-time signal x[n] represents samples of x(t) over one period T . One way to approximate (5) is to recognize that 1 ak = T

Z

T

x(t)e−jkω0 t dt ≈

0

N −1 1 X x[n]e−jkω0 nTs Ts T n=0

(6)

(Note that dt ≈ Ts .) This approximation is valid as long as the integrant x(t)e−jkω0 t does not change too much within each sampling period Ts . This holds whenever Ts is sufficiently small and k is not too large (typically the approximation is valid only for k ¿ N ).

2.1

Using fft to Compute Fourier Series Coefficients

Matlab has a powerful build-in function fft to compute the type of summation in (6). Type help fft. You will see that it computes the following: X[k] =

N −1 X

x[n]e−j2πkn/N ,

k = 0, 1, · · · , N − 1.

(7)

n=0

fft stands for “Fast Fourier Transform” — an extremely efficient numerical algorithm for computing the sum above for large N . (Note that the indices start with 0 in (7), but they start with 1 in Matlab.) Part 4: (14 points) 4a. Let X[k] be the fft of x[n], the sampled version of x(t) over one period T . How to obtain the approximate Fourier series coefficients ak in (6) from X[k]? Explain. 4b. Define one period of three periodic square pulses as follows: ½ ½ 1, 0 ≤ t < T2 1, 0 ≤ t < T4 x1 (t) = x2 (t) = T 0, 2 ≤ t < T 0, T4 ≤ t < T 4

½ x3 (t) =

1, 0 ≤ t < T8 0, T8 ≤ t < T

(8)

where the period T = 1ms. In Matlab, construct the corresponding discrete sampled versions x1 [n], x2 [n] and x3 [n] with N = 4096 samples over one period (i.e. Ts = 1ms/4096), and store them in vectors x1, x2, x3. You may find Matlab functions ones and zeroes useful. For example x=[ones(1,20), zeros(1,10)] produces a vector of 20 1’s followed by 10 0’s. Use fft to compute the approximate Fourier series coefficients ak ’s for x1 (t), x2 (t) and x3 (t), for k = 0, 1, · · · , 19. Plot both the time-domain signals and the square magnitudes of the Fourier series coefficients of x1 (t), x2 (t) and x3 (t) (stored in vectors a1, a2, and a3) on the same page using commands similar to that below. Note that ak is a complex number. The time-axis is defined over one period for xi (t). The frequency axis is re-aligned to start from 0. Attach the plot to your report. >> >> >> >> >>

t = (0:1:N-1)*Ts; figure; subplot(321); plot(t,x1); axis([0, 1e-3, -0.2, 1.2]); subplot(322); stem(0:19, abs(a1(1:20)).b2); ...

4c. The Fourier Series of a rectangular pulse should look like sampled version of a sinc() function. The first time the sinc() function crosses zero is a measure of its width. Let the width of the time-domain rectangular pulse in one period be T0 (in ms). Let the frequency corresponding to the first zero crossing of the Fourier Series coefficients be f0 (in kHz). Can you infer from the plot a relation between T0 and f0 ? 4d. fft only gives ak for k = 0, 1, 2, · · · . How do we obtain a−1 , a−2 etc., for xi (t) defined above? Explain. R 4e. Verify Parseval’s theorem for x2 (t) by computing T1 T |x2 (t)|2 dt analytically, and approximately comP∞ puting k=−∞ |ak |2 by including only {a−19 , a−18 , · · · , a−1 , a0 , a1 , · · · , a19 } terms. What is the percentage error? 4f. To visualize the Fourier series reconstruction of the rectangular pulse x2 (t), define y

(K)

(t) =

K X

ak ejω0 kt

(9)

k=−K

where ω0 = 2π/T . On the same page, produce three plots (using subplot(311), etc). Each plot consists of an overlay of x2 (t) and y (K) (t). Plot for K = 5, 20, 100. To overlay two plots (with different colors), use hold commend, e.g., >> subplot(311); plot(t,x2,’b’); hold; plot(t,y,’r’) You may use a for loop in Matlab to define y (K) (t). Also, in Matlab, functions can operate on a vector directly. For example, for the vector t defined in 4b, one can use exp(j*k*2*pi/T*t) to apply the exponential function to each element of t. Attach the plot to your report. 4g. Attach the Matlab code for 4b, 4e, and 4f to your report.

2.2

Filtering of Fourier Series

In this part of the lab, we examine what happens to the Fourier series coefficients when a periodic signal is passed through a filter. An FIR filter of unknown characteristics is specified in the file filter spec.mat. We use x3 (t) over five periods as the input signal. The goal is to find out what type of filter it is. Part 5: (10 points)

5

5a. Use the following commands to load the filter (named h), construct the input signal, and produce the output due to the filtering of the input signal. >> >> >> >>

load filter spec.mat tt = (0:1:5*N-1)*Ts; x input = [x3, x3, x3, x3, x3]; y output = filter(h,1,x input);

Take the output over one period (e.g. y output(4*N:5*N-1)) and compute its Fourier Series coefficients. On the same page, produce the following two labelled plots (using subplot(211), etc). The first plot is the overlay of x input and y output (over five periods). The second plot is the overlay of the square magnitudes of the Fourier series coefficients of one period of x input and y output (for k = 0, 1, ..., 19). Attach the plot to your report. 5b. What kind of filter is h (high-pass, low-pass or band-pass)? Filters are often defined by its “3-dB bandwidth”. This is the frequency at which the magnitude square of the output is half of the magnitude square of the input. Based on the Fourier Series coefficients computed in the previous part, find the approximate 3-dB bandwidth of h. Please explain with brief calculations.

6