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;