- 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 ๐ฅ[๐].
- Check the sampling rate, the number of channels, and the number of bits per sample.
- 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.
- Check your result in (b) against the following results. They should essentially be identical.
y_conv = conv(x, 1/p*ones(p,1));
- 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.
- Now, define ๐ฆ% = ๐ฅ[๐] โ ๐ฅ[๐ โ 1]. Of course this can be done with a โforโ loop, but alternatively, please use conv() to do the job.
- Set x =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.
- 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.
- Check your result against y = filter([1], [1 -alpha], x).
- 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.)
Preview of the next homework: We will study how to model speech as a glottal source signal being filtered by the vocal tract next time.



