[time-nuts] Characterising frequency standards

Bruce Griffiths bruce.griffiths at xtra.co.nz
Wed Apr 8 12:55:18 UTC 2009


Steve

Therein lies your problem.
adev1  defaults to a sampling interval of 1 sec. (read the C source code).
TvB's documentation explicitly states that you should supply the
sampling interval. (its a command line argument for adev1.c).

adev1.c is a simple command line program that uses stdin and stdout so
porting it to a linux command line (non graphical) program should be
straightforward.
You can even use redirection and pipes should you need them.

You can try porting it to Scilab which is free courtesy of the French
Government.


Bruce

Steve Rooke wrote:
> Bruce,
>
> I set nothing, as indicated in my text, I just delete data points, IE.
> a file of 400000 records now becomes 200000. I'm trying to get my head
> round this as the absolute requirement for continuous data seems
> unneeded. What you have to remember here is that the data set I'm
> working with consists of discrete measurements of the period of each
> pulse. If it was timestamps, then there would be problems.
>
> I don't know how much MATLAB costs but I would guess it is way out of my budget.
>
> 73,
> Steve
>
> 2009/4/9 Bruce Griffiths <bruce.griffiths at xtra.co.nz>:
>   
>> Steve
>>
>> The data file doesn't include the time interval between samples so do
>> you set this in some way?
>> If so you need to set it to 1s for the unaltered data, to 2s when you
>> take every 2nd sample, and 1s when you take the first 200,000 samples.
>>
>> In principle you could use CANVAS (available on request from USNO -
>> however you may have to wait a few days while they decide whether to
>> grant your request.) for such analysis in Linux but you would then need
>> the Linux version of Matlab.
>> Or you could request that it be compiled for Linux - a fairly simple
>> task if one has the Linux version of Matlab.
>>
>> In principle you should be able to port the m source files to Scilab,
>> but there are some subtle differences between Scilab and Matlab so this
>> may take a while.
>>
>> Bruce
>>
>> Steve Rooke wrote:
>>     
>>> Bruce,
>>>
>>> But how does that explain the output of Tom's adev1 program which
>>> still seems to give a a good measurement at tau = 1s?
>>>
>>> 73,
>>> Steve
>>>
>>> 2009/4/8 Bruce Griffiths <bruce.griffiths at xtra.co.nz>:
>>>
>>>       
>>>> Steve
>>>>
>>>> If you delete every second measurement then your effective minimum
>>>> sampling time is now 2s and you can no longer calculate ADEV for tau< 2s.
>>>> You can still calculate ADEV for tau = 100,000 sec.
>>>>
>>>> If you delete all but the first 200,000 lines then you can calculated
>>>> ADEV for tau=1sec and up to tau= 25,000 sec with reasonable accuracy.
>>>>
>>>> You shouldn't lose sight of the fact that ADEV and OADEV are both
>>>> estimates of the Allan deviation.
>>>>
>>>>
>>>> Bruce
>>>>
>>>> Steve Rooke wrote:
>>>>
>>>>         
>>>>> Tom,
>>>>>
>>>>> I understand fully the points that you have made but I have obviously
>>>>> not made my point clear to all and i apologise for my poor
>>>>> communication skills.
>>>>>
>>>>> This is what I'm getting at:
>>>>>
>>>>> Using your adev1.exe from http://www.leapsecond.com/tools/adev1.htm
>>>>> and processing various forms of gps.dat from
>>>>> http://www.leapsecond.com/pages/gpsdo-sim/gps.dat.gz.
>>>>>
>>>>> C:\Documents and Settings\Steve Rooke\Desktop>adev1.exe 1 <gps.dat
>>>>>
>>>>> ** Sampling period: 1 s
>>>>> ** Phase data scale factor: 1.000e+000
>>>>> ** Total phase samples: 400000
>>>>> ** Normal and Overlapping Allan deviation:
>>>>>
>>>>>        1 tau, 3.0127e-009 adev(n=399998),   3.0127e-009 oadev(n=399998)
>>>>>        2 tau, 1.5110e-009 adev(n=199998),   1.5119e-009 oadev(n=399996)
>>>>>        5 tau, 6.2107e-010 adev(n=79998),    6.1983e-010 oadev(n=399990)
>>>>>       10 tau, 3.1578e-010 adev(n=39998),    3.1549e-010 oadev(n=399980)
>>>>>       20 tau, 1.6531e-010 adev(n=19998),    1.6534e-010 oadev(n=399960)
>>>>>       50 tau, 7.2513e-011 adev(n=7998),     7.3531e-011 oadev(n=399900)
>>>>>      100 tau, 4.0029e-011 adev(n=3998),     4.0618e-011 oadev(n=399800)
>>>>>      200 tau, 2.1512e-011 adev(n=1998),     2.1633e-011 oadev(n=399600)
>>>>>      500 tau, 9.2193e-012 adev(n=798),      9.1630e-012 oadev(n=399000)
>>>>>     1000 tau, 4.9719e-012 adev(n=398),      4.7750e-012 oadev(n=398000)
>>>>>     2000 tau, 2.6742e-012 adev(n=198),      2.5214e-012 oadev(n=396000)
>>>>>     5000 tau, 1.0010e-012 adev(n=78),       1.1032e-012 oadev(n=390000)
>>>>>    10000 tau, 6.1333e-013 adev(n=38),       6.1039e-013 oadev(n=380000)
>>>>>    20000 tau, 3.8162e-013 adev(n=18),       3.2913e-013 oadev(n=360000)
>>>>>    50000 tau, 1.0228e-013 adev(n=6),        1.5074e-013 oadev(n=300000)
>>>>>   100000 tau, 5.8577e-014 adev(n=2),        6.7597e-014 oadev(n=200000)
>>>>>
>>>>> So far, so good. Now I delete every even line in the file which leaves
>>>>> me with 200000 lines of data (400000 lines in original gps.dat file).
>>>>> (awk 'and(NR, 1) == 0 {print}' <gps.dat >gps1.dat)
>>>>>
>>>>> C:\Documents and Settings\Steve Rooke\Desktop>adev1.exe 1 <gps1.dat
>>>>>
>>>>> ** Sampling period: 1 s
>>>>>
>>>>>           
>> INCORRECT!!
>> sampling period is now 2s.
>>     
>>>>> ** Phase data scale factor: 1.000e+000
>>>>> ** Total phase samples: 200000
>>>>> ** Normal and Overlapping Allan deviation:
>>>>>
>>>>>        1 tau, 3.0257e-009 adev(n=199998),   3.0257e-009 oadev(n=199998)
>>>>>        2 tau, 1.5373e-009 adev(n=99998),    1.5345e-009 oadev(n=199996)
>>>>>        5 tau, 6.3147e-010 adev(n=39998),    6.3057e-010 oadev(n=199990)
>>>>>       10 tau, 3.3140e-010 adev(n=19998),    3.3067e-010 oadev(n=199980)
>>>>>       20 tau, 1.7872e-010 adev(n=9998),     1.7810e-010 oadev(n=199960)
>>>>>       50 tau, 7.9428e-011 adev(n=3998),     8.1216e-011 oadev(n=199900)
>>>>>      100 tau, 4.2352e-011 adev(n=1998),     4.3265e-011 oadev(n=199800)
>>>>>      200 tau, 2.2001e-011 adev(n=998),      2.2593e-011 oadev(n=199600)
>>>>>      500 tau, 9.6853e-012 adev(n=398),      9.5441e-012 oadev(n=199000)
>>>>>     1000 tau, 5.0139e-012 adev(n=198),      5.0387e-012 oadev(n=198000)
>>>>>     2000 tau, 2.7994e-012 adev(n=98),       2.7090e-012 oadev(n=196000)
>>>>>     5000 tau, 1.4280e-012 adev(n=38),       1.2214e-012 oadev(n=190000)
>>>>>    10000 tau, 7.4881e-013 adev(n=18),       6.5814e-013 oadev(n=180000)
>>>>>    20000 tau, 7.6518e-013 adev(n=8),        3.7253e-013 oadev(n=160000)
>>>>>    50000 tau, 2.4698e-014 adev(n=2),        1.3539e-013 oadev(n=100000)
>>>>>
>>>>> Obviously we don't have enough data now for a measurement of 100000
>>>>> tau but the results for the other tau are quite close, especially when
>>>>> there are sufficient data points. Now this is discontinuous data,
>>>>> exactly what I was trying to allude to.
>>>>>
>>>>> OK, so now I take only the top 200000 lines of the gps.dat file (head
>>>>> -200000 gps.dat >gps2.dat)
>>>>>
>>>>> C:\Documents and Settings\Steve Rooke\Desktop>adev1.exe 1 <gps2.dat
>>>>>
>>>>> ** Sampling period: 1 s
>>>>> ** Phase data scale factor: 1.000e+000
>>>>> ** Total phase samples: 200000
>>>>> ** Normal and Overlapping Allan deviation:
>>>>>
>>>>>        1 tau, 3.0411e-009 adev(n=199998),   3.0411e-009 oadev(n=199998)
>>>>>        2 tau, 1.4985e-009 adev(n=99998),    1.4999e-009 oadev(n=199996)
>>>>>        5 tau, 6.1964e-010 adev(n=39998),    6.2010e-010 oadev(n=199990)
>>>>>       10 tau, 3.1315e-010 adev(n=19998),    3.1339e-010 oadev(n=199980)
>>>>>       20 tau, 1.6499e-010 adev(n=9998),     1.6495e-010 oadev(n=199960)
>>>>>       50 tau, 7.1425e-011 adev(n=3998),     7.3416e-011 oadev(n=199900)
>>>>>      100 tau, 3.9940e-011 adev(n=1998),     4.0730e-011 oadev(n=199800)
>>>>>      200 tau, 2.1488e-011 adev(n=998),      2.1558e-011 oadev(n=199600)
>>>>>      500 tau, 8.4809e-012 adev(n=398),      9.0886e-012 oadev(n=199000)
>>>>>     1000 tau, 4.9223e-012 adev(n=198),      4.7104e-012 oadev(n=198000)
>>>>>     2000 tau, 2.4335e-012 adev(n=98),       2.4515e-012 oadev(n=196000)
>>>>>     5000 tau, 1.0308e-012 adev(n=38),       1.0861e-012 oadev(n=190000)
>>>>>    10000 tau, 5.9504e-013 adev(n=18),       6.1031e-013 oadev(n=180000)
>>>>>    20000 tau, 3.6277e-013 adev(n=8),        3.1994e-013 oadev(n=160000)
>>>>>    50000 tau, 1.0630e-013 adev(n=2),        1.6715e-013 oadev(n=100000)
>>>>>
>>>>> Is there any Linux tools for calculating adev as I'm having to run
>>>>> Windows in a VMware session?
>>>>>
>>>>> 73,
>>>>> Steve
>>>>>
>>>>> 2009/4/8 Tom Van Baak <tvb at leapsecond.com>:
>>>>>
>>>>>
>>>>>           
>>>>>> Steve,
>>>>>>
>>>>>> You've asked a couple of questions. Let me start with this.
>>>>>>
>>>>>> It is true that if one were only interested in the performance
>>>>>> of a pendulum (or quartz or atomic) clock for averaging times
>>>>>> of one day that all you would need is a series of time error
>>>>>> (aka phase) measurements made about the same time once
>>>>>> a day (doesn't have to be that exact). After one week, you'd
>>>>>> have 7 error measurements (=6 frequency =5 stability points)
>>>>>> and this is adequate to calculate the ADEV for tau 1 day.
>>>>>> This alone allows you to rank your clock among all the other
>>>>>> pendulum clocks out there. Note also you get time error and
>>>>>> rate error from these few data points too.
>>>>>>
>>>>>> As another example, suppose you have a nice HP 10811A
>>>>>> oscillator and want to measure its drift rate. In this case you
>>>>>> could spend just 100 seconds and measure its frequency
>>>>>> once a day, or even once every couple of days. Do this for
>>>>>> a month and you'd have several dozen points. If you plot
>>>>>> these frequency measurements you will likely see that they
>>>>>> approximately fall on a line; the slope of the is the frequency
>>>>>> drift rate of the 10811. The general shape of the points, or
>>>>>> the fit of the line is a rough indication of how consistent the
>>>>>> drift rate is or if it's increasing or decreasing.
>>>>>>
>>>>>> Neither of these examples require a lot of data. Both of these
>>>>>> are real-world examples.
>>>>>>
>>>>>> OK so far?
>>>>>>
>>>>>> /tvb
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> time-nuts mailing list -- time-nuts at febo.com
>>>>>> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
>>>>>> and follow the instructions there.
>>>>>>
>>>>>>
>>>>>>
>>>>>>             
>>>>>
>>>>>           
>>>> _______________________________________________
>>>> time-nuts mailing list -- time-nuts at febo.com
>>>> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
>>>> and follow the instructions there.
>>>>
>>>>
>>>>         
>>>
>>>
>>>       
>> _______________________________________________
>> time-nuts mailing list -- time-nuts at febo.com
>> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
>> and follow the instructions there.
>>
>>     
>
>
>
>   




More information about the time-nuts mailing list