diff src/BayesianArrayStructure.cpp @ 22:9860abc92a30

follower has confidence measure now just using best match. Difficulty in visualising the speed likelihood fn
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Wed, 30 Nov 2011 11:48:35 +0000
parents 11e3119ce6b4
children 032edf186a68
line wrap: on
line diff
--- a/src/BayesianArrayStructure.cpp	Sun Nov 27 21:56:19 2011 +0000
+++ b/src/BayesianArrayStructure.cpp	Wed Nov 30 11:48:35 2011 +0000
@@ -15,17 +15,20 @@
 BayesianArrayStructure::BayesianArrayStructure(){
 	printf("Bayesian structure: DeFault constructor called");
 	
+	relativeSpeedLikelihoodStdDev = 5.0;
+	
 	prior.createVector(1);
 	likelihood.createVector(1);
 	posterior.createVector(1);
-
+	tmpPrior.createVector(1);
+	
 	speedPriorValue = 1.0;
 	speedEstimate = speedPriorValue;
 	
 	lastEventTime = 0;//ofGetElapsedTimeMillis();
 
 	tmpBestEstimate = 0;
-	crossUpdateTimeThreshold = 100;
+	crossUpdateTimeThreshold = 60;
 	priorWidth = 50;
 }
 
@@ -35,9 +38,10 @@
 	prior.createVector(length);
 	likelihood.createVector(length);
 	posterior.createVector(length);
+	tmpPrior.createVector(length);
 	
 	lastEventTime = 0;
-	usingIntegratedTempoEstimate = false;//use max index
+	usingIntegratedTempoEstimate = true;//use max index
 
 }
 
@@ -50,7 +54,6 @@
 	likelihood.createVector(length);
 	posterior.createVector(length);
 	
-	
 	acceleration.createVector(length);
 	
 }
@@ -76,6 +79,7 @@
 	posterior.addToIndex(0, 1);
 	posterior.renormalise();
 	
+
 	//acceleration.addGaussianShape(2000, 20, 0.8);
 	
 }
@@ -100,6 +104,13 @@
 	relativeSpeedPosterior.createVector(length);
 	tmpPosteriorForStorage.createVector(length);
 	
+	tmpPrior.createVector(length);
+	tmpPrior.zero();
+	tmpPrior.addConstant(0.1);
+	tmpPrior.addGaussianShape(130, 10, 0.2);
+	printf("TMP PRIOR TEST VECTOR\n");
+	tmpPrior.printArray();
+	
 
 }
 
@@ -409,11 +420,12 @@
 	double index = relativeSpeedLikelihood.getRealTermsAsIndex(speedRatio);
 	//	printf("index of likelihood would be %f for ratio %f\n", index, speedRatio);
 	if (index >= 0 && index < relativeSpeedPrior.length){	
-		relativeSpeedLikelihood.addGaussianShape(index , 5, matchFactor);
+		relativeSpeedLikelihood.addGaussianShape(index , relativeSpeedLikelihoodStdDev, matchFactor);
 	}
 }
 	
-	
+
+
 void BayesianArrayStructure::updateTempoDistribution(){
 
 	//copy posterior to prior
@@ -461,8 +473,6 @@
 	posterior.drawVector(0, displaySize);
 	
 	
-//	ofSetColor(255,255,255);
-//	tmpPrior.drawVector(0,300);
 	
 }
 
@@ -471,8 +481,9 @@
 	ofSetColor(0,0,255);
 //	relativeSpeedPrior.drawVector(0, relativeSpeedPrior.arraySize);
 	
-	ofSetColor(255,0,255);
+	ofSetColor(0,150,255);
 	relativeSpeedLikelihood.drawVector(0, relativeSpeedLikelihood.arraySize);
+	
 //	relativeSpeedLikelihood.drawConstrainedVector(0, 199, 0, 1000);// relativeSpeedLikelihood.arraySize);	
 	ofSetColor(255,0,0);
 	relativeSpeedPosterior.drawVector(0, relativeSpeedPosterior.arraySize);
@@ -483,13 +494,14 @@
 	ofSetColor(255,255, 255);
 	ofLine(screenWidth/2, 0, screenWidth/2, ofGetHeight());//middle of screen
 	
-	ofSetColor(155,255, 0);
+	ofSetColor(25, 0, 250);
 	double fractionOfScreen = ((double)relativeSpeedPosterior.integratedEstimate / relativeSpeedPosterior.length);
 	ofLine(screenWidth * fractionOfScreen, 0, screenWidth * fractionOfScreen, ofGetHeight());
 	
-	ofSetColor(0,255, 255);
+	ofSetColor(255, 0, 20);
 	fractionOfScreen = ((double)relativeSpeedPosterior.MAPestimate / relativeSpeedPosterior.length);
 	ofLine(screenWidth * fractionOfScreen, 0, screenWidth * fractionOfScreen, ofGetHeight());
+	 
 	
 }
 
@@ -524,14 +536,18 @@
 //	relativeString += ofToString(prior.getIndexInRealTerms(endArrayIndex), 3)+"] (sc-width:"+ofToString(screenWidthMillis, 1)+")  ";
 	relativeString += " mapped to screen "+ofToString(startScreenPosition)+" , "+ofToString(endScreenPosition);
 //	ofDrawBitmapString(relativeString, 100, 180);
+	
 		
-	ofSetColor(255, 255, 0);
+		
+	ofSetColor(100,100,100);//255, 255, 0);
 	likelihood.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);
 
-	ofSetColor(0,0,200);
+//	ofSetColor(0,0,200);
+	ofSetColor(170,170,170);//00,200);
 	prior.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);
 		
-	ofSetColor(200, 0, 0);
+		ofSetColor(0,0,150);	
+//	ofSetColor(200, 0, 0);
 	posterior.drawConstrainedVector(startArrayIndex, endArrayIndex, startScreenPosition, endScreenPosition);