Interference Rejection

Communication systems are often subject to interference from a variety of sources. In this project, you will use MATLAB to read a wav file, simulate the effect of narrowband interference and process the distorted signal to recover the original signal. You should write a MATLAB program that performs the following functions

  1. (25 points) Read a speech file which is available in wav format. The file anykey.wav is available for download. But I encourage you to find your own wav file on the internet or you can also create your own speech file if you prefer. Use wavread function in MATLAB to read the file. Play the sound file through the speakers and observe that you can hear the speech file. Plot the magnitude of the Fourier transform of the speech file. The x-axis should be in rad/s.
  1. (25 points) Simulate the effect of interference. We will model the interference as being composed of 10 cosinusoid functions at frequencies 4500,4550,..,4950 Hz whose amplitudes are all Gaussian random variables with zero mean and variance 1/10. Play this through the speakers and observe that you can see the effect of interference. Plot the magnitude of the Fourier transform of the speech file with interference. You should see that the interference is dominant.
  1. (50 points) Design an LTI system to remove the interference. Process the received signal by passing it through a LTI system to mitigate the effect of interference. Play this through the speakers and observe that the effect of interference has been largely mitigated. Notice here that you are processing the received signal in the discrete-time domain. The conv function in MATLAB can be used to perform convolution. Another alternative is to use the filter command. Think about how you may have to truncate any impulse responses that are of infinite duration. Plot the magnitude of the Fourier transform of the processed signal as a function of $\omega$. The units for $\omega$ should be rad/s.

You can work in a team of two students. You should submit your MATLAB code and three plots of the magnitude of Fourier transforms plotted as a function of $\omega$.


The following commands in MATLAB will be useful. Do a help on these commands or read about them by searching on google. The syntax for writing a for loop will also be useful.
wavread, wavrecord, audiorecorder,randn,sound,conv,fft,fftshift,ifft,ifftshift,sinc

In this project, we are interested in plotting the magnitude of the Fourier transforms as a function of $\omega$. Normally, what we would like to get is the function $X(j \omega)$ for all values of $\omega$. However, on a digital computer, we cannot do this. We have to evaluate $X(j \omega)$ for a some finitely many values of $\omega$. A built in function in MATLAB called fft can be used to obtain the DTFT of a signal $x[n]$ of length $N$, namely $X(e^{j\Omega})$ for $N$ uniformly spaced values in the interval $[-\pi,\pi]$. Be sure to read the help section for the fft function and the ifft function. This will tell you why you need the fftshift and ifftshift functions.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License