Beispiel #1
0
    plotallan_phase(plt, phaseB, 1, t, 'go', 'true B phase')
    print("phaseB")
    plotallan_phase(plt, phaseC, 1, t, 'bo', 'true C phase')
    print("phaseC")

    # clock differences
    plotallan_phase(plt, phaseAB, 1, t, 'r.', 'AB measurement')
    print("phaseAB")
    plotallan_phase(plt, phaseBC, 1, t, 'g.', 'BC measurement')
    print("phaseBC")
    plotallan_phase(plt, phaseCA, 1, t, 'b.', 'CA measurement')
    print("phaseCA")

    # 3CH estimates
    (taus, devA, err_a,
     ns_ab) = allantools.three_cornered_hat_phase(phaseAB, phaseBC, phaseCA,
                                                  rate, t, allantools.oadev)
    plt.loglog(taus, devA, 'rv', label='3-C-H estimate for A')

    (taus, devB, err_b,
     ns_ab) = allantools.three_cornered_hat_phase(phaseBC, phaseCA, phaseAB,
                                                  rate, t, allantools.oadev)
    plt.loglog(taus, devB, 'gv', label='3-C-H estimate for B')

    (taus, devC, err_C,
     ns_ac) = allantools.three_cornered_hat_phase(phaseCA, phaseAB, phaseBC,
                                                  rate, t, allantools.oadev)
    plt.loglog(taus, devC, 'bv', label='3-C-H estimate for C')

    print("TCH done.")
    plt.title('AllanTools three-cornered-hat example')
    plt.xlabel('Tau / s')
Beispiel #2
0
def test_3ch_1():
    (t,d,e,n) = at.three_cornered_hat_phase(ab, bc, ca, rate=r, 
                                       taus='decade', function=at.oadev)
    np.testing.assert_array_equal(t, expected_decade)
    N=10000
    rate = 1.0
    # white phase noise => 1/tau ADEV
    d = numpy.random.randn(4*N)
    phaseA = d[0:N] # numpy.random.randn(N) #pink(N)
    phaseA = [1*x for x in phaseA]
    phaseB = d[N:2*N] #numpy.random.randn(N) #noise.pink(N)
    phaseB = [5*x for x in phaseB]
    phaseC = d[2*N:3*N] #numpy.random.randn(N) #noise.pink(N)
    phaseC = [5*x for x in phaseC]

    phaseAB = [a-b for (a,b) in zip(phaseA,phaseB)]
    phaseBC = [b-c for (b,c) in zip(phaseB,phaseC)]
    phaseCA = [c-a for (c,a) in zip(phaseC,phaseA)]

    (taus,devA) = allantools.three_cornered_hat_phase(phaseAB,phaseBC,phaseCA,rate,t, allantools.mdev)
    print("TCH devA")
    
    plotallan_phase(plt, phaseA, 1, t, 'ro', 'true A phase')
    print("phaseA")
    plotallan_phase(plt, phaseB, 1, t, 'go', 'true B phase')
    print("phaseB")
    plotallan_phase(plt, phaseC, 1, t, 'bo', 'true C phase')
    print("phaseC")
    
    plotallan_phase(plt, phaseAB, 1, t, 'r.', 'AB measurement')    
    print("phaseAB")
    plotallan_phase(plt, phaseBC, 1, t, 'g.', 'BC measurement')
    print("phaseBC")
    plotallan_phase(plt, phaseCA, 1, t, 'b.', 'CA measurement')
    print("phaseCA")
    rate = 1.0
    # white phase noise => 1/tau ADEV
    d = numpy.random.randn(4 * N)
    phaseA = d[0:N]  # numpy.random.randn(N) #pink(N)
    phaseA = [1 * x for x in phaseA]
    phaseB = d[N:2 * N]  #numpy.random.randn(N) #noise.pink(N)
    phaseB = [5 * x for x in phaseB]
    phaseC = d[2 * N:3 * N]  #numpy.random.randn(N) #noise.pink(N)
    phaseC = [5 * x for x in phaseC]

    phaseAB = [a - b for (a, b) in zip(phaseA, phaseB)]
    phaseBC = [b - c for (b, c) in zip(phaseB, phaseC)]
    phaseCA = [c - a for (c, a) in zip(phaseC, phaseA)]

    (taus, devA) = allantools.three_cornered_hat_phase(phaseAB, phaseBC,
                                                       phaseCA, rate, t,
                                                       allantools.mdev)
    print("TCH devA")

    plotallan_phase(plt, phaseA, 1, t, 'ro', 'true A phase')
    print("phaseA")
    plotallan_phase(plt, phaseB, 1, t, 'go', 'true B phase')
    print("phaseB")
    plotallan_phase(plt, phaseC, 1, t, 'bo', 'true C phase')
    print("phaseC")

    plotallan_phase(plt, phaseAB, 1, t, 'r.', 'AB measurement')
    print("phaseAB")
    plotallan_phase(plt, phaseBC, 1, t, 'g.', 'BC measurement')
    print("phaseBC")
    plotallan_phase(plt, phaseCA, 1, t, 'b.', 'CA measurement')