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)')
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])
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])
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
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])