#ifndef CALCUL_H #define CALCUL_H #include "structs.h" #include "parameter.h" ///Contains various math functions. 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 ¶ms); 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); }; #endif //CALCUL_H