Mercurial > hg > midi-score-follower
diff src/DynamicVector.cpp @ 2:5581023e0de4
Added separate CannamMidiFileLoader class to handle the loading in.
author | Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk> |
---|---|
date | Fri, 19 Aug 2011 01:26:40 +0100 |
parents | 1a32ce016bb9 |
children | 4a8e6a6cd224 |
line wrap: on
line diff
--- a/src/DynamicVector.cpp Thu Aug 18 23:27:42 2011 +0100 +++ b/src/DynamicVector.cpp Fri Aug 19 01:26:40 2011 +0100 @@ -7,6 +7,7 @@ * */ + #include "DynamicVector.h" DynamicVector::DynamicVector(){ @@ -51,6 +52,20 @@ return max; } +double DynamicVector::getIntegratedEstimate(){ + //returns the index of the integrated average - where the probability distribution is centred + double estimate = 0; + double integratedTotal = 0; + for (int i = 0;i < length;i++){ + estimate += array[i]*i; + integratedTotal += array[i]; + } + if (integratedTotal > 0){ + estimate /= integratedTotal; + } + return estimate; +} + void DynamicVector::zero(){ for (int i = 0;i < array.size();i++) array[i] = 0; @@ -99,12 +114,22 @@ void DynamicVector::addGaussianShape(double mean, double StdDev, double factor){ int i; + factor *= (1/(StdDev*sqrt(2*PI))); for (i=0;i<array.size();i++){ - array[i] += factor*(1/(StdDev*sqrt(2*PI)))*exp(-1*(i-mean)*(i-mean)/(2*StdDev*StdDev)); + array[i] += factor*exp(-1*(i-mean)*(i-mean)/(2*StdDev*StdDev)); } //printf("ADDED GAUSSIAN SHAPE %i\n", (int)array.size()); } +void DynamicVector::addTriangularShape(double mean, double width, double factor){ + int i; + + for (i= max(0., (double)(mean - width));i < min((mean+width), (double)array.size());i++){ + array[i] += factor * abs(i - mean) / mean; + } + +} + void DynamicVector::addConstant(double value){ for (int i=0;i<array.size();i++){ array[i] += value;