andrew@0: /* andrew@0: * DynamicVector.cpp andrew@0: * midiCannamReader andrew@0: * andrew@0: * Created by Andrew on 18/07/2011. andrew@0: * Copyright 2011 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: #include "DynamicVector.h" andrew@0: andrew@0: DynamicVector::DynamicVector(){ andrew@0: length = 0; andrew@0: arraySize = 0; andrew@0: maximumValue = 0; andrew@0: MAPestimate = 0; andrew@0: offset = 0; andrew@0: scalar = 1; andrew@0: } andrew@0: andrew@0: void DynamicVector::copyFromDynamicVector(const DynamicVector& dynamicVec){ andrew@0: if (dynamicVec.length == length){ andrew@0: for (int i = 0;i < length;i++) andrew@0: array[i] = dynamicVec.array[i]; andrew@0: } andrew@0: else{ andrew@0: printf("CANNOT COPY VECTORS OF NON SAME LENGTH!!\n"); andrew@0: } andrew@0: } andrew@0: andrew@0: void DynamicVector::createVector(int len){ andrew@0: array.clear(); andrew@0: for (int i = 0; i < len;i++){ andrew@0: array.push_back(0); andrew@0: } andrew@0: length = len; andrew@0: arraySize = array.size(); andrew@0: } andrew@0: andrew@0: andrew@0: double DynamicVector::getMaximum(){ andrew@0: int i; andrew@0: double max = 0; andrew@0: for (i=0;i < length;i++){ andrew@0: if (array[i] > max){ andrew@0: max = array[i]; andrew@0: MAPestimate = i; andrew@0: } andrew@0: } andrew@0: maximumValue = max; andrew@0: return max; andrew@0: } andrew@0: andrew@0: void DynamicVector::zero(){ andrew@0: for (int i = 0;i < array.size();i++) andrew@0: array[i] = 0; andrew@0: } andrew@0: andrew@0: void DynamicVector::renormalise(){ andrew@0: double tmpMax = getMaximum(); andrew@0: if (tmpMax > 0){ andrew@0: // printf("renormalise : max is %f and size is %i\n", tmpMax, arraySize); andrew@0: for (int i = 0;i < array.size();i++) andrew@0: array[i] /= tmpMax; andrew@0: andrew@0: } andrew@0: //printArray(); andrew@0: } andrew@0: andrew@0: void DynamicVector::doProduct(DynamicVector& arrayOne, DynamicVector& arrayTwo){ andrew@0: andrew@0: for (int i = 0;i < arrayOne.length;i++) andrew@0: array[i] = arrayOne.array[i] * arrayTwo.array[i]; andrew@0: } andrew@0: andrew@0: andrew@0: void DynamicVector::printArray(){ andrew@0: for (int i = 0;i < arraySize;i++){ andrew@0: printf("[%i] = %f\n", i, array[i]); andrew@0: } andrew@0: } andrew@0: andrew@0: void DynamicVector::translateDistribution(int translationIndex){ andrew@0: int tmpIndex; andrew@0: DoubleVector tmpArray; andrew@0: int i; andrew@0: andrew@0: for (i=0;i < arraySize;i++){ andrew@0: tmpArray.push_back(array[i]); andrew@0: } andrew@0: //translate values andrew@0: for (i=0;i < arraySize;i++){ andrew@0: tmpIndex = (i + translationIndex + arraySize)%arraySize; andrew@0: array[tmpIndex] = tmpArray[i]; andrew@0: } andrew@0: tmpArray.clear(); andrew@0: //now delete tmp array andrew@0: } andrew@0: andrew@0: void DynamicVector::addGaussianShape(double mean, double StdDev, double factor){ andrew@0: int i; andrew@0: for (i=0;i