annotate hackday/BayesianArrayStructure.h @ 52:13194a9dca77 tip

Added exporting of image and text data
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Tue, 17 Jul 2012 22:13:10 +0100
parents 49a5b023df1e
children
rev   line source
andrew@28 1 /*
andrew@28 2 * BayesianArrayStructure.h
andrew@28 3 * midiCannamReader
andrew@28 4 *
andrew@28 5 * Created by Andrew on 17/07/2011.
andrew@28 6 * Copyright 2011 QMUL. All rights reserved.
andrew@28 7 *
andrew@28 8 */
andrew@28 9 #ifndef BAYESIAN_ARRAY_STRUCTURE
andrew@28 10 #define BAYESIAN_ARRAY_STRUCTURE
andrew@28 11
andrew@28 12
andrew@28 13 #include "ofMain.h"
andrew@28 14 //#include "DynamicBayesianArray.h"
andrew@28 15 #include "DynamicVector.h"
andrew@28 16
andrew@28 17 class BayesianArrayStructure {
andrew@28 18
andrew@28 19 public:
andrew@28 20 // BayesianArrayStructure();
andrew@28 21 BayesianArrayStructure();
andrew@28 22 BayesianArrayStructure(int length);
andrew@28 23
andrew@28 24 void calculatePosterior();
andrew@28 25 void drawArrays();
andrew@28 26 void drawArraysRelativeToTimeframe(const double& startTimeMillis, const double& endTimeMillis);
andrew@28 27
andrew@28 28 void drawTempoArrays();
andrew@28 29
andrew@28 30 void resetSize(int length);
andrew@28 31 void resetArrays();
andrew@28 32 void simpleExample();
andrew@28 33 void setStartPlaying();
andrew@28 34 void zeroArrays();
andrew@28 35
andrew@28 36 double screenWidth;
andrew@28 37
andrew@28 38 void copyPriorToPosterior();
andrew@28 39 // DynamicBayesianArray bayesArray;
andrew@28 40
andrew@28 41 double lastEventTime;
andrew@28 42 double likelihoodNoise;
andrew@28 43 double speedLikelihoodNoise;
andrew@28 44
andrew@28 45 //DynamicVector tmpPrior;
andrew@28 46 DynamicVector tmpPosteriorForStorage;
andrew@28 47 DynamicVector prior;
andrew@28 48 DynamicVector posterior;
andrew@28 49 DynamicVector likelihood;
andrew@28 50
andrew@28 51 DynamicVector relativeSpeedPrior;
andrew@28 52 DynamicVector relativeSpeedLikelihood;
andrew@28 53 DynamicVector relativeSpeedPosterior;
andrew@28 54 DynamicVector acceleration;
andrew@28 55
andrew@28 56 double tmpBestEstimate;
andrew@28 57 void updateTmpBestEstimate(const double& timeDifference);
andrew@28 58
andrew@28 59 int updateCounter;
andrew@28 60
andrew@28 61 void setPositionDistributionScalar(double f);
andrew@28 62
andrew@28 63 void resetSpeedToOne();
andrew@28 64 void addGaussianNoiseToSpeedPosterior(const double& std_dev);
andrew@28 65 void addTriangularNoiseToSpeedPosterior(const double& std_dev);
andrew@28 66
andrew@28 67 double bestEstimate;
andrew@28 68 void updateBestEstimate(const double& timeDifference);
andrew@28 69 double lastBestEstimateUpdateTime;
andrew@28 70 double speedEstimate;
andrew@28 71
andrew@28 72 double speedDecayWidth, speedDecayAmount;
andrew@28 73 void decaySpeedDistribution(double timeDifference);
andrew@28 74
andrew@28 75 void resetSpeedSize(int length);
andrew@28 76 void setRelativeSpeedScalar(double f);
andrew@28 77 void setSpeedPrior(double f);
andrew@28 78 void calculateNewPriorOffset(const double& timeDifference);
andrew@28 79 void setNewDistributionOffsets(const double& newOffset);
andrew@28 80
andrew@28 81 void setLikelihoodToConstant();
andrew@28 82 void updateTempoLikelihood(const double& speedRatio, const double& matchFactor);
andrew@28 83 void updateTempoDistribution();
andrew@28 84
andrew@28 85 void calculateTempoUpdate();
andrew@28 86
andrew@28 87 void crossUpdateArrays(DynamicVector& position, DynamicVector& speed, double timeDifference);
andrew@28 88 void complexCrossUpdate(const double& timeDifferenceInPositionVectorUnits);
andrew@28 89 void translateByMaximumSpeed(const double& timeDifferenceInPositionVectorUnits);
andrew@28 90 double crossUpdateTimeThreshold;//time after which we do complex update of multiple speeds
andrew@28 91
andrew@28 92 double speedPriorValue;
andrew@28 93 int priorWidth;
andrew@28 94 bool* realTimeMode;
andrew@28 95 bool usingIntegratedTempoEstimate;
andrew@28 96 double relativeSpeedLikelihoodStdDev;
andrew@28 97
andrew@28 98 };
andrew@28 99 #endif