Why isn't the autocorrelation of rand a delta function?

8 views (last 30 days)
Hello,
As both rand and randn generate uncorrelated random numbers, I expected that the autocorrelation of both rand or randn shows delta functions. However the result was different for rand.
(rand generates uniformly distributed random numbers and randn generates normal random numbers)
Does anyone know why the autocorrelation of rand is not a delta function?
x=rand(1,100,1); Rxx=xcorr(x); subplot(2,1,1); plot(Rxx); grid; title('Autocorrelation function of rand'); xlabel('lags'); ylabel('Autocorrelation');
x=randn(1,100,1); Rxx=xcorr(x); subplot(2,1,2); plot(Rxx); title('Autocorrelation function of randn'); xlabel('lags'); ylabel('Autocorrelation');

Accepted Answer

Teja Muppirala
Teja Muppirala on 18 Jul 2013
As described in detail here, http://en.wikipedia.org/wiki/Autocorrelation, there is more than one convention when calculating autocorrelation. In signal processing, autocorrelation of a sequence is often calculated without subtracting off the mean. As described in the documentation, this is indeed what XCORR does:
By default, xcorr computes raw correlations with no normalization.
If you generate the uniform random numbers with no bias (subtract 0.5), you will indeed get a result that looks like a delta function.
x=rand(1,100,1)-0.5; Rxx=xcorr(x); subplot(2,1,1); plot(Rxx); grid; title('Autocorrelation function of rand'); xlabel('lags'); ylabel('Autocorrelation');
x=randn(1,100,1); Rxx=xcorr(x); subplot(2,1,2); plot(Rxx); title('Autocorrelation function of randn'); xlabel('lags'); ylabel('Autocorrelation');

More Answers (1)

the cyclist
the cyclist on 18 Jul 2013
I don't have the Signal Processing Toolbox, so I can't test this idea, but is this related to the normalization discussed in the documentation here:

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!