Mercurial > hg > midi-score-follower
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(); }