def check_expectation_one(exp_class): e = exp_class() x = np.random.rand(2, 2) dt = np.random.rand() e.update(x, dt) v = e.get_value() assert_allclose(v, x)
def check_efficient_exp(exp_class, sequence): """ Checks that the dt is working ok. """ exp1 = exp_class() xs = [] T = 0 for x in sequence: dt = np.random.rand() xs.append(x * dt) T += dt exp1.update(x, dt=dt) es1 = exp1.get_value() expected = np.array(xs).sum(axis=0) / T assert_allclose(es1, expected)
def check_my_doubt(exp_class): values = [100.0, 200.0] mean = 150.0 for nd in [1, 10, 100, 1000, 2000]: samples = [] for v in values: samples.extend([v] * nd) samples = np.array(samples) ex = exp_class() for s in samples: ex.update(np.array([s])) # print('accum: %10.4f mass: %10.4f ' % (ex.accum, ex.accum_mass)) # ex.get_value() result = ex.get_value() # print('accum: %10.4f mass: %10.4f ' % (ex.accum, ex.accum_mass)) assert_allclose(result, mean)
def get_uniform_directions(fov_deg, num_sensels): """ Returns a set of directions uniform in space """ if fov_deg == 360: ray_dist = 2 * np.pi / (num_sensels) directions = np.linspace(-np.pi + ray_dist / 2, + np.pi - ray_dist + ray_dist / 2, num_sensels) assert_allclose(directions[-1] - directions[0], 2 * np.pi - ray_dist) t = np.rad2deg(directions) a = t[1:] - t[:-1] b = t[0] - t[-1] + 360 assert_allclose(a[0], b) else: fov_rad = np.radians(fov_deg) directions = np.linspace(-fov_rad / 2, +fov_rad / 2, num_sensels) assert_allclose(directions[-1] - directions[0], fov_rad) assert len(directions) == num_sensels return directions