Starting from:

$35

ASAS Homework 2: Convolution and Linear Time-invariant Filtering Solved

 ASAS Homework 2: Convolution and Linear Time-invariant Filtering 
1. Averaging and “differencing” (Remarks: Yes, here we are going to use “difference” as a verb). Please first find a piece of music or any sound and read it into MATLAB. Denote the signal as ๐‘ฅ[๐‘›].

(a)  Check the sampling rate, the number of channels, and the number of bits per sample.

(b) The simplest low-pass filter is to average over consecutive samples; that is, let

                                                           1      !

                                                                               ๐‘ฆ[๐‘›] =+   ๐‘ฅ[๐‘› − ๐‘š + 1] ,

                                                           ๐‘       "#$

where ๐‘ is the order of the filter, and ๐‘ฆ[๐‘›] is the output of the filter. Implement this filter and listen to the output. Increase ๐‘ from 1 to 10 to see if you can hear the difference.

(c)  Check your result in (b) against the following results. They should essentially be identical.

 y_conv = conv(x, 1/p*ones(p,1)); 

(d) In fact, the array 1/p*ones(p,1) can be regarded as the impulse response of this FIR

(finite impulse-response) filter. Denote h = 1/p*ones(p,1) and use freqz(h) to plot the frequency response of the filter.

(e)  Now, define ๐‘ฆ% = ๐‘ฅ[๐‘›] − ๐‘ฅ[๐‘› − 1]. Of course this can be done with a “for” loop, but alternatively, please use conv() to do the job.

(f)   Set x = 0.1*randn(A_CERTAIN_LENGTH, 1) so it is an instance of Gaussian white noise with mean zero and standard deviation ๐œŽ = 0.1. Listen and compare the result before and after averaging/differencing. Does it feel more unpleasant before or after averaging/differencing? Describe how you feel about it and explain, perhaps, the reason why.

Remark: When you listening to a signal stored in a vector, make sure that its range is between ±1 to avoid clipping effect. Or, alternatively, use soundsc() to avoid clipping. Always remember to specify the sampling rate.

 

2. Infinite impulse response (IIR). Take any audio signal ๐‘ฅ[๐‘›] and for any ๐‘› 1 implement the following by a for loop,

๐‘ฆ[๐‘›] = ๐›ผ๐‘ฆ[๐‘› − 1] + ๐‘ฅ[๐‘›],

          Where 0 < |๐›ผ| < 1 is a constant. You can assume ๐‘ฆ[1] = 0.

(a)  Check your result against y = filter([1], [1 -alpha], x).

(b) Create an instance of Gaussian white noise for about 1 second long. Listen and compare the result before and after filtering. (c) Create a periodic impulse train:

                                               ๐‘ฅ[๐‘›] = 700.5, ,                        otherwiseif     ๐‘› = 80.๐‘š

Where ๐‘š is an integer. In other words, ๐‘ฅ[๐‘›] is non-zero at every 80th sample. Listen and compare the result before and after filtering.  

(d) Discuss how to restore ๐‘ฅ[๐‘›] from ๐‘ฆ[๐‘›]. (Hint: if ๐›ผ is known, it is quite easy. However, if ๐›ผ is unknown, you may need to make assumptions.)


More products