comparison 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
comparison
equal deleted inserted replaced
1:1a32ce016bb9 2:5581023e0de4
5 * Created by Andrew on 18/07/2011. 5 * Created by Andrew on 18/07/2011.
6 * Copyright 2011 QMUL. All rights reserved. 6 * Copyright 2011 QMUL. All rights reserved.
7 * 7 *
8 */ 8 */
9 9
10
10 #include "DynamicVector.h" 11 #include "DynamicVector.h"
11 12
12 DynamicVector::DynamicVector(){ 13 DynamicVector::DynamicVector(){
13 length = 0; 14 length = 0;
14 arraySize = 0; 15 arraySize = 0;
49 } 50 }
50 maximumValue = max; 51 maximumValue = max;
51 return max; 52 return max;
52 } 53 }
53 54
55 double DynamicVector::getIntegratedEstimate(){
56 //returns the index of the integrated average - where the probability distribution is centred
57 double estimate = 0;
58 double integratedTotal = 0;
59 for (int i = 0;i < length;i++){
60 estimate += array[i]*i;
61 integratedTotal += array[i];
62 }
63 if (integratedTotal > 0){
64 estimate /= integratedTotal;
65 }
66 return estimate;
67 }
68
54 void DynamicVector::zero(){ 69 void DynamicVector::zero(){
55 for (int i = 0;i < array.size();i++) 70 for (int i = 0;i < array.size();i++)
56 array[i] = 0; 71 array[i] = 0;
57 } 72 }
58 73
97 //now delete tmp array 112 //now delete tmp array
98 } 113 }
99 114
100 void DynamicVector::addGaussianShape(double mean, double StdDev, double factor){ 115 void DynamicVector::addGaussianShape(double mean, double StdDev, double factor){
101 int i; 116 int i;
117 factor *= (1/(StdDev*sqrt(2*PI)));
102 for (i=0;i<array.size();i++){ 118 for (i=0;i<array.size();i++){
103 array[i] += factor*(1/(StdDev*sqrt(2*PI)))*exp(-1*(i-mean)*(i-mean)/(2*StdDev*StdDev)); 119 array[i] += factor*exp(-1*(i-mean)*(i-mean)/(2*StdDev*StdDev));
104 } 120 }
105 //printf("ADDED GAUSSIAN SHAPE %i\n", (int)array.size()); 121 //printf("ADDED GAUSSIAN SHAPE %i\n", (int)array.size());
122 }
123
124 void DynamicVector::addTriangularShape(double mean, double width, double factor){
125 int i;
126
127 for (i= max(0., (double)(mean - width));i < min((mean+width), (double)array.size());i++){
128 array[i] += factor * abs(i - mean) / mean;
129 }
130
106 } 131 }
107 132
108 void DynamicVector::addConstant(double value){ 133 void DynamicVector::addConstant(double value){
109 for (int i=0;i<array.size();i++){ 134 for (int i=0;i<array.size();i++){
110 array[i] += value; 135 array[i] += value;