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