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

8 visualizzazioni (ultimi 30 giorni)
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');

Risposta accettata

Teja Muppirala
Teja Muppirala il 18 Lug 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');

Più risposte (1)

the cyclist
the cyclist il 18 Lug 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!

Translated by