andrew@0: /* andrew@0: * DynamicBayesianArray.h andrew@0: * midiCannamReader andrew@0: * andrew@0: * Created by Andrew on 17/07/2011. andrew@0: * Copyright 2011 QMUL. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: /* andrew@0: * DynamicBayesianArray.cpp andrew@0: * bayesianTest5 andrew@0: * andrew@0: * Created by Andrew Robertson on 08/05/2010. andrew@0: * Copyright 2010 __MyCompanyName__. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: /* andrew@0: * DynamicBayesianArray.h andrew@0: * bayesianTest5 andrew@0: * andrew@0: * Created by Andrew Robertson on 08/05/2010. andrew@0: * Copyright 2010 __MyCompanyName__. All rights reserved. andrew@0: * andrew@0: */ andrew@0: andrew@0: #include "ofMain.h" andrew@0: andrew@0: #include "DynamicVector.h" andrew@0: andrew@0: #ifndef _DYNAMIC_BAYESIAN_ARRAY andrew@0: #define _DYNAMIC_BAYESIAN_ARRAY andrew@0: andrew@0: #define ARRAY_SIZE 240 andrew@0: andrew@0: andrew@0: class DynamicBayesianArray{ andrew@0: andrew@0: public: andrew@0: andrew@0: DynamicBayesianArray(); andrew@0: void initialiseArray(); andrew@0: andrew@0: // void setGaussianLikelihoodForBeats(float mean, float StdDev); andrew@0: void setGaussianLikelihood(float mean, float StdDev); andrew@0: void setGaussianPrior(float mean, float StdDev); andrew@0: void setGaussianPosterior(float mean, float StdDev); andrew@0: andrew@0: void calculatePosterior(); andrew@0: void renormalisePosterior(); andrew@0: void resetMaximumPosterior();//resets the max index andrew@0: void decayPosteriorWithGaussianNoise(); andrew@0: void translateDistribution(int translationIndex); andrew@0: void setDecayNoiseGaussian(float mean, float StdDev); andrew@0: double calculateStandardDeviation(); andrew@0: andrew@0: int arraySize; andrew@0: andrew@0: andrew@0: float getMaximum(float *ptr, int length); andrew@0: void renormaliseArray(float *ptr, int length); andrew@0: void resetPrior(); andrew@0: void decayPosterior(); andrew@0: float* getMaximumEstimate(float *ptr, int length); andrew@18: double getMaximumIndex();//return the index where the probability is maximal andrew@0: double getIntegratedEstimateIndex(); andrew@0: andrew@0: // void drawArray(const int& minIndex, const int& maxIndex); andrew@0: void drawFloatArray(float* arrayToDraw, const int& minIndex, const int& maxIndex); andrew@0: void drawDoubleArray(double* arrayToDraw, const int& minIndex, const int& maxIndex); andrew@0: andrew@0: andrew@0: typedef std::vector DoubleVector; andrew@0: // typedef std::vector DoubleMatrix; andrew@0: andrew@0: andrew@0: // DynamicVector prior; andrew@0: // DynamicVector posterior; andrew@0: // DynamicVector likelihood; andrew@0: andrew@0: DynamicVector testVector; andrew@0: // DynamicVector prior; andrew@0: andrew@0: float prior [ARRAY_SIZE]; andrew@0: float posterior [ARRAY_SIZE]; andrew@0: float likelihood [ARRAY_SIZE]; andrew@0: float tempPosteriorArray[ARRAY_SIZE]; andrew@0: andrew@0: float decayNoiseArray[ARRAY_SIZE]; andrew@0: float decayNoiseStdDev, decayNoiseAmount; andrew@0: andrew@0: float likelihoodMean, likelihoodStdDev, likelihoodNoise; andrew@0: float maximumTest, posteriorDecayRate, maximumValue; andrew@0: float eighthNoteProportion, earlySixteenthNoteProportion, lateSixteenthNoteProportion ; andrew@0: float maximumEstimate, maximumIndex, integratedEstimate; andrew@0: double standardDeviation; andrew@0: andrew@0: private: andrew@0: }; andrew@0: andrew@0: #endif andrew@0: andrew@0: andrew@0: