Skip to content
Snippets Groups Projects
calcul.h 2.85 KiB
Newer Older
  • Learn to ignore specific revisions
  • #ifndef CALCUL_H
    #define CALCUL_H
    
    Martin Rusek's avatar
    Martin Rusek committed
    
    
    #include "structs.h"
    
    #include "parameter.h"
    
    Martin Rusek's avatar
    Martin Rusek committed
    
    
    ///Contains various math functions.
    
    Martin Rusek's avatar
    Martin Rusek committed
    class calcul
    {
    
    public:
    
    	static double distanceDtwEuklid(vtr<double> const &u, vtr<double> const &v);
    	static double distanceDtwManhattan(vtr<double> const &u, vtr<double> const &v);
    	static double distanceDtwCsiChroma(vtr<double> const &u, vtr<double> const &v, double threshold = 0.07);
    	static double distanceDtwCsiChord(vtr<double> const &u, vtr<double> const &v, vtr<int> const &uKey, vtr<int> const &vKey);
    
    	
    	//static double distance_dtw_euklid2(input_method const &series, int idxA, int idxB);
    	//static double distance_dtw_manhattan2(input_method const &series, int idxA, int idxB);
    	//static double distance_dtw_csiChroma2(input_method const &series, int idxA, int idxB);
    	//static double distance_dtw_csiChord2(input_method const &series, int idxA, int idxB);
    	
    
    	static double distanceLcss(vtr<double> const &u, vtr<double> const &v, int idx);
    
    	static double scoreDtwS1(double scoreRaw);
    	static double scoreDtwS2(double scoreRaw, size_t pathLength);
    	static double scoreDtwS3(size_t lenA, size_t lenB, size_t lenPath);
    	static double scoreDtwS4(double scoreRaw, double scoreRawMax);
    	static double scoreDtwS5(double scoreRaw, double scoreRawMax, double coefficient);
    	static double scoreDtwMax(vtr2<double> const &A, vtr2<double> const &B, coord start, coord end);
    
    	static double scoreLcssS1(double scoreRaw, size_t pathLength);
    	static double scoreLcssS2(double scoreRaw, size_t maxABLen);
    	static double scoreLcssS3(double scoreRaw);
    
    	
    	static double lenRatio(size_t lenA, size_t lenB);
    	static double ratio(size_t dividend, size_t divisor);
    	
    
    	static double scoreAverageRank(int ref, vtr<int> const &queryAnswer, inputGroundTruth const &clusters);
    	static double scoreAveragePrecision(int ref, vtr<int> const &queryAnswer, inputGroundTruth const &clusters);
    
    	static double scoreMap(vtr<double> const &averagePrecisions);
    	static double scorePrecision(int ref, vtr<int> const &top, inputGroundTruth const &clusters);
    	static double scoreRecall(int ref, vtr<int> const &top, inputGroundTruth const &cluster);
    
    	static double lbKeogh(vtr2<double> const &A, vtr2<double> const &B, parameter const &params);
    
    	static int dtwPassStart(size_t i, int w, double coeficient);
    	static int dtwPassEnd(size_t i, int w, double coeficient, int lenB);
    	static bool isFlexiblePass(int row, int col, coord const &past, int w);
    
    	template <typename T> static T vtrMax(vtr<T> const &input);
    	template <typename T> static T vtrMax(vtr2<T> const &input);
    	template <typename T> static T vtrMax(vtr3<T> const &input);
    	template <typename T> static T vtrMin(vtr<T> const &input);
    	template <typename T> static T vtrMin(vtr2<T> const &input);
    
    	static double vtrMean(vtr<double> const &v);
    	static vtr<double> vtrMean(vtr2<double> const &v);
    	static double vtrStd(vtr<double> const &v);