andrew@2: /* andrew@2: * bayesianArray.h andrew@2: * bayesianTest5 andrew@2: * andrew@2: * Created by Andrew Robertson on 08/05/2010. andrew@2: * Copyright 2010 __MyCompanyName__. All rights reserved. andrew@2: * andrew@2: */ andrew@2: andrew@2: #ifndef _BAYESIAN_ARRAY andrew@2: #define _BAYESIAN_ARRAY andrew@2: andrew@6: //#define arraySize 240 andrew@2: andrew@2: andrew@2: class bayesianArray{ andrew@2: andrew@2: public: andrew@2: andrew@2: bayesianArray(); andrew@2: void initialiseArray(); andrew@2: andrew@2: void setGaussianLikelihoodForBeats(float mean, float StdDev); andrew@2: void setGaussianLikelihood(float mean, float StdDev); andrew@2: void setGaussianPrior(float mean, float StdDev); andrew@2: void setGaussianPosterior(float mean, float StdDev); andrew@2: andrew@2: void calculatePosterior(); andrew@2: void renormalisePosterior(); andrew@2: void renormalisePrior(); andrew@2: void resetMaximumPosterior();//resets the max index andrew@2: void decayPosteriorWithGaussianNoise(); andrew@2: void translateDistribution(int translationIndex); andrew@2: void setDecayNoiseGaussian(float mean, float StdDev); andrew@2: double calculateStandardDeviation(); andrew@2: andrew@2: andrew@2: float getMaximum(float *ptr, int length); andrew@2: void renormaliseArray(float *ptr, int length); andrew@2: void resetPrior(); andrew@2: void decayPosterior(); andrew@2: float* getMaximumEstimate(float *ptr, int length); andrew@2: double getIntegratedEstimateIndex(); andrew@2: andrew@6: static int const arraySize = 240; andrew@6: andrew@6: float prior [arraySize]; andrew@6: float posterior [arraySize]; andrew@6: float likelihood [arraySize]; andrew@6: float tempPosteriorArray[arraySize]; andrew@2: andrew@6: float decayNoiseArray[arraySize]; andrew@2: float decayNoiseStdDev, decayNoiseAmount; andrew@2: andrew@2: float likelihoodMean, likelihoodStdDev, likelihoodNoise; andrew@2: float maximumTest, posteriorDecayRate, maximumValue; andrew@2: float eighthNoteProportion, earlySixteenthNoteProportion, lateSixteenthNoteProportion ; andrew@2: float maximumEstimate, maximumIndex, integratedEstimate; andrew@2: double standardDeviation; andrew@2: andrew@2: double getKLdivergence(); andrew@3: double getEntropyOfPosterior(); andrew@11: double getEntropyOfPrior(); andrew@2: andrew@2: private: andrew@2: }; andrew@2: andrew@2: #endif andrew@2: