Write a MATLAB function called pgm which calculates the periodogram. The function inputs should be the length input vector x and its output should be the length N periodogram estimate P_{xx}. Generate a length N discrete random signal with the randn function and use the pgm to estimate the PSD for N = 128, 256, and 512. Inspect and comment upon the results. The theoretical autocorrelation function for this discrete Gaussian random signal equals σ^{2}δ (i.e. there is zero similarity between the signal and a shifted version of it), where is the standard deviation of the random signal; for the above random signal (see help randn), is equal to 1. Therefore its true PSD is a constant, unity, for all frequencies. Such a signal is referred to as white noise because it has a constant spectrum independent of frequency, as an, albeit approximate, analogy with white light. The difference between this ideal PSD and those estimated with the datasets is due, in part, to their ?nite lengths. One method to improve these estimates is to apply frequency domain smoothing.
- Employ the ?lt?lt command within MATLAB to smooth the PSD estimates with a zero phase FIR ?lter with impulse response sequence 0.2*[1 1 1 1 1]. Does this improve the apparent PSD estimate?
- Generate a length 1024 discrete random signal with the randn function and sub-divide the signal into eight separate 128 point signals. Estimate the PSD for each length 128 signal and display on two plots the eight results (Note: Break each window into 2× 2 sections. Read help ?gure on how to obtain the second window). Notice the variation of the estimates.
- These eight results can be averaged to yield a new PSD estimator called the averaged periodogram which has less variation than the individual PSDs. Display this result.