Numerit[WIN32][1700][1703]CWG)c::adev qffffff)@j@fffffvq@?@ffffff9@?@ffffff9@ffffff)@ffffff)@         Times New RomanArialSymbol Courier New E c@23@uksyt=12t2(N-2m)N-2mxi+2m-2xi+m+xii=12!({(z"{x'$yy{(yyzxyzy1zxyz"z(zxyzxyz(zxzxz(zzxy(ykkdkk3 kkkkk E c@(@et=mt0!{xz{(yd E c@ '@e10mN-1!yy}x}z}x}zxyd E @@Kt!{d E ffffff @@Km!zd E DDDDD @@KN!zd E ffffff @ @_ xi!z(z  d       E c@wwwwwg2@&y(t)=f(t)-f0f0!zyzy}x}$zyzyxz(yz(y&&d&&&&&&& E c@wwwwwg2@&x(t)=x(0)+ty(t')dt0'!zyzy}x}zyyy}x}0zzyzyyzzyy&&d&& &&&&& E c@wwwwwg2@-yi=fi-f0f0!z(z}x}$z(z}xz(yz(y--d------- E c@(@)xi=xi-1+yit0!z(z}x}z(zxy}xz(z}{(y))d))))))) G Ab@MbX@yt>@>@>@>@>@>@>@ >@ >@ >@>@>@>@>@>@ >@  >==>>??fracational frequency errortime0.010.010.010.01G '1bb@A`ЂX@xt>@>@>@>@>@>@>@ >@ >@ >@>@>@>@>@>@ >@  >==>>?? time errortime0.010.010.010.01G `"Qb@\@adevtauAlan deviationhdevtauHadamard deviationmdevtauModified Alan deviationtotDevtauTotal deviation rootTheo1tau1 root Theo1>@>@>@>@>@>@>@ >@ >@ >@>@>@>@>@>@ >@  >==>>?? Deviation Time interval0000.010.010000.010.01E c@23@xHsyt=16t2(N-3m)N-3mxi+3m-3xi+2m+3xi+m-xii=12!(z{(z"{x'$yy{(yyzxyzy1zxyz"z(zxyzxyz(zxyzxyz(zxzxz(zzxy(yxxdxx; xxxxx E c@P5@Msyt=12t2m2(N-3+1)N-3m+1"j+m-1xi+2m-2xi+m+xii=jj=12!(z{(z"{x'$yy{(yz(yyzxyxyy1zxyzxy"0zxzxy"z(zxyzxyz(zxzxz(zzxzzxy(yd;    E @@Kt!{d E c@ffffff;@Theo1t=10.75t2(N-m)N-m"m2-1(xi-xi-d+m2+xi+m-xi+d+m2)2(m2-d)d=0i=1!(zzzzy"{x$yyyyy{(yyzxzy1zxz"0$zyxy$yz(zxz(zx{x$zyxz(zxzxz(zx{x$zyy(yy$zyx{y{xyzxyd=     vvvpvvvpvvvpvvvpvvvpvvvp;vvv Allan Deviation and Other Frequency Stability Statistics^vvv See http://www/wriley.com for tutorial information on frequency stability and Allan Deviation.vvv vvv The time dependent fractional frequency error, y, depends, on the instantaneous frequency, f, and nominal frequency, f0. The time is t. ! ) )vvv The ith sampled, discrete time version isvvv " + vvv vvv 4 vvv vvv @vvv The time error, x, is the integrated fractional frequency error.vvv # * <vvv After discretization, with sample time "t0.vvv $ , vvvv P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m! P m!5 vvv vvv vvv vvv Allan Deviationvvv The Allan Deviation is based on the first difference of the fractional frequency errors (second difference of the phase error). Unlike the standard deviation, it does not depend on the average value of the data. This makes it a better statistic for describing non-stationary data with drift, flicker or random walk noise. The overlapping version of the Allan variance is calculated below. Note that the Allan Variance is the square of the Allan Deviation.Rvvv The Allan Deviation calculated from the ' time errors, ( , is given by,% ovvv where the time intervals, "# , is an integer multiple, & , of the sample time ": 0.& ! vvv vvv Hadamard Deviationvvv The Hadamard deviation uses the second difference in fractional frequency error. For this reason it is unaffected by constant frequency drift.vvv ' 8 vvv vvv Modified Allan Deviationvvv The Modified Allan Deviation employs an additional averaging step. Unlike the Allan deviation, the Modified Allan Deviation can be used to distinguish between white phase noise and flicker phase noise. vvv ( 9 vvv vvv Total Deviationvvv The Total Deviation is calculated just as the Allan Deviation, except that the data is extended by reflecting about both endpoints to create a virtual sequence. This allows more data points to be included at long time intervals.vvv vvv Theo1vvv Theo1 is a variance like statistic which does a better job, even then the Total Deviation, for long time intervals. It is reduces to the Allan Deviation in the presense of white FM noise. vvv ) <  vvv for * " vvv vvv vvv 7 vvv vvv  q8ffffff)@j@fffffvq@?@ffffff9@?@ffffff9@ffffff)@ffffff)@         Times New RomanArialSymbol Courier New `Allan Deviation worksheet`Version 1.1, October 11, 2004`Created by Doug Arnold0`This program is shareware, use at your own riskclear4````````````````````````````````````````````````````4` Create some sample phase error data `4` alternatively, one could read data from a file `4` `4````````````````````````````````````````````````````AnumData = 1000 ` number of data points@t0 = 1.0 ` sample time intervalGrwNoiseAmpl = 1.0e-11 ` random walk noise amplitudeAwhiteNoiseAmpl = 1.0e-10 ` white noise amplitude(whiteNoiseVector[numData]:whiteNoiseAmpl"rwNoiseVector[numData]:rwNoiseAmpl(whiteNoise = randGuass(whiteNoiseVector)%rwNoiseRaw = randGuass(rwNoiseVector) rwNoise = 0.0for i=1 to numDatat[i] = t0 * i!rwNoise = rwNoise + rwNoiseRaw[i]y[i] = whiteNoise[i] + rwNoise if i=1 then x[i] = y[i]elsex[i] = x[i-1] + y[i]*t03```````````````````````````````````````````````````3` Calculate Alan Deviation and other statistics `3` `3```````````````````````````````````````````````````#numTau = trunc(log(numData)/log(2))for j=1 to numTaum[j] = 2^(j-1);tau[j] = m[j]*t0 `octave sequence of time intervals sumAdev = 0.0for i = 1 to numData-2*m[j]3sumAdev += (x[i+2*m[j]] - 2.0*x[i+m[j]] + x[i])^2_adev[j] = sqrt(sumAdev/(2.0*tau[j]*tau[j]*(numData-2*m[j]))) `Overlapping Allan Deviation sumHad = 0.0for i = 1 to numData-3*m[j]DsumHad += (x[i+3*m[j]] - 3.0*x[i+2*m[j]] + 3.0*x[i+m[j]] - x[i])^2Whdev[j] = sqrt(sumHad/(6.0*tau[j]*tau[j]*(numData-3*m[j]))) `Hadamard Deviation sumMod = 0.0for i = 1 to numData-3*m[j]+1sumInner = 0.0for k = i to i+m[j]-12sumInner += (x[k+2*m[j]] - 2.0*x[k+m[j]] + x[k])\sumMod = sumMod + sumInner^2 `Modified Allan Deviation?mdev[j] = sqrt(sumMod/(2.0*(m[j]*tau[j])^2*(numData-3*m[j]-1)))-`reflect data for Total deviation calculationfor i=1 to numDatayy[i] = y[i] if i=1 thenxx[i] = yy[i]elsexx[i] = xx[i-1] + yy[i]*t0for i=numData+1 to 2*numData)yy[i] = 2*y[numData] - y[2*numData+1-i]xx[i] = xx[i-1] + yy[i]*t0totDev[numTau]=0.0for j=1 to numTausumTot = 0.0for i=1 to numDataNsumTot += (xx[i+2*m[j]] - 2.0*xx[i+m[j]] + xx[i])^2 `Total deviation0totDev[j] = sqrt(sumTot/(2.0*tau[j]^2*numData))`Calculate Theo1 statistic)numTau1 = trunc(log(numData/10)/log(2))+1for j=1 to numTau1m1[j] = 10*2^(j-1)if j = numTau1m1[j] = numData * 0.75tau1[j] = m1[j]*t0sumTheo1 = 0.0for i = 1 to numData-m1[j]sumInner = 0.0for d = 0 to m1[j]/2-1UsumInner += 1/(m1[j]/2-d) * (x[i] - x[i-d+m1[j]/2] + x[i+m1[j]] - x[i+d+m1[j]/2])^2sumTheo1 += sumInnerBrootTheo1[j] = sqrt(sumTheo1 / (0.75 * (numData-m1[j]))) / tau1[j]`graph rootTheo1:tau1T`===================================================================================`,` FUNCTIONS`T`=================================================================================== `randGuass,`argument is a vector of standard deviationsR`returns a coerresponding vector of zero-mean guassian distributed random numbers,9`each one adjusted for the input standard deviation valuefunc randGuass(deviation)imax = length(deviation)guassian = 1.0..1.0 len imax#if odd(length(deviation)) imax -= 1Hfor i = 1 to imax by 2 `generate two at a timeranSquare = 2.0+while (ranSquare >= 1.0 or ranSquare = 0.0)interval = 2.0..2.0 len 2ranNum = rand(interval) - 1.0&ranSquare = ranNum[1]^2 + ranNum[2]^2Nfactor = sqrt(-2.0*log(ranSquare)/ranSquare) `Box-Mueller transformation/guassian[i] = ranNum[1] * factor * deviation[i]4guassian[i+1] = ranNum[2] * factor * deviation[i+1]Uif odd(length(deviation)) `Do the last one if necessaryranSquare = 2.0+while (ranSquare >= 1.0 or ranSquare = 0.0)interval = 2.0..2.0 len 2ranNum = rand(interval) - 1.0&ranSquare = ranNum[1]^2 + ranNum[2]^2,factor = sqrt(-2.0*log(ranSquare)/ranSquare):guassian[imax+1] = ranNum[1] * factor * deviation[imax+1]return guassian@c:\documents and settings\darnold\my documents\programs\numerit\ #numDatat0 rwNoiseAmplwhiteNoiseAmplwhiteNoiseVectorrwNoiseVector whiteNoise rwNoiseRawrwNoiseit y x numTaujmtau sumAdevadev sumHadhdev sumMod sumInnerkmdev yyxxtotDev sumTotnumTau1m1tau1  sumTheo1d rootTheo1       4 , 4 , < <   X8 4  B   4@ 4 4 @  \7 4 4  6 4 A4 4 B@  N 6% C '   X8( 4   AE) 4 4 B* +   4BAX8 ,  4B@4  4@4 BA 4 @ EN N 6- 4   4B 4B  4BABC/ 0   4BAX8 1  4B@4  4B@4 BA 4@4 B@ 4 A EN N 6 2 4  4B 4B  4BABC4 5   4BA @X86 7   4@ AX88   4B@4   4@4 BA 4 @N N69   E@ N 6: 4   4 4B EB  4BA ABC N6>  X8? 4 4 @ \7A 4 46C 4 A4 4 B@ N 6E @  BX8F 4  4 B  B @ A4 AG 4 A4 4 B@ N 6I 4 J   X8K L  X8!M  4B@4  4@4BA 4@ EN N 6N 4   4 EB BC N6Q C C @S   X8$T 4   AEBU  \7%V 4 BW 4 4 BX  Y  4AX8(Z [ ! ! 4 C AX8+\  4 C !AC 4 !A 4 C@4 A 4@4 @ !@ 4 C@4 A EBN N!6)] N  N 6&^ 4 4ABC 4C" N6",&^aN]l"cf4X[+.=Xgu randGuass randGuass deviationimax guassiani ranSquare intervalranNumfactor mn o   fp 7 Or   X8s t  Z  \b7u   fv  Aw 4 E 4 E@6x G B Cy 4 4 B 4Bz  @4 4 B  @4B N6| 7} ~  Z  \b7   f  A 4 E 4 E@6 G B C  @4 4 B  @4B => jmAv 1000@@1.0?1.0e-11dy=1.0e-10|=0.01?2@2.0@3@3.0@6.0@10$@0.75?0