"""
Created on Sat May 2 09:46:06 2015
@author: Roger
"""
import math
import numpy as np
from numpy.random import uniform
from numpy.random import randn
import scipy.stats
import matplotlib.pyplot as plt
import random
if __name__ == '__main__':
N = 2000
pf = ParticleFilter(N, 100, 100)
z = np.array([20, 20])
mu0 = np.array([0., 0.])
plot(pf, weights=False)
fig = plt.gcf()
for x in range(10):
z[0] = x+1 + randn()*0.3
z[1] = x+1 + randn()*0.3
pf.predict((1,1), (0.2, 0.2))
pf.weight(z=z, var=.8)
neff = pf.neff()
print('neff', neff)
if neff < N/2 or N <= 2000:
pf.resample()
mu, var = pf.estimate()
if x == 0:
mu0 = mu
plot(pf, weights=True)
plt.plot(x+1, x+1, marker='*', c='r', ms=10)
plt.scatter(mu[0], mu[1], c='g', s=100)
plt.plot([0,100], [0,100])
plt.tight_layout()
plt.pause(.002)
mu0 = mu
plt.ion()