diff src/BayesianArrayStructure.cpp @ 3:de86d77f2612

added speed prior setting. needs some cleaning
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Fri, 19 Aug 2011 02:36:34 +0100
parents 5581023e0de4
children 4a8e6a6cd224
line wrap: on
line diff
--- a/src/BayesianArrayStructure.cpp	Fri Aug 19 01:26:40 2011 +0100
+++ b/src/BayesianArrayStructure.cpp	Fri Aug 19 02:36:34 2011 +0100
@@ -7,6 +7,9 @@
  *
  */
 
+//look at reset speed to one - what does this do? - get rid of?
+
+
 #include "BayesianArrayStructure.h"
 
 BayesianArrayStructure::BayesianArrayStructure(){
@@ -16,7 +19,8 @@
 	likelihood.createVector(1);
 	posterior.createVector(1);
 
-
+	speedPriorValue = 1.0;
+	
 	lastEventTime = ofGetElapsedTimeMillis();
 	
 	/*
@@ -70,6 +74,8 @@
 	relativeSpeedPosterior.renormalise();
 	relativeSpeedPosterior.getMaximum();
 	
+	setSpeedPrior(speedPriorValue);
+	
 	prior.zero();
 	posterior.zero();
 //	posterior.offset = - 200;
@@ -81,6 +87,18 @@
 	
 }
 
+void BayesianArrayStructure::setSpeedPrior(double f){	
+	speedPriorValue = f;
+	int index = relativeSpeedPosterior.getRealTermsAsIndex(speedPriorValue);
+	relativeSpeedPosterior.zero();
+	relativeSpeedPosterior.addGaussianShape(index, 20, 0.8);
+	relativeSpeedPosterior.renormalise();
+	relativeSpeedPosterior.getMaximum();
+	relativeSpeedPrior.copyFromDynamicVector(relativeSpeedPosterior);
+	printf("BAYES STRUCTU ' SPEED PRIOR %f . index %i\n", speedPriorValue, index);
+	
+}
+
 void BayesianArrayStructure::resetSpeedSize(int length){
 	printf("BAYESIAN SPEED size is : %i\n", length);
 	
@@ -165,6 +183,7 @@
 	bestEstimate = 0;
 //	lastBestEstimateUpdateTime = ofGetElapsedTimeMillis();
 	
+	setSpeedPrior(speedPriorValue);
 }
 
 void BayesianArrayStructure::zeroArrays(){
@@ -186,7 +205,7 @@
 	
 	tmpBestEstimate = posterior.getIndexInRealTerms(posterior.MAPestimate) + timeDifference*relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.MAPestimate);
 	// 
-	printf("tmp best %f and best %f time diff %f posterior MAP %f\n", tmpBestEstimate, bestEstimate, timeDifference, posterior.getIndexInRealTerms(posterior.MAPestimate));
+	printf("tmp best %f and best %f time diff %f posterior MAP %f at speed %f\n", tmpBestEstimate, bestEstimate, timeDifference, posterior.getIndexInRealTerms(posterior.MAPestimate), relativeSpeedPosterior.getIndexInRealTerms(relativeSpeedPosterior.MAPestimate));
 	//lastBestEstimateUpdateTime = ofGetElapsedTimeMillis();
 }