Wholesale changes to connect chapters together.
I made a lot of changes so that each chapter makes clear that they are all implementing the same basic bayesian algorithm. This required a lot of editting, and it doesn't make sense to try to do that atomically, hence this huge check in. I made a lot of edits, and haven't copy editted anything. i'm sure I introduced a lot of problems and discontinuities.
This commit is contained in:
44
code/DogSimulation.py
Normal file
44
code/DogSimulation.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sun May 11 13:21:39 2014
|
||||
|
||||
@author: rlabbe
|
||||
"""
|
||||
|
||||
from __future__ import print_function, division
|
||||
|
||||
from numpy.random import randn
|
||||
import math
|
||||
|
||||
class DogSimulation(object):
|
||||
|
||||
def __init__(self, x0=0, velocity=1,
|
||||
measurement_variance=0.0, process_variance=0.0):
|
||||
""" x0 - initial position
|
||||
velocity - (+=right, -=left)
|
||||
measurement_variance - variance in measurement m^2
|
||||
process_variance - variance in process (m/s)^2
|
||||
"""
|
||||
self.x = x0
|
||||
self.velocity = velocity
|
||||
self.measurement_noise = math.sqrt(measurement_variance)
|
||||
self.process_noise = math.sqrt(process_variance)
|
||||
|
||||
|
||||
def move(self, dt=1.0):
|
||||
'''Compute new position of the dog assuming `dt` seconds have
|
||||
passed since the last update.'''
|
||||
# compute new position based on velocity. Add in some
|
||||
# process noise
|
||||
velocity = self.velocity + randn() * self.process_noise
|
||||
self.x += velocity * dt
|
||||
|
||||
def sense_position(self):
|
||||
# simulate measuring the position with noise
|
||||
measurement = self.x + randn() * self.measurement_noise
|
||||
return measurement
|
||||
|
||||
def move_and_sense(self, dt=1.0):
|
||||
self.move(dt)
|
||||
|
||||
return self.sense_position()
|
||||
Reference in New Issue
Block a user