view bayesianArraySrc/DynamicVector.h @ 56:4394c9490716 tip

minor changes
author Andrew N Robertson <andrew.robertson@eecs.qmul.ac.uk>
date Mon, 24 Dec 2012 18:58:39 +0000
parents 780def3a1f36
children
line wrap: on
line source
/*
 *  DynamicVector.h
 *  midiCannamReader
 *
 *  Created by Andrew on 18/07/2011.
 *  Copyright 2011 QMUL. All rights reserved.
 *
 */

//OPTIMIZE CONSTRAINED VECTOR

#include "stdlib.h"
#include "ofMain.h"
#include "ofxWindowRegion.h"

#ifndef _DYNAMIC_VECTOR
#define _DYNAMIC_VECTOR
#define GAUSSIAN_LOOKUP_LENGTH 1000000

class DynamicVector{
public:
	DynamicVector();

	void createVector(int len);
	void renormalise();
	void translateDistribution(int translationIndex);
	typedef std::vector<double> DoubleVector;
	DoubleVector array;
	double getMaximum();
	int getMAPestimate();
	double getIntegratedEstimate();
	double getLookupIndex(const int& i, const double& mean, const double& StdDev);
	void addGaussianShapeByLookupTable(double& mean, double& StdDev, double factor);
	double gaussianLookupTable[GAUSSIAN_LOOKUP_LENGTH];
	double gaussianLookupMean, gaussianLookupStdDev;
	double integratedEstimate;
	void updateIntegratedEstimate();
	void updateLimitedIntegratedEstimate();
	
	void drawVector(const int& minIndex, const int& maxIndex);
	void drawVector(const int& minIndex, const int& maxIndex, ofxWindowRegion window);
	
	void drawConstrainedVector(const int& minIndex, const int& maxIndex, const int& minScreenIndex, const int& maxScreenIndex);
	void drawConstrainedVector(const int& minIndex, const int& maxIndex, const int& minScreenIndex, const int& maxScreenIndex, const ofxWindowRegion& window);

	void addConstant(const double& value);
	void addGaussianShape(const double& mean, const double& stddev, double factor);
	
	void addGaussianShapeFromRealTime(const double& actualTime, const double& StdDev, double factor);
		

	
	void addTriangularShape(double mean, double width, double factor);
	void addToIndex(const int& index, const double& constant);
	
	void doProduct(DynamicVector& arrayOne, DynamicVector& arrayTwo);
		
	double getIndexInRealTerms(const int& index);
	double getRealTermsAsIndex(double value);
	double getValueAtMillis(const double& millis);
	double millisToVectorUnits(const double& millis);
	
	void printArray();
	void zero();
	
	void copyFromDynamicVector(const DynamicVector& dynamicVec);
	
	//variables
	int length, arraySize;
	double maximumValue;
	int MAPestimate;
	
	double offset;
	double scalar;//each array point is this much of the quantity
	//i.e. array[index] contributes to (offset + scalar*index) in real terms

};

#endif