Monday, April 3, 2017

Determining the "whiteness" of noise


How does one quantify how "white" some noise is? Are there any statistical measures, or any other measures (FFTs for example) that can quantify how close to white noise a particular sample is?



Answer



You could form a statistical test, based on the autocorrelation of the potentially-white sequence. The Digital Signal Processing Handbook suggests the following.


enter image description here



This may be implemented in scilab as below.


Running this function over two noise sequences: a white noise one, and a lightly filtered white noise one, then the following plot results. Script for generation of each realization of the noise sequences is at the end.


enter image description here


The mean of the statistic for the white noise is 9.79; the mean of the statistic for the filtered noise is 343.3.


Looking at a chi-squared table for 10 degrees of freedom, we get:


enter image description here


and we see that there is no significance level at which 9.79 (in the table) that the white noise isn't white. We also see that the value of 343.3 is very likely to be non-white (comparing it to the 23.2093 value in the $p=0.01$ significance column).




function R = whiteness_test(x,m)
N = length(x);

XC = xcorr(x);
len = length(XC);
lags = len/2+1 + [1:m];
R = N*sum(XC(lags).^2)/XC(len/2+1).^2;
endfunction



X = rand(1,1000,'normal');
Y = filter(1,[1 -0.5],X)
R = [R; whiteness_test(X,10)];

R2 = [R2; whiteness_test(Y,10)];

No comments:

Post a Comment

periodic trends - Comparing radii in lithium, beryllium, magnesium, aluminium and sodium ions

Apparently the of last four, $\ce{Mg^2+}$ is closest in radius to $\ce{Li+}$. Is this true, and if so, why would a whole larger shell ($\ce{...