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');
Best Answer