コード例 #1
0
ファイル: test_mmae.py プロジェクト: bmswgnp/filterpy
def test_MMAE():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.2)
    z_xs = zs[:, 0]
    t = np.arange(0, len(z_xs) * dt, dt)

    dt = 0.1
    filters = [make_cv_filter(dt, noise_factor=0.2),
               make_ca_filter(dt, noise_factor=0.2)]
    H_cv = np.array([[1., 0, 0],
                     [0., 1, 0]])

    H_ca = np.array([[1., 0., 0.],
                     [0., 1., 0.],
                     [0., 0., 1.]])

    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=(H_cv, H_ca))

    xs, probs = [], []
    for z in z_xs:
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        #print('p', bank.p)
        probs.append(bank.p[0] / bank.p[1])

    if DO_PLOT:
        plt.subplot(121)
        plt.plot(xs)
        plt.subplot(122)
        plt.plot(probs)
        plt.title('probability ratio p(cv)/p(ca)')
コード例 #2
0
ファイル: test_mmae.py プロジェクト: CeasarSS/books
def test_MMAE2():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.6)
    z_xs = zs[:, 0]
    t = np.arange(0, len(z_xs) * dt, dt)

    dt = 0.1
    ca = make_ca_filter(dt, noise_factor=0.6)
    cv = make_ca_filter(dt, noise_factor=0.6)
    cv.F[:,2] = 0 # remove acceleration term
    cv.P[2,2] = 0
    cv.Q[2,2] = 0

    filters = [cv, ca]


    H_ca = np.array([[1., 0., 0.],
                     [0., 1., 0.],
                     [0., 0., 1.]])

    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=(1., 1.))

    xs, probs = [], []
    cvxs, caxs = [], []
    for i, z in enumerate(z_xs):
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        cvxs.append(cv.x[0])
        caxs.append(ca.x[0])
        print(i, cv.likelihood, ca.likelihood, bank.p)



        #print('p', bank.p)
        probs.append(bank.p[0] / bank.p[1])

    if DO_PLOT:
        plt.subplot(121)
        plt.plot(xs)
        plt.plot(pos[:, 0])
        plt.subplot(122)
        plt.plot(probs)
        plt.title('probability ratio p(cv)/p(ca)')

        plt.figure()
        plt.plot(cvxs, label='CV')
        plt.plot(caxs, label='CA')
        plt.plot(pos[:, 0])
        plt.legend()

        plt.figure()
        plt.plot(xs)
        plt.plot(pos[:, 0])
コード例 #3
0
ファイル: test_mmae.py プロジェクト: poeticcapybara/filterpy
def test_MMAE2():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.6)
    z_xs = zs[:, 0]

    dt = 0.1
    ca = make_ca_filter(dt, noise_factor=0.6)
    cv = make_ca_filter(dt, noise_factor=0.6)
    cv.F[:, 2] = 0 # remove acceleration term
    cv.P[2, 2] = 0
    cv.Q[2, 2] = 0

    filters = [cv, ca]


    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=ca.H)

    xs, probs = [], []
    cvxs, caxs = [], []
    s = Saver(bank)
    for i, z in enumerate(z_xs):
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        cvxs.append(cv.x[0])
        caxs.append(ca.x[0])
        print(i, cv.likelihood, ca.likelihood, bank.p)
        s.save()
        probs.append(bank.p[0] / bank.p[1])
    s.to_array()

    if DO_PLOT:
        plt.subplot(121)
        plt.plot(xs)
        plt.plot(pos[:, 0])
        plt.subplot(122)
        plt.plot(probs)
        plt.title('probability ratio p(cv)/p(ca)')

        plt.figure()
        plt.plot(cvxs, label='CV')
        plt.plot(caxs, label='CA')
        plt.plot(pos[:, 0])
        plt.legend()

        plt.figure()
        plt.plot(xs)
        plt.plot(pos[:, 0])

    return bank
コード例 #4
0
ファイル: test_mmae.py プロジェクト: Censio/filterpy
def test_MMAE2():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.6)
    z_xs = zs[:, 0]
    t = np.arange(0, len(z_xs) * dt, dt)

    dt = 0.1
    ca = make_ca_filter(dt, noise_factor=0.6)
    cv = make_ca_filter(dt, noise_factor=0.6)
    cv.F[:,2] = 0 # remove acceleration term
    cv.P[2,2] = 0
    cv.Q[2,2] = 0

    filters = [cv, ca]


    H_ca = np.array([[1., 0., 0.],
                     [0., 1., 0.],
                     [0., 0., 1.]])

    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=(1., 1.))

    xs, probs = [], []
    cvxs, caxs = [], []
    for i, z in enumerate(z_xs):
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        cvxs.append(cv.x[0])
        caxs.append(ca.x[0])
        print(i, cv.likelihood, ca.likelihood, bank.p)



        #print('p', bank.p)
        probs.append(bank.p[0] / bank.p[1])
コード例 #5
0
def test_MMAE2():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.6)
    z_xs = zs[:, 0]
    t = np.arange(0, len(z_xs) * dt, dt)

    dt = 0.1
    ca = make_ca_filter(dt, noise_factor=0.6)
    cv = make_ca_filter(dt, noise_factor=0.6)
    cv.F[:,2] = 0 # remove acceleration term
    cv.P[2,2] = 0
    cv.Q[2,2] = 0

    filters = [cv, ca]


    H_ca = np.array([[1., 0., 0.],
                     [0., 1., 0.],
                     [0., 0., 1.]])

    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=(1., 1.))

    xs, probs = [], []
    cvxs, caxs = [], []
    for i, z in enumerate(z_xs):
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        cvxs.append(cv.x[0])
        caxs.append(ca.x[0])
        print(i, cv.likelihood(z), ca.likelihood(z), bank.p)



        #print('p', bank.p)
        probs.append(bank.p[0] / bank.p[1])

    if DO_PLOT:
        plt.subplot(121)
        plt.plot(xs)
        plt.plot(pos[:, 0])
        plt.subplot(122)
        plt.plot(probs)
        plt.title('probability ratio p(cv)/p(ca)')

        plt.figure()
        plt.plot(cvxs, label='CV')
        plt.plot(caxs, label='CA')
        plt.plot(pos[:, 0])
        plt.legend()

        plt.figure()
        plt.plot(xs)
        plt.plot(pos[:, 0])
コード例 #6
0
ファイル: test_mmae.py プロジェクト: zwcdp/filterpy
def test_MMAE2():
    dt = 0.1
    pos, zs = generate_data(120, noise_factor=0.6)
    z_xs = zs[:, 0]

    dt = 0.1
    ca = make_ca_filter(dt, noise_factor=0.6)
    cv = make_ca_filter(dt, noise_factor=0.6)
    cv.F[:, 2] = 0  # remove acceleration term
    cv.P[2, 2] = 0
    cv.Q[2, 2] = 0

    filters = [cv, ca]

    bank = MMAEFilterBank(filters, (0.5, 0.5), dim_x=3, H=ca.H)

    xs, probs = [], []
    cvxs, caxs = [], []
    s = Saver(bank)
    for i, z in enumerate(z_xs):
        bank.predict()
        bank.update(z)
        xs.append(bank.x[0])
        cvxs.append(cv.x[0])
        caxs.append(ca.x[0])
        print(i, cv.likelihood, ca.likelihood, bank.p)
        s.save()
        probs.append(bank.p[0] / bank.p[1])
    s.to_array()

    if DO_PLOT:
        plt.subplot(121)
        plt.plot(xs)
        plt.plot(pos[:, 0])
        plt.subplot(122)
        plt.plot(probs)
        plt.title('probability ratio p(cv)/p(ca)')

        plt.figure()
        plt.plot(cvxs, label='CV')
        plt.plot(caxs, label='CA')
        plt.plot(pos[:, 0])
        plt.legend()

        plt.figure()
        plt.plot(xs)
        plt.plot(pos[:, 0])

    return bank