refactor to minimize code plot size.
Added code to set x,y labels and title, and to set xlim, ylim in one line. Also moved some plotting code to the *internal.py files.
This commit is contained in:
parent
6cc83b462e
commit
9b60578728
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -39,6 +39,26 @@ def bar_plot(pos, ylim=(0,1), title=None):
|
||||
plt.title(title)
|
||||
|
||||
|
||||
def set_labels(title=None, x=None, y=None):
|
||||
""" helps make code in book shorter. Optional set title, xlabel and ylabel
|
||||
"""
|
||||
if x is not None:
|
||||
plt.xlabel(x)
|
||||
if y is not None:
|
||||
plt.ylabel(y)
|
||||
if title is not None:
|
||||
plt.title(title)
|
||||
|
||||
|
||||
def set_limits(x, y):
|
||||
""" helper function to make code in book shorter. Set the limits for the x
|
||||
and y axis.
|
||||
"""
|
||||
|
||||
plt.gca().set_xlim(x)
|
||||
plt.gca().set_ylim(y)
|
||||
|
||||
|
||||
def plot_measurements(xs, ys=None, color='r', lw=2, label='Measurements', **kwargs):
|
||||
""" Helper function to give a consistant way to display
|
||||
measurements in the book.
|
||||
|
@ -4,6 +4,8 @@ Created on Fri Jul 18 23:23:08 2014
|
||||
|
||||
@author: rlabbe
|
||||
"""
|
||||
|
||||
import book_plots as bp
|
||||
from math import radians, sin, cos, sqrt, exp
|
||||
import numpy.random as random
|
||||
import matplotlib.pyplot as plt
|
||||
@ -38,6 +40,31 @@ def ball_kf(x, y, omega, v0, dt, r=0.5, q=0.02):
|
||||
return f1
|
||||
|
||||
|
||||
def plot_radar(xs, track, time):
|
||||
|
||||
plt.figure()
|
||||
bp.plot_track(time, track[:, 0])
|
||||
bp.plot_filter(time, xs[:, 0])
|
||||
plt.legend(loc=4)
|
||||
plt.xlabel('time (sec)')
|
||||
plt.ylabel('position (m)')
|
||||
|
||||
plt.figure()
|
||||
bp.plot_track(time, track[:, 1])
|
||||
bp.plot_filter(time, xs[:, 1])
|
||||
plt.legend(loc=4)
|
||||
plt.xlabel('time (sec)')
|
||||
plt.ylabel('velocity (m/s)')
|
||||
|
||||
plt.figure()
|
||||
bp.plot_track(time, track[:, 2])
|
||||
bp.plot_filter(time, xs[:, 2])
|
||||
plt.ylabel('altitude (m)')
|
||||
plt.legend(loc=4)
|
||||
plt.xlabel('time (sec)')
|
||||
plt.ylim((900, 1600))
|
||||
plt.show()
|
||||
|
||||
def plot_bicycle():
|
||||
plt.clf()
|
||||
plt.axes()
|
||||
|
50
code/nonlinear_internal.py
Normal file
50
code/nonlinear_internal.py
Normal file
@ -0,0 +1,50 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Thu Jul 9 13:02:32 2015
|
||||
|
||||
@author: Roger Labbe
|
||||
"""
|
||||
|
||||
import filterpy.stats as stats
|
||||
import matplotlib.pyplot as plt
|
||||
from matplotlib.patches import Ellipse
|
||||
import numpy as np
|
||||
|
||||
|
||||
def plot1():
|
||||
|
||||
stats.plot_covariance_ellipse((10, 2), P, facecolor='g', alpha=0.2)
|
||||
|
||||
|
||||
def plot2():
|
||||
P = np.array([[6, 2.5], [2.5, .6]])
|
||||
circle1=plt.Circle((10,0),3,color='#004080',fill=False,linewidth=4, alpha=.7)
|
||||
ax = plt.gca()
|
||||
ax.add_artist(circle1)
|
||||
plt.xlim(0,10)
|
||||
plt.ylim(0,3)
|
||||
P = np.array([[6, 2.5], [2.5, .6]])
|
||||
stats.plot_covariance_ellipse((10, 2), P, facecolor='g', alpha=0.2)
|
||||
|
||||
def plot3():
|
||||
P = np.array([[6, 2.5], [2.5, .6]])
|
||||
circle1=plt.Circle((10,0),3,color='#004080',fill=False,linewidth=4, alpha=.7)
|
||||
ax = plt.gca()
|
||||
ax.add_artist(circle1)
|
||||
plt.xlim(0,10)
|
||||
plt.ylim(0,3)
|
||||
plt.axhline(3, ls='--')
|
||||
stats.plot_covariance_ellipse((10, 2), P, facecolor='g', alpha=0.2)
|
||||
|
||||
def plot4():
|
||||
P = np.array([[6, 2.5], [2.5, .6]])
|
||||
circle1=plt.Circle((10,0),3,color='#004080',fill=False,linewidth=4, alpha=.7)
|
||||
ax = plt.gca()
|
||||
ax.add_artist(circle1)
|
||||
plt.xlim(0,10)
|
||||
plt.ylim(0,3)
|
||||
plt.axhline(3, ls='--')
|
||||
stats.plot_covariance_ellipse((10, 2), P, facecolor='g', alpha=0.2)
|
||||
plt.scatter([11.4], [2.65],s=200)
|
||||
plt.scatter([12], [3], c='r', s=200)
|
||||
plt.show()
|
@ -236,6 +236,62 @@ def plot_sigma_points():
|
||||
plt.show()
|
||||
print(sum(Wc0))
|
||||
|
||||
def plot_radar(xs, t, plot_x=True, plot_vel=True, plot_alt=True):
|
||||
xs = np.asarray(xs)
|
||||
if plot_x:
|
||||
plt.figure()
|
||||
plt.plot(t, xs[:, 0]/1000.)
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('position(km)')
|
||||
if plot_vel:
|
||||
plt.figure()
|
||||
plt.plot(t, xs[:, 1])
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('velocity')
|
||||
if plot_alt:
|
||||
plt.figure()
|
||||
plt.plot(t, xs[:,2])
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('altitude')
|
||||
plt.show()
|
||||
|
||||
def print_sigmas(n=1, mean=5, cov=3, alpha=.1, beta=2., kappa=2):
|
||||
points = MerweScaledSigmaPoints(n, alpha, beta, kappa)
|
||||
print('sigmas: ', points.sigma_points(mean, cov).T[0])
|
||||
Wm, Wc = points.weights()
|
||||
print('mean weights:', Wm)
|
||||
print('cov weights:', Wc)
|
||||
print('lambda:', alpha**2 *(n+kappa) - n)
|
||||
print('sum cov', sum(Wc))
|
||||
|
||||
|
||||
def plot_rts_output(xs, Ms, t):
|
||||
plt.figure()
|
||||
plt.plot(t, xs[:, 0]/1000., label='KF', lw=2)
|
||||
plt.plot(t, Ms[:, 0]/1000., c='k', label='RTS', lw=2)
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('x')
|
||||
plt.legend(loc=4)
|
||||
|
||||
plt.figure()
|
||||
|
||||
plt.plot(t, xs[:, 1], label='KF')
|
||||
plt.plot(t, Ms[:, 1], c='k', label='RTS')
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('x velocity')
|
||||
plt.legend(loc=4)
|
||||
|
||||
plt.figure()
|
||||
plt.plot(t, xs[:, 2], label='KF')
|
||||
plt.plot(t, Ms[:, 2], c='k', label='RTS')
|
||||
plt.xlabel('time(sec)')
|
||||
plt.ylabel('Altitude(m)')
|
||||
plt.legend(loc=4)
|
||||
|
||||
np.set_printoptions(precision=4)
|
||||
print('Difference in position in meters:', xs[-6:-1, 0] - Ms[-6:-1, 0])
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
#show_2d_transform()
|
||||
|
Loading…
Reference in New Issue
Block a user