From 1dd6b55fbc899793ed3d8f0ad5b611579bb99ac2 Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:47:05 +0900 Subject: [PATCH 1/8] Create kalman_filter --- kalman_filter | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 kalman_filter diff --git a/kalman_filter b/kalman_filter new file mode 100644 index 0000000..598365d --- /dev/null +++ b/kalman_filter @@ -0,0 +1,67 @@ +import numpy +import pylab + +def frand(): + return 2*(rand()-0.5) + +def kalman(): + ''' initial values for the kalman filter ''' + x_est_last = 0 + P_last = 0 + + ''' the noise in the system ''' + Q = 0.022 + R = 0.617 + + K = 0 + P = 0 + P_temp = 0; + x_temp_est = 0; + x_est = 0; + + ''' the 'noisy' value we measured ''' + z_measured = 0.5 + + ''' the ideal value we wish to measure ''' + z_real = 0.5 + + ''' initialize with a measurement ''' + x_est_last = z_real + frand() * 0.09 + sum_error_kalman = 0 + sum_error_measure = 0 + + i = 0 + while i<100: + ''' do a prediction ''' + x_temp_est = x_est_last + P_temp = P_last + Q + + ''' calculate the kalman gain ''' + K = P_temp * (1.0/(P_temp + R)) + ''' measure ''' + z_measured = z_real + frand()*0.09 # the real measurement + noise + ''' correct ''' + x_est = x_temp_est + K*(z_measured - x_temp_est) + P = (1 - K)*P_temp + + plot(i, z_real, 'bo') # ideal + plot(i, z_measured, 'go') # measured + plot(i, x_est, 'ro') # kalman + + sum_error_kalman += fabs(z_real - x_est) + sum_error_measure += fabs(z_real - z_measured) + + ''' update our last's ''' + P_last = P + x_est_last = x_est + i = i + 1 + + print "Total error if using raw measured : ", sum_error_measure + print "Total error if using kalman filter : ", sum_error_kalman + print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) + +kalman(); +print; +print "blue : ideal" +print "green : measured data" +print "red : kalman result" From ee6925fcd1c63714cd46a3a286d4e984bbdf3eff Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:47:54 +0900 Subject: [PATCH 2/8] Rename kalman_filter to kalman_filter.py --- kalman_filter => kalman_filter.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename kalman_filter => kalman_filter.py (100%) diff --git a/kalman_filter b/kalman_filter.py similarity index 100% rename from kalman_filter rename to kalman_filter.py From b3a9642b87b368a3ed4564860e4e3fd6ae1e70b4 Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:50:23 +0900 Subject: [PATCH 3/8] Create Kalman-filtering.py --- .../Kalman-filtering.py | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Problem_8_Kalman-filtering/Kalman-filtering.py diff --git a/Problem_8_Kalman-filtering/Kalman-filtering.py b/Problem_8_Kalman-filtering/Kalman-filtering.py new file mode 100644 index 0000000..598365d --- /dev/null +++ b/Problem_8_Kalman-filtering/Kalman-filtering.py @@ -0,0 +1,67 @@ +import numpy +import pylab + +def frand(): + return 2*(rand()-0.5) + +def kalman(): + ''' initial values for the kalman filter ''' + x_est_last = 0 + P_last = 0 + + ''' the noise in the system ''' + Q = 0.022 + R = 0.617 + + K = 0 + P = 0 + P_temp = 0; + x_temp_est = 0; + x_est = 0; + + ''' the 'noisy' value we measured ''' + z_measured = 0.5 + + ''' the ideal value we wish to measure ''' + z_real = 0.5 + + ''' initialize with a measurement ''' + x_est_last = z_real + frand() * 0.09 + sum_error_kalman = 0 + sum_error_measure = 0 + + i = 0 + while i<100: + ''' do a prediction ''' + x_temp_est = x_est_last + P_temp = P_last + Q + + ''' calculate the kalman gain ''' + K = P_temp * (1.0/(P_temp + R)) + ''' measure ''' + z_measured = z_real + frand()*0.09 # the real measurement + noise + ''' correct ''' + x_est = x_temp_est + K*(z_measured - x_temp_est) + P = (1 - K)*P_temp + + plot(i, z_real, 'bo') # ideal + plot(i, z_measured, 'go') # measured + plot(i, x_est, 'ro') # kalman + + sum_error_kalman += fabs(z_real - x_est) + sum_error_measure += fabs(z_real - z_measured) + + ''' update our last's ''' + P_last = P + x_est_last = x_est + i = i + 1 + + print "Total error if using raw measured : ", sum_error_measure + print "Total error if using kalman filter : ", sum_error_kalman + print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) + +kalman(); +print; +print "blue : ideal" +print "green : measured data" +print "red : kalman result" From 29bd1104f9f4257ec52904428bc11db06a2368a0 Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:50:46 +0900 Subject: [PATCH 4/8] Delete kalman_filter.py --- kalman_filter.py | 67 ------------------------------------------------ 1 file changed, 67 deletions(-) delete mode 100644 kalman_filter.py diff --git a/kalman_filter.py b/kalman_filter.py deleted file mode 100644 index 598365d..0000000 --- a/kalman_filter.py +++ /dev/null @@ -1,67 +0,0 @@ -import numpy -import pylab - -def frand(): - return 2*(rand()-0.5) - -def kalman(): - ''' initial values for the kalman filter ''' - x_est_last = 0 - P_last = 0 - - ''' the noise in the system ''' - Q = 0.022 - R = 0.617 - - K = 0 - P = 0 - P_temp = 0; - x_temp_est = 0; - x_est = 0; - - ''' the 'noisy' value we measured ''' - z_measured = 0.5 - - ''' the ideal value we wish to measure ''' - z_real = 0.5 - - ''' initialize with a measurement ''' - x_est_last = z_real + frand() * 0.09 - sum_error_kalman = 0 - sum_error_measure = 0 - - i = 0 - while i<100: - ''' do a prediction ''' - x_temp_est = x_est_last - P_temp = P_last + Q - - ''' calculate the kalman gain ''' - K = P_temp * (1.0/(P_temp + R)) - ''' measure ''' - z_measured = z_real + frand()*0.09 # the real measurement + noise - ''' correct ''' - x_est = x_temp_est + K*(z_measured - x_temp_est) - P = (1 - K)*P_temp - - plot(i, z_real, 'bo') # ideal - plot(i, z_measured, 'go') # measured - plot(i, x_est, 'ro') # kalman - - sum_error_kalman += fabs(z_real - x_est) - sum_error_measure += fabs(z_real - z_measured) - - ''' update our last's ''' - P_last = P - x_est_last = x_est - i = i + 1 - - print "Total error if using raw measured : ", sum_error_measure - print "Total error if using kalman filter : ", sum_error_kalman - print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) - -kalman(); -print; -print "blue : ideal" -print "green : measured data" -print "red : kalman result" From d2540db6a5c141c23fbe5604681361103591c589 Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:51:18 +0900 Subject: [PATCH 5/8] Delete Kalman-filtering.py --- .../Kalman-filtering.py | 67 ------------------- 1 file changed, 67 deletions(-) delete mode 100644 Problem_8_Kalman-filtering/Kalman-filtering.py diff --git a/Problem_8_Kalman-filtering/Kalman-filtering.py b/Problem_8_Kalman-filtering/Kalman-filtering.py deleted file mode 100644 index 598365d..0000000 --- a/Problem_8_Kalman-filtering/Kalman-filtering.py +++ /dev/null @@ -1,67 +0,0 @@ -import numpy -import pylab - -def frand(): - return 2*(rand()-0.5) - -def kalman(): - ''' initial values for the kalman filter ''' - x_est_last = 0 - P_last = 0 - - ''' the noise in the system ''' - Q = 0.022 - R = 0.617 - - K = 0 - P = 0 - P_temp = 0; - x_temp_est = 0; - x_est = 0; - - ''' the 'noisy' value we measured ''' - z_measured = 0.5 - - ''' the ideal value we wish to measure ''' - z_real = 0.5 - - ''' initialize with a measurement ''' - x_est_last = z_real + frand() * 0.09 - sum_error_kalman = 0 - sum_error_measure = 0 - - i = 0 - while i<100: - ''' do a prediction ''' - x_temp_est = x_est_last - P_temp = P_last + Q - - ''' calculate the kalman gain ''' - K = P_temp * (1.0/(P_temp + R)) - ''' measure ''' - z_measured = z_real + frand()*0.09 # the real measurement + noise - ''' correct ''' - x_est = x_temp_est + K*(z_measured - x_temp_est) - P = (1 - K)*P_temp - - plot(i, z_real, 'bo') # ideal - plot(i, z_measured, 'go') # measured - plot(i, x_est, 'ro') # kalman - - sum_error_kalman += fabs(z_real - x_est) - sum_error_measure += fabs(z_real - z_measured) - - ''' update our last's ''' - P_last = P - x_est_last = x_est - i = i + 1 - - print "Total error if using raw measured : ", sum_error_measure - print "Total error if using kalman filter : ", sum_error_kalman - print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) - -kalman(); -print; -print "blue : ideal" -print "green : measured data" -print "red : kalman result" From d57e0212d1f41c2578187b66bb54a1e742c2c5f7 Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:52:20 +0900 Subject: [PATCH 6/8] Create kalman_filtering.ipynb --- Problem8/kalman_filtering.ipynb | 67 +++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Problem8/kalman_filtering.ipynb diff --git a/Problem8/kalman_filtering.ipynb b/Problem8/kalman_filtering.ipynb new file mode 100644 index 0000000..598365d --- /dev/null +++ b/Problem8/kalman_filtering.ipynb @@ -0,0 +1,67 @@ +import numpy +import pylab + +def frand(): + return 2*(rand()-0.5) + +def kalman(): + ''' initial values for the kalman filter ''' + x_est_last = 0 + P_last = 0 + + ''' the noise in the system ''' + Q = 0.022 + R = 0.617 + + K = 0 + P = 0 + P_temp = 0; + x_temp_est = 0; + x_est = 0; + + ''' the 'noisy' value we measured ''' + z_measured = 0.5 + + ''' the ideal value we wish to measure ''' + z_real = 0.5 + + ''' initialize with a measurement ''' + x_est_last = z_real + frand() * 0.09 + sum_error_kalman = 0 + sum_error_measure = 0 + + i = 0 + while i<100: + ''' do a prediction ''' + x_temp_est = x_est_last + P_temp = P_last + Q + + ''' calculate the kalman gain ''' + K = P_temp * (1.0/(P_temp + R)) + ''' measure ''' + z_measured = z_real + frand()*0.09 # the real measurement + noise + ''' correct ''' + x_est = x_temp_est + K*(z_measured - x_temp_est) + P = (1 - K)*P_temp + + plot(i, z_real, 'bo') # ideal + plot(i, z_measured, 'go') # measured + plot(i, x_est, 'ro') # kalman + + sum_error_kalman += fabs(z_real - x_est) + sum_error_measure += fabs(z_real - z_measured) + + ''' update our last's ''' + P_last = P + x_est_last = x_est + i = i + 1 + + print "Total error if using raw measured : ", sum_error_measure + print "Total error if using kalman filter : ", sum_error_kalman + print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) + +kalman(); +print; +print "blue : ideal" +print "green : measured data" +print "red : kalman result" From 99c0c8b0040e4936a13b67aac3fc6d8f396a208a Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 14:54:10 +0900 Subject: [PATCH 7/8] Delete kalman_filtering.ipynb --- Problem8/kalman_filtering.ipynb | 67 --------------------------------- 1 file changed, 67 deletions(-) delete mode 100644 Problem8/kalman_filtering.ipynb diff --git a/Problem8/kalman_filtering.ipynb b/Problem8/kalman_filtering.ipynb deleted file mode 100644 index 598365d..0000000 --- a/Problem8/kalman_filtering.ipynb +++ /dev/null @@ -1,67 +0,0 @@ -import numpy -import pylab - -def frand(): - return 2*(rand()-0.5) - -def kalman(): - ''' initial values for the kalman filter ''' - x_est_last = 0 - P_last = 0 - - ''' the noise in the system ''' - Q = 0.022 - R = 0.617 - - K = 0 - P = 0 - P_temp = 0; - x_temp_est = 0; - x_est = 0; - - ''' the 'noisy' value we measured ''' - z_measured = 0.5 - - ''' the ideal value we wish to measure ''' - z_real = 0.5 - - ''' initialize with a measurement ''' - x_est_last = z_real + frand() * 0.09 - sum_error_kalman = 0 - sum_error_measure = 0 - - i = 0 - while i<100: - ''' do a prediction ''' - x_temp_est = x_est_last - P_temp = P_last + Q - - ''' calculate the kalman gain ''' - K = P_temp * (1.0/(P_temp + R)) - ''' measure ''' - z_measured = z_real + frand()*0.09 # the real measurement + noise - ''' correct ''' - x_est = x_temp_est + K*(z_measured - x_temp_est) - P = (1 - K)*P_temp - - plot(i, z_real, 'bo') # ideal - plot(i, z_measured, 'go') # measured - plot(i, x_est, 'ro') # kalman - - sum_error_kalman += fabs(z_real - x_est) - sum_error_measure += fabs(z_real - z_measured) - - ''' update our last's ''' - P_last = P - x_est_last = x_est - i = i + 1 - - print "Total error if using raw measured : ", sum_error_measure - print "Total error if using kalman filter : ", sum_error_kalman - print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) - -kalman(); -print; -print "blue : ideal" -print "green : measured data" -print "red : kalman result" From 567e1bf6b2fb5530f594bc1f005e6dadbd080f2e Mon Sep 17 00:00:00 2001 From: jaeha1223 Date: Fri, 12 Jun 2015 15:31:07 +0900 Subject: [PATCH 8/8] Create Kalman_Filtering.py --- Problem_8/Kalman_Filtering.py | 67 +++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 Problem_8/Kalman_Filtering.py diff --git a/Problem_8/Kalman_Filtering.py b/Problem_8/Kalman_Filtering.py new file mode 100644 index 0000000..6be46f8 --- /dev/null +++ b/Problem_8/Kalman_Filtering.py @@ -0,0 +1,67 @@ +import numpy +import pylab +import random + +def frand(): + return 2*(random.random()-0.5) + +def kalman(): + ''' initial values for the kalman filter ''' + x_est_last = 0 + P_last = 0 + + ''' the noise in the system ''' + Q = 0.022 + R = 0.617 + + K = 0 + P = 0 + P_temp = 0; + x_temp_est = 0; + x_est = 0; + + ''' the 'noisy' value we measured ''' + z_measured = 0.5 + + ''' the ideal value we wish to measure ''' + z_real = 0.5 + + ''' initialize with a measurement ''' + x_est_last = z_real + frand() * 0.09 + sum_error_kalman = 0 + sum_error_measure = 0 + + i = 0 + while i<100: + ''' do a prediction ''' + x_temp_est = x_est_last + P_temp = P_last + Q + + ''' calculate the kalman gain ''' + K = P_temp * (1.0/(P_temp + R)) + ''' measure ''' + z_measured = z_real + frand()*0.09 # the real measurement + noise + ''' correct ''' + x_est = x_temp_est + K*(z_measured - x_temp_est) + P = (1 - K)*P_temp + + pylab.plot(i, z_real, 'bo') # ideal + pylab.plot(i, z_measured, 'go') # measured + pylab.plot(i, x_est, 'ro') # kalman + + sum_error_kalman += numpy.fabs(z_real - x_est) + sum_error_measure += numpy.fabs(z_real - z_measured) + + ''' update our last's ''' + P_last = P + x_est_last = x_est + i = i + 1 + + print "Total error if using raw measured : ", sum_error_measure + print "Total error if using kalman filter : ", sum_error_kalman + print "Reduction in error : ", 100-((sum_error_kalman/sum_error_measure)*100) + pylab.title('Kalman Filtering') + pylab.xlabel('R:kalman / G:measured / B:ideal') + pylab.show() + +kalman();