Theme: Random Processes
Note: Look for pr4files.zip and .m files for this project. Functions (write using Matlab)
1. x = singen: generates samples of a real sinusoid and places the result in a vector/array. The user provides amplitude, sampling frequency, sinusoid frequency, phase, and number of samples.
2. x = wgnoise: creates a real vector of white gaussian noise. The user provides the noise variance and number of samples. You can use the Box-Muller function or Matlab's randn() to do this.
3. r = ubcorr(x): computes a vector of unbiased one-sided autocorrelation function (ACF) estimates for the data in x. This is the formula that has a scaling factor of N-k in the denominator, where k is the current offset in samples and N is the total length. You may implement this function using either time-domain techniques or frequency-domain (fast convolution). Note: you may use function xcorr() available from Matlab for this task.
4. r = corr(x): computes a vector of biased one-sided ACF estimates for the data in x. Just like ubcorr(x), except the scaling factor is just N instead of N-k. Note: you may use function xcorr() available from Matlab for this task.
5. psd = perigram(x): computes and plots the periodogram of x. The periodogram is just the magnitude-squared representation of the FFT of x. (In Matlab, you may want to do an fftshift() of the FFT output so you get the expected symmetry about f=0 Hz. You should also divide the FFT output by the length of the FFT since Matlab normally divides during the inverse FFT. This will keep your magnitudes scaled correctly.)
6. psd = blacktuk(x): computes and plots the Blackman-Tukey spectral estimate of x, which is found using the FFT of the biased ACF of x. This is the method based on the Wiener-Khintchine (W-K) Theorem. The same FFT comments as given in #5 also apply here.
7. y = quantize(x,n): Performs n-bit uniform quantization of input vector x. You may use my function quantize.m for this.
You may also use my function plotpsd.m to plot your psd's in dB and normalized frequency axis. Matlab also has a psd() function, but it is set up for windowing which will alter your results.
Problems to solve through the use of simulations:
1. What is the minimum SNR for a sinusoid in white noise to be detectable using frequency domain techniques (Periodogram and Blackman-Tukey)? Do the results depend on frequency?
a. Note 1: SNR = (signal power)/(noise power). The signal power in a sinusoid of amplitude A is A2/2, while the power in AWGN noise is just it's variance. Usually we look at SNR levels in dB format: SNRdB = 10*log10((a^2/2)/var)
b. Note 2: We can find the minimum SNR by setting either the sinusoid amplitude or the noise variance constant and changing the other term until we can no longer distinguish the peak of the sinusoid in the noise. Plot the spectral estimates to perform this analysis. This can and will be a subjective process.
2. Compute and plot separate correlation functions of white noise data and of sinusoidal data. Do this using both the biased and unbiased autocorrelation functions. Are the results what you expected?
3. Study the effects of quantization on an audio signal.
a. Read in the swtheme.wav file using the wavread command in Matlab: [Y,FS,NBITS]=WAVREAD(‘swtheme')If you are not using Matlab, you may read in the ASCII data from file swtheme.dat. Note that this data is quantized to 8 bits.
b. Make an estimate of whether the process represented by this data is Wide Sense Stationary. Justify your estimate.
c. Find the PSD of this data using either the Periodogram or Blackman-Tukey estimator. Is the PSD what you expected based on the ACF you found in part b?
d. Now quantize the data to n=3 bits (8 levels). Based on the bin size reported by the quantize() fn, determine the autocorrelation fn and psd of the quantization process.
e. Plot the psd of the quantized audio data. Based on the psd's of the input audio data and the quantization process, does this plot make sense.
f. [Optional]: Write out the quantized data as a new wave file using wavwrite(), and play the file through Windoze. How does the quality compare to the original 8-bit quantized value? Repeat for other quantization levels if desired.
Please turn in:
1) Source code for your files
2) Results and analysis