///------------------------------------------------------------------------------------------------- /// /// \file init.hpp /// \brief Some constants Initialisation functions for google tests /// \author Thibaut Monseigne (Inria). /// \version 0.1. /// \date 26/10/2018. /// \copyright GNU Affero General Public License v3.0. /// \remarks /// - For this tests I compare the results with the pyRiemann Python library (License) or sklearn if pyRiemman just redirect the function. /// - For the adaptation Classification tests I compare the results with the covariancetoolbox Matlab library (License). /// ///------------------------------------------------------------------------------------------------- #pragma once #include #include // SQRT of Matrix #include #include #include #include #include #include "geometry/artifacts/CASR.hpp" #define NB_CLASS 02 #define NB_CHAN 03 #define NB_SAMPLE 10 #define NB_TRIALS1 07 #define NB_TRIALS2 05 #define NB_TRIALS 12 // NB_TRIALS1 + NB_TRIALS2 #define NB_FEATURES 06 // NB_CHAN * (NB_CHAN + 1) / 2 //********************************************* //********** Initialisation Datasets ********** //********************************************* namespace InitDataset { inline std::vector FirstClassDataset() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << -3, -4, -5, -4, -6, -1, -4, -1, -3, -1, 0, -3, -3, 1, -2, 1, -2, 1, -1, -1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1; result[1] << -1, -4, -5, -4, -6, -6, -3, -3, -6, -4, -3, -1, 0, -3, 0, 0, -2, -2, -3, -3, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0; result[2] << -4, -2, -4, -5, -3, -1, -6, -3, -3, -4, 0, -3, -2, -2, -3, 0, -1, -2, -1, -2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0; result[3] << -5, -3, -1, -1, -2, -4, -1, -6, -4, -4, 0, 0, -2, -2, -2, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0; result[4] << -2, -1, -5, -2, -6, -5, -6, -4, -6, -6, -1, -3, -2, -3, -1, -1, 1, 0, 0, -3, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1; result[5] << -5, -3, -4, -1, -3, -6, -5, -3, -2, -5, -2, -3, 1, -3, -1, -2, 0, -1, 1, -2, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0; result[6] << -3, -3, -1, -4, -1, -6, -2, -5, -3, -3, -1, -3, -2, 1, 0, 0, -3, -3, -3, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0; return result; } inline std::vector SecondClassDataset() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << 0, 3, 1, 1, 2, 3, 1, 3, 3, 2, 0, 1, 1, -1, -2, 0, -2, 1, 2, 0, 4, 3, 3, 3, 4, 4, 4, 5, 4, 3; result[1] << 3, 2, 1, 2, 1, 2, 3, 3, 1, 4, -2, -2, -1, 0, 0, -1, 3, 0, -1, 3, 4, 4, 3, 4, 3, 5, 5, 4, 5, 4; result[2] << 3, 2, 3, 3, 0, 0, 0, 1, 2, 3, 3, 2, 0, 3, 3, -2, 3, 3, -2, 2, 5, 3, 4, 4, 5, 4, 3, 3, 5, 4; result[3] << 0, 3, 1, 4, 3, 1, 2, 3, 0, 0, -2, 1, 1, 0, 2, -1, 3, -1, 2, -2, 3, 3, 5, 4, 4, 4, 5, 4, 5, 5; result[4] << 1, 2, 1, 2, 2, 0, 0, 0, 0, 4, 1, 3, 0, -2, 1, 0, 0, 2, -2, 2, 5, 3, 5, 5, 5, 3, 4, 4, 3, 3; return result; } inline std::vector> Dataset() { std::vector> result; result.resize(NB_CLASS); result[0] = FirstClassDataset(); result[1] = SecondClassDataset(); return result; } inline std::vector DatasetInOneVector() { std::vector result = FirstClassDataset(), s2 = SecondClassDataset(); result.insert(result.end(), std::make_move_iterator(s2.begin()), std::make_move_iterator(s2.end())); return result; } } // namespace InitDataset //***************************************************************** //********** Initialisation Basics Reference of Datasets ********** //***************************************************************** namespace InitBasics { namespace Center { inline std::vector FirstClassReference() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << 0.2, -0.8, -1.8, -0.8, -2.8, 2.2, -0.8, 2.2, 0.2, 2.2, 0.9, -2.1, -2.1, 1.9, -1.1, 1.9, -1.1, 1.9, -0.1, -0.1, 0.4, -0.6, -0.6, 0.4, -0.6, 0.4, -0.6, 0.4, 0.4, 0.4; result[1] << 3.2, 0.2, -0.8, 0.2, -1.8, -1.8, 1.2, 1.2, -1.8, 0.2, -1.3, 0.7, 1.7, -1.3, 1.7, 1.7, -0.3, -0.3, -1.3, -1.3, -0.3, 0.7, 0.7, -0.3, -0.3, -0.3, -0.3, -0.3, 0.7, -0.3; result[2] << -0.5, 1.5, -0.5, -1.5, 0.5, 2.5, -2.5, 0.5, 0.5, -0.5, 1.6, -1.4, -0.4, -0.4, -1.4, 1.6, 0.6, -0.4, 0.6, -0.4, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, -0.9; result[3] << -1.9, 0.1, 2.1, 2.1, 1.1, -0.9, 2.1, -2.9, -0.9, -0.9, 0.7, 0.7, -1.3, -1.3, -1.3, 0.7, 0.7, -0.3, 0.7, 0.7, 0.9, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1, -0.1; result[4] << 2.3, 3.3, -0.7, 2.3, -1.7, -0.7, -1.7, 0.3, -1.7, -1.7, 0.3, -1.7, -0.7, -1.7, 0.3, 0.3, 2.3, 1.3, 1.3, -1.7, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5; result[5] << -1.3, 0.7, -0.3, 2.7, 0.7, -2.3, -1.3, 0.7, 1.7, -1.3, -0.8, -1.8, 2.2, -1.8, 0.2, -0.8, 1.2, 0.2, 2.2, -0.8, -0.6, -0.6, 0.4, 0.4, -0.6, 0.4, 0.4, 0.4, 0.4, -0.6; result[6] << 0.1, 0.1, 2.1, -0.9, 2.1, -2.9, 1.1, -1.9, 0.1, 0.1, 0.3, -1.7, -0.7, 2.3, 1.3, 1.3, -1.7, -1.7, -1.7, 2.3, -0.4, 0.6, 0.6, 0.6, -0.4, -0.4, 0.6, -0.4, -0.4, -0.4; return result; } inline std::vector SecondClassReference() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << -1.9, 1.1, -0.9, -0.9, 0.1, 1.1, -0.9, 1.1, 1.1, 0.1, 0.0, 1.0, 1.0, -1.0, -2.0, 0.0, -2.0, 1.0, 2.0, 0.0, 0.3, -0.7, -0.7, -0.7, 0.3, 0.3, 0.3, 1.3, 0.3, -0.7; result[1] << 0.8, -0.2, -1.2, -0.2, -1.2, -0.2, 0.8, 0.8, -1.2, 1.8, -1.9, -1.9, -0.9, 0.1, 0.1, -0.9, 3.1, 0.1, -0.9, 3.1, -0.1, -0.1, -1.1, -0.1, -1.1, 0.9, 0.9, -0.1, 0.9, -0.1; result[2] << 1.3, 0.3, 1.3, 1.3, -1.7, -1.7, -1.7, -0.7, 0.3, 1.3, 1.5, 0.5, -1.5, 1.5, 1.5, -3.5, 1.5, 1.5, -3.5, 0.5, 1.0, -1.0, 0.0, 0.0, 1.0, 0.0, -1.0, -1.0, 1.0, 0.; result[3] << -1.7, 1.3, -0.7, 2.3, 1.3, -0.7, 0.3, 1.3, -1.7, -1.7, -2.3, 0.7, 0.7, -0.3, 1.7, -1.3, 2.7, -1.3, 1.7, -2.3, -1.2, -1.2, 0.8, -0.2, -0.2, -0.2, 0.8, -0.2, 0.8, 0.8; result[4] << -0.2, 0.8, -0.2, 0.8, 0.8, -1.2, -1.2, -1.2, -1.2, 2.8, 0.5, 2.5, -0.5, -2.5, 0.5, -0.5, -0.5, 1.5, -2.5, 1.5, 1.0, -1.0, 1.0, 1.0, 1.0, -1.0, 0.0, 0.0, -1.0, -1.; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace Center namespace StandardScaler { inline std::vector FirstClassReference() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << -3, -4, -5, -4, -6, -1, -4, -1, -3, -1, 0, -3, -3, 1, -2, 1, -2, 1, -1, -1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1; result[1] << -1, -4, -5, -4, -6, -6, -3, -3, -6, -4, -3, -1, 0, -3, 0, 0, -2, -2, -3, -3, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0; result[2] << -4, -2, -4, -5, -3, -1, -6, -3, -3, -4, 0, -3, -2, -2, -3, 0, -1, -2, -1, -2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0; result[3] << -5, -3, -1, -1, -2, -4, -1, -6, -4, -4, 0, 0, -2, -2, -2, 0, 0, -1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0; result[4] << -2, -1, -5, -2, -6, -5, -6, -4, -6, -6, -1, -3, -2, -3, -1, -1, 1, 0, 0, -3, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1; result[5] << -5, -3, -4, -1, -3, -6, -5, -3, -2, -5, -2, -3, 1, -3, -1, -2, 0, -1, 1, -2, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0; result[6] << -3, -3, -1, -4, -1, -6, -2, -5, -3, -3, -1, -3, -2, 1, 0, 0, -3, -3, -3, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0; return result; } inline std::vector SecondClassReference() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_SAMPLE); } result[0] << 0, 3, 1, 1, 2, 3, 1, 3, 3, 2, 0, 1, 1, -1, -2, 0, -2, 1, 2, 0, 4, 3, 3, 3, 4, 4, 4, 5, 4, 3; result[1] << 3, 2, 1, 2, 1, 2, 3, 3, 1, 4, -2, -2, -1, 0, 0, -1, 3, 0, -1, 3, 4, 4, 3, 4, 3, 5, 5, 4, 5, 4; result[2] << 3, 2, 3, 3, 0, 0, 0, 1, 2, 3, 3, 2, 0, 3, 3, -2, 3, 3, -2, 2, 5, 3, 4, 4, 5, 4, 3, 3, 5, 4; result[3] << 0, 3, 1, 4, 3, 1, 2, 3, 0, 0, -2, 1, 1, 0, 2, -1, 3, -1, 2, -2, 3, 3, 5, 4, 4, 4, 5, 4, 5, 5; result[4] << 1, 2, 1, 2, 2, 0, 0, 0, 0, 4, 1, 3, 0, -2, 1, 0, 0, 2, -2, 2, 5, 3, 5, 5, 5, 3, 4, 4, 3, 3; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace StandardScaler } // namespace InitBasics //********************************************************************* //********** Initialisation Covariance Reference of Datasets ********** //********************************************************************* namespace InitCovariance { //********************************* //********* COR Reference ********* //********************************* namespace COR { inline std::vector FirstClassDataset() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 1.00, 0.644381009, 0.76178344, 0.644381009, 1.00, 0.863289805, 0.76178344, 0.863289805, 1.00; result[1] << 1.00, -0.533536825, -0.340914594, -0.533536825, 1.00, 0.189177769, -0.340914594, 0.189177769, 1.00; result[2] << 1.00, -0.00, 0.12253577, -0.00, 1.00, 0.13074409, 0.12253577, 0.13074409, 1.00; result[3] << 1.00, -0.503267974, -0.37254902, -0.503267974, 1.00, 0.259259259, -0.37254902, 0.259259259, 1.00; result[4] << 1.00, -0.478994453, -0.162459108, -0.478994453, 1.00, -0.222988244, -0.162459108, -0.222988244, 1.00; result[5] << 1.00, -0.0192192227, 0.164770511, -0.0192192227, 1.00, 0.466569475, 0.164770511, 0.466569475, 1.00; result[6] << 1.00, -0.134982027, 0.323733677, -0.134982027, 1.00, -0.227429413, 0.323733677, -0.227429413, 1.00; return result; } inline std::vector SecondClassDataset() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 1.00, 0.4543369, 0.25429847, 0.4543369, 1.00, 0.00, 0.25429847, 0.00, 1.00; result[1] << 1.00, 0.55233592, 0.26244533, 0.55233592, 1.00, 0.17647059, 0.26244533, 0.17647059, 1.00; result[2] << 1.00, 0.06024874, 0.20348923, 0.06024874, 1.00, -0.26318068, 0.20348923, -0.26318068, 1.00; result[3] << 1.00, 0.290334, -0.32046963, 0.290334, 1.00, 0.35075632, -0.32046963, 0.35075632, 1.00; result[4] << 1.00, 0.35805744, 0.00, 0.35805744, 1.00, -0.21428571, 0.00, -0.21428571, 1.00; return result; } inline std::vector> Dataset() { std::vector> result; result.resize(2); result[0] = FirstClassDataset(); result[1] = SecondClassDataset(); return result; } } // namespace COR //********************************* //********* COV Reference ********* //********************************* namespace COV { inline std::vector FirstClassDataset() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.76, 1.62, 0.62, 1.62, 2.29, 0.64, 0.62, 0.64, 0.24; result[1] << 2.36, -1.04, -0.24, -1.04, 1.61, 0.11, -0.24, 0.11, 0.21; result[2] << 1.85, -0.00, 0.05, -0.00, 1.04, 0.04, 0.05, 0.04, 0.09; result[3] << 2.89, -0.77, -0.19, -0.77, 0.81, 0.07, -0.19, 0.07, 0.09; result[4] << 3.41, -1.19, -0.15, -1.19, 1.81, -0.15, -0.15, -0.15, 0.25; result[5] << 2.21, -0.04, 0.12, -0.04, 1.96, 0.32, 0.12, 0.32, 0.24; result[6] << 2.29, -0.33, 0.24, -0.33, 2.61, -0.18, 0.24, -0.18, 0.24; return result; } inline std::vector SecondClassDataset() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 1.09, 0.60, 0.17, 0.60, 1.60, 0.00, 0.17, 0.00, 0.41; result[1] << 0.96, 0.92, 0.18, 0.92, 2.89, 0.21, 0.18, 0.21, 0.49; result[2] << 1.61, 0.15, 0.20, 0.15, 3.85, -0.40, 0.20, -0.40, 0.60; result[3] << 2.01, 0.69, -0.34, 0.69, 2.81, 0.44, -0.34, 0.44, 0.56; result[4] << 1.56, 0.70, 0.00, 0.70, 2.45, -0.30, 0.00, -0.30, 0.80; return result; } inline std::vector> Dataset() { std::vector> result; result.resize(2); result[0] = FirstClassDataset(); result[1] = SecondClassDataset(); return result; } } // namespace COV //********************************* //********* LWF Reference ********* //********************************* namespace LWF { inline std::vector FirstClassReference() { std::vector result(7); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.5849288, 1.33543611, 0.511092833, 1.33543611, 2.19748746, 0.527579698, 0.511092833, 0.527579698, 0.507583739; result[1] << 1.99839975, -0.650968006, -0.150223386, -0.650968006, 1.52895167, 0.0688523853, -0.150223386, 0.0688523853, 0.652648582; result[2] << 1.21758058, -0.00, 0.013088361, -0.00, 1.00554914, 0.0104706888, 0.013088361, 0.0104706888, 0.756870279; result[3] << 2.57527815, -0.621023059, -0.153239456, -0.621023059, 0.897709368, 0.0564566417, -0.153239456, 0.0564566417, 0.317012482; result[4] << 2.87232755, -0.786745664, -0.0991696216, -0.786745664, 1.81451826, -0.0991696216, -0.0991696216, -0.0991696216, 0.783154191; result[5] << 1.64826027, -0.00963569008, 0.0289070702, -0.00963569008, 1.5880372, 0.0770855206, 0.0289070702, 0.0770855206, 1.17370253; result[6] << 1.9742694, -0.149321794, 0.108597668, -0.149321794, 2.11906629, -0.081448251, 0.108597668, -0.081448251, 1.04666432; return result; } inline std::vector SecondClassReference() { std::vector result(5); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 1.06313148, 0.315509839, 0.0893944544, 0.315509839, 1.33131485, 0.00, 0.0893944544, 0.00, 0.705553667; result[1] << 1.18724478, 0.490413981, 0.0959505616, 0.490413981, 2.21604802, 0.111942322, 0.0959505616, 0.111942322, 0.936707201; result[2] << 1.86743369, 0.055816941, 0.074422588, 0.055816941, 2.70096668, -0.148845176, 0.074422588, -0.148845176, 1.49159963; result[3] << 1.89536719, 0.324938579, -0.160114662, 0.324938579, 2.27210757, 0.20720721, -0.160114662, 0.20720721, 1.21252525; result[4] << 1.60313579, 0.00319114656, 0.00, 0.00319114656, 1.6071931, -0.00136763424, 0.00, -0.00136763424, 1.59967111; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace LWF //********************************* //********* MCD Reference ********* //********************************* namespace MCD { inline std::vector FirstClassReference() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.00, 2.14285714, 0.57142857, 2.14285714, 2.57142857, 0.71428571, 0.57142857, 0.71428571, 0.24489796; result[1] << 2.85714286, -1.85714286, -0.14285714, -1.85714286, 1.26530612, 0.18367347, -0.14285714, 0.18367347, 0.20408163; result[2] << 1.55102041, -0.69387755, 0.02040816, -0.69387755, 0.40816327, -0.02040816, 0.02040816, -0.02040816, 0.12244898; result[3] << 1.63265306, -1.18367347, 0.00, -1.18367347, 0.97959184, 0.00, 0.00, 0.00, 0.00; result[4] << 0.53061224, 0.06122449, -0.04081633, 0.06122449, 1.55102041, -0.2244898, -0.04081633, -0.2244898, 0.24489796; result[5] << 1.26530612, 0.40816327, 0.08163265, 0.40816327, 2.12244898, 0.65306122, 0.08163265, 0.65306122, 0.24489796; result[6] << 1.67346939, 0.7755102, 0.24489796, 0.7755102, 1.26530612, -0.2244898, 0.24489796, -0.2244898, 0.24489796; return result; } inline std::vector SecondClassReference() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 0.69387755, 0.36734694, 0.06122449, 0.36734694, 1.3877551, -0.3877551, 0.06122449, -0.3877551, 0.24489796; result[1] << 0.48979592, -0.28571429, 0.14285714, -0.28571429, 0.57142857, -0.14285714, 0.14285714, -0.14285714, 0.57142857; result[2] << 1.63265306, -0.2244898, 0.24489796, -0.2244898, 0.20408163, 0.10204082, 0.24489796, 0.10204082, 0.69387755; result[3] << 1.71428571, -0.42857143, -0.42857143, -0.42857143, 2.12244898, 0.48979592, -0.42857143, 0.48979592, 0.24489796; result[4] << 0.53061224, 0.26530612, 0.48979592, 0.26530612, 1.34693878, 0.53061224, 0.48979592, 0.53061224, 0.69387755; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace MCD //********************************* //********* OAS Reference ********* //********************************* namespace OAS { inline std::vector FirstClassReference() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.34520102, 0.945778241, 0.361964512, 0.945778241, 2.07080856, 0.373640786, 0.361964512, 0.373640786, 0.87399042; result[1] << 1.83506857, -0.475246188, -0.109672197, -0.475246188, 1.49234296, 0.0502664238, -0.109672197, 0.0502664238, 0.852588472; result[2] << 1.18111558, -0.00, 0.0109600534, -0.00, 1.00356272, 0.00876804276, 0.0109600534, 0.00876804276, 0.795321701; result[3] << 2.22680827, -0.45607113, -0.112537032, -0.45607113, 0.994823924, 0.0414610118, -0.112537032, 0.0414610118, 0.568367802; result[4] << 2.53874679, -0.536560096, -0.0676336255, -0.536560096, 1.81732146, -0.0676336255, -0.0676336255, -0.0676336255, 1.11393175; result[5] << 1.47, -0.00, 0.00, -0.00, 1.47, 0.00, 0.00, 0.00, 1.47; result[6] << 1.73914927, -0.0147732834, 0.0107442061, -0.0147732834, 1.75347488, -0.0080581546, 0.0107442061, -0.0080581546, 1.64737585; return result; } inline std::vector SecondClassReference() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 1.04056757, 0.07659782, 0.02170272, 0.07659782, 1.10567572, 0.00, 0.02170272, 0.00, 0.95375671; result[1] << 1.22291898, 0.42297509, 0.08275599, 0.42297509, 2.11024714, 0.09654866, 0.08275599, 0.09654866, 1.00683388; result[2] << 1.95254699, 0.02467793, 0.03290391, 0.02467793, 2.32107076, -0.06580782, 0.03290391, -0.06580782, 1.78638225; result[3] << 1.80811047, 0.04705949, -0.02318873, 0.04705949, 1.86267219, 0.03000895, -0.02318873, 0.03000895, 1.70921734; result[4] << 1.60333333, 0.00, 0.00, 0.00, 1.60333333, -0.00, 0.00, -0.00, 1.60333333; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace OAS //********************************* //********* SCM Reference ********* //********************************* namespace SCM { inline std::vector FirstClassReference() { std::vector result(NB_TRIALS1); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 0.77844311, 0.26946108, -0.07784431, 0.26946108, 0.18562874, 0.00598802, -0.07784431, 0.00598802, 0.03592814; result[1] << 0.80645161, 0.24596774, -0.06048387, 0.24596774, 0.18145161, -0.01612903, -0.06048387, -0.01612903, 0.01209677; result[2] << 0.75806452, 0.30107527, -0.16666667, 0.30107527, 0.19354839, -0.07526882, -0.16666667, -0.07526882, 0.0483871; result[3] << 0.89928058, 0.10071942, -0.03597122, 0.10071942, 0.09352518, 0.00, -0.03597122, 0.00, 0.00719424; result[4] << 0.84555985, 0.16988417, -0.08880309, 0.16988417, 0.13513514, -0.03088803, -0.08880309, -0.03088803, 0.01930502; result[5] << 0.79899497, 0.22110553, -0.10552764, 0.22110553, 0.17085427, -0.0201005, -0.10552764, -0.0201005, 0.03015075; result[6] << 0.71686747, 0.22289157, -0.06024096, 0.22289157, 0.25903614, -0.04216867, -0.06024096, -0.04216867, 0.02409639; return result; } inline std::vector SecondClassReference() { std::vector result(NB_TRIALS2); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 0.23039216, 0.02941176, 0.35294118, 0.02941176, 0.07843137, 0.00, 0.35294118, 0.00, 0.69117647; result[1] << 0.22307692, 0.02692308, 0.35384615, 0.02692308, 0.11153846, -0.00769231, 0.35384615, -0.00769231, 0.66538462; result[2] << 0.16544118, 0.09926471, 0.25735294, 0.09926471, 0.22426471, 0.20588235, 0.25735294, 0.20588235, 0.61029412; result[3] << 0.18846154, 0.04615385, 0.26153846, 0.04615385, 0.11153846, 0.06538462, 0.26153846, 0.06538462, 0.70; result[4] << 0.13333333, 0.05777778, 0.21333333, 0.05777778, 0.12, 0.07555556, 0.21333333, 0.07555556, 0.74666667; return result; } inline std::vector> Reference() { std::vector> result; result.resize(2); result[0] = FirstClassReference(); result[1] = SecondClassReference(); return result; } } // namespace SCM } // namespace InitCovariance //**************************************************************** //********** Initialisation Means Reference of Datasets ********** //**************************************************************** namespace InitMeans { //************************************ //********** Mean Euclidian ********** //************************************ namespace Euclidian { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.87394645, 0.02563437, 0.0298922, 0.02563437, 1.7732458, 0.06073032, 0.0298922, 0.06073032, 0.93197441; return result; } } // namespace Euclidian //**************************************** //********** Mean Log Euclidian ********** //**************************************** namespace LogEuclidian { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.7137077, 0.01869396, 0.02040996, 0.01869396, 1.60430933, 0.0512624, 0.02040996, 0.0512624, 0.82767414; return result; } } // namespace LogEuclidian //********************************** //********** Mean Riemann ********** //********************************** namespace Riemann { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.70952664, 0.01674082, 0.02077766, 0.01674082, 1.60344581, 0.05423902, 0.02077766, 0.05423902, 0.8303257; return result; } } // namespace Riemann //****************************************** //********** Mean Log Determinant ********** //****************************************** namespace LogDeterminant { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.70798275, 0.01610538, 0.02003787, 0.01610538, 1.60581809, 0.05385499, 0.02003787, 0.05385499, 0.83577899; return result; } } // namespace LogDeterminant //*********************************** //********** Mean Kullback ********** //*********************************** namespace Kullback { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.71301511, 0.01811099, 0.02219169, 0.01811099, 1.59879804, 0.0548546, 0.02219169, 0.0548546, 0.81958134; return result; } } // namespace Kullback //************************************** //********** Mean Wasserstein ********** //************************************** namespace Wasserstein { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.79643838, 0.0229425, 0.02418139, 0.0229425, 1.69012112, 0.05311422, 0.02418139, 0.05311422, 0.87927152; return result; } } // namespace Wasserstein //****************************** //********** Mean ALE ********** //****************************** namespace ALE { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.70133202, 0.01256147, 0.01500743, 0.01256147, 1.61096286, 0.05925685, 0.01500743, 0.05925685, 0.83062499; return result; } } // namespace ALE //*********************************** //********** Mean Harmonic ********** //*********************************** namespace Harmonic { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1.56594664, 0.01175612, 0.01576697, 0.01175612, 1.44152542, 0.04955601, 0.01576697, 0.04955601, 0.72075273; return result; } } // namespace Harmonic //*********************************** //********** Mean Identity ********** //*********************************** namespace Identity { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_CHAN, NB_CHAN); result << 1, 0, 0, 0, 1, 0, 0, 0, 1; return result; } } // namespace Identity } // namespace InitMeans //******************************************************************* //********** Initialisation Distance Reference of Datasets ********** //******************************************************************* namespace InitDistance { //************************************ //********** Distance Euclidian ********** //************************************ namespace Euclidian { inline std::vector Reference() { return std::vector{ 2.27941886, 1.06479476, 1.02847791, 1.59375373, 1.55723736, 0.38300632, 0.50680192, 1.04235464, 1.05530485, 1.12584212, 0.7888681, 0.74648348 }; } } //**************************************** //********** Distance Log Euclidian ********** //**************************************** namespace LogEuclidian { inline std::vector Reference() { return std::vector{ 1.32256326, 0.66407543, 0.58679669, 1.40770199, 0.74410706, 0.35240113, 0.43103276, 0.71149032, 0.67768624, 0.80611325, 0.59020555, 0.66716464 }; } } //********************************** //********** Distance Riemann ********** //********************************** namespace Riemann { inline std::vector Reference() { return std::vector{ 1.32849591, 0.66514346, 0.58560532, 1.41024439, 0.747409, 0.34896944, 0.43236778, 0.71205324, 0.67698377, 0.80599981, 0.59091178, 0.66423683 }; } } //****************************************** //********** Distance Log Determinant ********** //****************************************** namespace LogDeterminant { inline std::vector Reference() { return std::vector{ 0.46451334, 0.23505451, 0.20685864, 0.49230328, 0.26223382, 0.1207747, 0.15093304, 0.25002132, 0.23755315, 0.28080601, 0.20652205, 0.23046043 }; } } //*********************************** //********** Distance Kullback ********** //*********************************** namespace Kullback { inline std::vector Reference() { return std::vector{ 0.9229355, 0.22182567, 0.17231943, 1.04684976, 0.28821354, 0.06625571, 0.09835624, 0.26108052, 0.23637438, 0.34499747, 0.18292577, 0.238331 }; } } //************************************** //********** Distance Wasserstein ********** //************************************** namespace Wasserstein { inline std::vector Reference() { return std::vector{ 0.80006691, 0.41547827, 0.38690865, 0.70393068, 0.5282644, 0.16253726, 0.22475651, 0.42258195, 0.41676291, 0.45835023, 0.32884, 0.33947315 }; } } } // namespace InitDistance //******************************************************************** //********** Initialisation Geodesics Reference of Datasets ********** //******************************************************************** namespace InitGeodesics { //**************************************** //********** Geodesic Euclidian ********** //**************************************** namespace Euclidian { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.22943763, 0.68053524, 0.27049252, 0.68053524, 1.98536663, 0.29415501, 0.27049252, 0.29415501, 0.71977908; result[1] << 1.9361731, -0.31266682, -0.06016559, -0.31266682, 1.65109873, 0.06479135, -0.06016559, 0.06479135, 0.7923115; result[2] << 1.54576352, 0.01281718, 0.02149028, 0.01281718, 1.38939747, 0.0356005, 0.02149028, 0.0356005, 0.84442235; result[3] << 2.2246123, -0.29769435, -0.06167363, -0.29769435, 1.33547758, 0.05859348, -0.06167363, 0.05859348, 0.62449345; result[4] << 2.373137, -0.38055565, -0.03463871, -0.38055565, 1.79388203, -0.01921965, -0.03463871, -0.01921965, 0.8575643; result[5] << 1.76110336, 0.00799934, 0.02939964, 0.00799934, 1.6806415, 0.06890792, 0.02939964, 0.06890792, 1.05283847; result[6] << 1.92410792, -0.06184371, 0.06924493, -0.06184371, 1.94615604, -0.01035897, 0.06924493, -0.01035897, 0.98931936; result[7] << 1.46853897, 0.1705721, 0.05964333, 0.1705721, 1.55228032, 0.03036516, 0.05964333, 0.03036516, 0.81876404; result[8] << 1.53059562, 0.25802417, 0.06292138, 0.25802417, 1.99464691, 0.08633632, 0.06292138, 0.08633632, 0.93434081; result[9] << 1.87069007, 0.04072565, 0.05215739, 0.04072565, 2.23710624, -0.04405743, 0.05215739, -0.04405743, 1.21178702; result[10] << 1.88465682, 0.17528647, -0.06511123, 0.17528647, 2.02267668, 0.13396876, -0.06511123, 0.13396876, 1.07224983; result[11] << 1.73854112, 0.01441276, 0.0149461, 0.01441276, 1.69021945, 0.02968134, 0.0149461, 0.02968134, 1.26582276; return result; } } // namespace Euclidian //******************************************** //********** Geodesic Log Euclidian ********** //******************************************** namespace LogEuclidian { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.01103272, 0.58044721, 0.23030037, 0.58044721, 1.77828904, 0.26574646, 0.23030037, 0.26574646, 0.6023019; result[1] << 1.81637234, -0.31288558, -0.06584287, -0.31288558, 1.53243541, 0.05115564, -0.06584287, 0.05115564, 0.73216466; result[2] << 1.4444758, 0.00763339, 0.01637287, 0.00763339, 1.26999275, 0.02815584, 0.01637287, 0.02815584, 0.79133167; result[3] << 2.07025711, -0.31144095, -0.0706513, -0.31144095, 1.15689355, 0.04576328, -0.0706513, 0.04576328, 0.50801127; result[4] << 2.18793303, -0.32983868, -0.04048647, -0.32983868, 1.66866414, -0.02994009, -0.04048647, -0.02994009, 0.80134643; result[5] << 1.68059619, 0.00433328, 0.02441754, 0.00433328, 1.59603546, 0.06329015, 0.02441754, 0.06329015, 0.98561446; result[6] << 1.83708447, -0.05588412, 0.05925687, -0.05588412, 1.84057265, -0.00582606, 0.05925687, -0.00582606, 0.92893714; result[7] << 1.335889, 0.19615591, 0.06355339, 0.19615591, 1.45048646, 0.02049389, 0.06355339, 0.02049389, 0.7631058; result[8] << 1.40437247, 0.25649803, 0.0592415, 0.25649803, 1.87131332, 0.07613302, 0.0592415, 0.07613302, 0.87989762; result[9] << 1.78864325, 0.03549975, 0.0439749, 0.03549975, 2.07865681, -0.02282802, 0.0439749, -0.02282802, 1.10866339; result[10] << 1.79329993, 0.1583345, -0.06293884, 0.1583345, 1.90312554, 0.12069132, -0.06293884, 0.12069132, 0.99837833; result[11] << 1.65744301, 0.01070952, 0.01156087, 0.01070952, 1.60544202, 0.0292213, 0.01156087, 0.0292213, 1.15020022; return result; } } // namespace LogEuclidian //************************************** //********** Geodesic Riemann ********** //************************************** namespace Riemann { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_CHAN, NB_CHAN); } result[0] << 2.00307073, 0.5751925, 0.23695849, 0.5751925, 1.77486363, 0.2733501, 0.23695849, 0.2733501, 0.60804774; result[1] << 1.81293091, -0.3138307, -0.06654136, -0.3138307, 1.53280236, 0.05341941, -0.06654136, 0.05341941, 0.73374953; result[2] << 1.44271566, 0.00683161, 0.01652821, 0.00683161, 1.26962877, 0.029471, 0.01652821, 0.029471, 0.79258189; result[3] << 2.06594851, -0.31310631, -0.07385619, -0.31310631, 1.15755075, 0.04790018, -0.07385619, 0.04790018, 0.50936876; result[4] << 2.18427308, -0.33178678, -0.04048067, -0.33178678, 1.66810514, -0.02812001, -0.04048067, -0.02812001, 0.8032214; result[5] << 1.67854712, 0.00337028, 0.0244905, 0.00337028, 1.59559946, 0.06467602, 0.0244905, 0.06467602, 0.98719569; result[6] << 1.8346388, -0.05653261, 0.05946108, -0.05653261, 1.83958383, -0.0043761, 0.05946108, -0.0043761, 0.93070402; result[7] << 1.33364155, 0.19528644, 0.06320392, 0.19528644, 1.45004209, 0.02219171, 0.06320392, 0.02219171, 0.76451583; result[8] << 1.40188907, 0.2548021, 0.05901919, 0.2548021, 1.8711256, 0.0781204, 0.05901919, 0.0781204, 0.88141717; result[9] << 1.78638224, 0.03454505, 0.04380908, 0.03454505, 2.07716326, -0.02075452, 0.04380908, -0.02075452, 1.11079047; result[10] << 1.78975606, 0.15752572, -0.06172564, 0.15752572, 1.90245691, 0.12203188, -0.06172564, 0.12203188, 1.00070996; result[11] << 1.65542219, 0.00974451, 0.01178106, 0.00974451, 1.60497797, 0.03095649, 0.01178106, 0.03095649, 1.15199633; return result; } } // namespace Riemann } // namespace InitGeodesics //************************************************************************ //********** Initialisation Featurization Reference of Datasets ********** //************************************************************************ namespace InitFeaturization { namespace TangentSpace { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_FEATURES); } result[0] << 0.19923529, 0.81954961, 0.45583261, 0.06265258, 0.53984445, -0.74189243; result[1] << 0.08020799, -0.56380364, -0.19863986, -0.12711376, -0.00487228, -0.24993702; result[2] << -0.33927073, -0.0139971, -0.00466568, -0.46577928, -0.04826772, -0.09127522; result[3] << 0.34039208, -0.59873603, -0.23557737, -0.70072935, 0.02089894, -0.98360691; result[4] << 0.4605308, -0.52546299, -0.14067914, 0.04677775, -0.21048792, -0.06431401; result[5] << -0.0365709, -0.02310847, 0.00568693, -0.0103298, 0.01443795, 0.34577556; result[6] << 0.13870707, -0.11420977, 0.08057211, 0.27541021, -0.14045981, 0.22931806; result[7] << -0.52065199, 0.37104578, 0.12469995, -0.21855289, -0.08508472, -0.16646769; result[8] << -0.42665126, 0.41541091, 0.08741089, 0.28616558, 0.02832375, 0.11565408; result[9] << 0.08700644, 0.0237524, 0.04023502, 0.51858937, -0.17189999, 0.58429274; result[10] << 0.08116035, 0.22060811, -0.19108877, 0.32966629, 0.12395396, 0.36518821; result[11] << -0.06409514, -0.01104878, -0.02378668, 0.00324331, -0.06638659, 0.65726463; return result; } } // namespace TangentSpace namespace Squeeze { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_FEATURES); } result[0] << 2.58492880, 1.33543611, 0.511092833, 2.19748746, 0.527579698, 0.507583739; result[1] << 1.99839975, -0.650968006, -0.150223386, 1.52895167, 0.0688523853, 0.652648582; result[2] << 1.21758058, -0.000000000, 0.0130883610, 1.00554914, 0.0104706888, 0.756870279; result[3] << 2.57527815, -0.621023059, -0.153239456, 0.897709368, 0.0564566417, 0.317012482; result[4] << 2.87232755, -0.786745664, -0.0991696216, 1.81451826, -0.0991696216, 0.783154191; result[5] << 1.64826027, -0.00963569008, 0.0289070702, 1.58803720, 0.0770855206, 1.17370253; result[6] << 1.97426940, -0.149321794, 0.108597668, 2.11906629, -0.0814482510, 1.04666432; result[7] << 1.06313148, 0.315509839, 0.0893944544, 1.33131485, 0.00000000, 0.705553667; result[8] << 1.18724478, 0.490413981, 0.0959505616, 2.21604802, 0.111942322, 0.936707201; result[9] << 1.86743369, 0.0558169410, 0.0744225880, 2.70096668, -0.148845176, 1.49159963; result[10] << 1.89536719, 0.324938579, -0.160114662, 2.27210757, 0.207207210, 1.21252525; result[11] << 1.60313579, 0.00319114656, 0.00000000, 1.60719310, -0.00136763424, 1.59967111; return result; } } // namespace Squeeze namespace SqueezeDiag { inline std::vector Reference() { std::vector result(NB_TRIALS); for (auto& m : result) { m.resize(NB_FEATURES); } result[0] << 2.5849288, 2.19748746, 0.507583739, 1.33543611, 0.527579698, 0.511092833; result[1] << 1.99839975, 1.52895167, 0.652648582, -0.650968006, 0.0688523853, -0.150223386; result[2] << 1.21758058, 1.00554914, 0.756870279, -0.00, 0.0104706888, 0.013088361; result[3] << 2.57527815, 0.897709368, 0.317012482, -0.621023059, 0.0564566417, -0.153239456; result[4] << 2.87232755, 1.81451826, 0.783154191, -0.786745664, -0.0991696216, -0.0991696216; result[5] << 1.64826027, 1.5880372, 1.17370253, -0.00963569008, 0.0770855206, 0.0289070702; result[6] << 1.9742694, 2.11906629, 1.04666432, -0.149321794, -0.081448251, 0.108597668; result[7] << 1.06313148, 1.33131485, 0.705553667, 0.315509839, 0.00, 0.0893944544; result[8] << 1.18724478, 2.21604802, 0.936707201, 0.490413981, 0.111942322, 0.0959505616; result[9] << 1.86743369, 2.70096668, 1.49159963, 0.055816941, -0.148845176, 0.074422588; result[10] << 1.89536719, 2.27210757, 1.21252525, 0.324938579, 0.20720721, -0.160114662; result[11] << 1.60313579, 1.6071931, 1.59967111, 0.00319114656, -0.00136763424, 0.00; return result; } } // namespace SqueezeDiag } // namespace InitFeaturization //********************************************************************** //********** Initialisation Classifiers Reference of Datasets ********** //********************************************************************** namespace InitClassif { //************************** //********** LSQR ********** //************************** namespace LSQR { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(1, NB_FEATURES); result << -5.62849964, 2.57528317, -0.41393163, 3.79788328, -1.7915752, 3.63071567; return result; } } //********************************** //********** FgDA Compute ********** //********************************** namespace FgDACompute { inline Eigen::MatrixXd Reference() { Eigen::MatrixXd result(NB_FEATURES, NB_FEATURES); result << 0.45714834, -0.20916523, 0.03361964, -0.30846516, 0.14551225, -0.29488776, -0.20916523, 0.09570218, -0.01538245, 0.14113622, -0.06657818, 0.13492396, 0.03361964, -0.01538245, 0.00247246, -0.02268517, 0.01070127, -0.02168666, -0.30846516, 0.14113622, -0.02268517, 0.20813978, -0.09818576, 0.1989783, 0.14551225, -0.06657818, 0.01070127, -0.09818576, 0.04631716, -0.09386402, -0.29488776, 0.13492396, -0.02168666, 0.1989783, -0.09386402, 0.19022007; return result; } } // namespace FgDACompute } // namespace InitClassif //***************************************************************************** //********** Initialisation Matrix Classifiers Reference of Datasets ********** //***************************************************************************** namespace InitMatrixClassif { namespace MDM { inline Geometry::CMatrixClassifierMDM Reference() { Geometry::CMatrixClassifierMDM result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.92849739, -0.1538202, 0.01072518, -0.1538202, 1.41817199, 0.06326929, 0.01072518, 0.06326929, 0.6661666; means[1] << 1.46525466, 0.258979, 0.03170221, 0.258979, 1.94533383, 0.03574208, 0.03170221, 0.03574208, 1.13153112; result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); return result; } //The estimation method of riemann mean in matlab is different of the python and c++ method inline Geometry::CMatrixClassifierMDM ReferenceMatlab() { Geometry::CMatrixClassifierMDM result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.928499437649616, -0.153827038574370, 0.010747690754065, -0.153827038574370, 1.418162423365369, 0.063273476393445, 0.010747690754065, 0.063273476393445, 0.666171737852679; means[1] << 1.465253745853043, 0.258978164753603, 0.031701951674564, 0.258978164753603, 1.945334998390171, 0.035741956583496, 0.031701951674564, 0.035741956583496, 1.131530964874486; result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); return result; } inline Geometry::CMatrixClassifierMDM AfterSupervised() { Geometry::CMatrixClassifierMDM result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.928350313881734, -0.154041423123185, 0.010701374534393, -0.154041423123186, 1.418273608417471, 0.063257455871936, 0.010701374534394, 0.063257455871936, 0.666184815487807; means[1] << 1.465233762087830, 0.258934832669209, 0.031704171892215, 0.258934832669209, 1.945307843854343, 0.035766052240045, 0.031704171892215, 0.035766052240044, 1.131554685966728; result.setMeans(means); result.setTrialNumbers({ 2 * NB_TRIALS1, 2 * NB_TRIALS2 }); return result; } inline Geometry::CMatrixClassifierMDM AfterUnSupervised() { Geometry::CMatrixClassifierMDM result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.950943868870711, -0.167140250323899, 0.003222724880780, -0.167140250323900, 1.360332213689968, 0.069395646598480, 0.003222724880780, 0.069395646598480, 0.612498166151011; means[1] << 1.512203012203314, 0.207413861919226, 0.036590552326957, 0.207413861919226, 1.921307138623116, 0.030422979119863, 0.036590552326957, 0.030422979119864, 1.127225044244057; result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1 + 5, NB_TRIALS2 + 7 });// Find 5 & 7 times in Prediction return result; } inline std::vector Prediction() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionUnSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector> PredictionDistance() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210111, 1.474855008515000 }; result[1] = { 0.464333729201812, 1.051817099896226 }; result[2] = { 0.601426917411240, 0.812445189801618 }; result[3] = { 1.102877219889465, 1.849548724985433 }; result[4] = { 0.626116626250442, 1.067153960330500 }; result[5] = { 0.611993241506318, 0.331147184884182 }; result[6] = { 0.635248202449675, 0.476499934085104 }; result[7] = { 0.845377609077804, 0.747547515688392 }; result[8] = { 0.951093615508598, 0.413321379328445 }; result[9] = { 1.067347359524113, 0.552344271253539 }; result[10] = { 0.856508614439436, 0.390553678952617 }; result[11] = { 0.921536704800470, 0.459953813816839 }; return result; } inline std::vector> PredictionDistanceSupervised() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210111, 1.474855008515000 }; result[1] = { 0.605125609448517, 1.051817099896226 }; result[2] = { 0.632177503835419, 0.812445189801618 }; result[3] = { 1.114890656799339, 1.849548724985433 }; result[4] = { 0.716307916402446, 1.067153960330500 }; result[5] = { 0.705594944810905, 0.331147184884182 }; result[6] = { 0.684063787503923, 0.476499934085104 }; result[7] = { 0.845432339540137, 0.747547515688392 }; result[8] = { 0.951119668632168, 0.353451074348013 }; result[9] = { 1.067314379382615, 0.686650119070229 }; result[10] = { 0.856525175953122, 0.448063104241547 }; result[11] = { 0.921512070536392, 0.511024366753348 }; return result; } inline std::vector> PredictionDistanceUnSupervised() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210111, 1.474855008515000 }; result[1] = { 0.605125609448517, 1.051817099896226 }; result[2] = { 0.632177503835419, 0.812445189801618 }; result[3] = { 1.114890656799339, 1.849548724985433 }; result[4] = { 0.716307916402446, 1.067153960330500 }; result[5] = { 0.705594944810905, 0.331147184884182 }; result[6] = { 0.729161284837321, 0.448637450763909 }; result[7] = { 0.871245756539967, 0.786138798955233 }; result[8] = { 1.017636018350342, 0.439519359143378 }; result[9] = { 1.163460730752319, 0.623259567590992 }; result[10] = { 0.942113031918693, 0.422541764097218 }; result[11] = { 1.014624974936401, 0.472684060628136 }; return result; } } // namespace MDM namespace FgMDMRT { inline Geometry::CMatrixClassifierFgMDMRT Reference() { Geometry::CMatrixClassifierFgMDMRT result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 2.08042432, -0.08968098, 0.03145977, -0.08968098, 1.41163613, 0.09127538, 0.03145977, 0.09127538, 0.734828; means[1] << 1.30840283, 0.15716713, 0.00232698, 0.15716713, 1.93455782, -0.01963492, 0.00232698, -0.01963492, 0.98852719; Eigen::MatrixXd ref(NB_CHAN, NB_CHAN); ref << 1.70952664, 0.01674082, 0.02077766, 0.01674082, 1.60344581, 0.05423902, 0.02077766, 0.05423902, 0.8303257; Eigen::MatrixXd weight = Eigen::MatrixXd(NB_FEATURES, NB_FEATURES); weight << 0.45714834, -0.20916523, 0.03361964, -0.30846516, 0.14551225, -0.29488776, -0.20916523, 0.09570218, -0.01538245, 0.14113622, -0.06657818, 0.13492396, 0.03361964, -0.01538245, 0.00247246, -0.02268517, 0.01070127, -0.02168666, -0.30846516, 0.14113622, -0.02268517, 0.20813978, -0.09818576, 0.1989783, 0.14551225, -0.06657818, 0.01070127, -0.09818576, 0.04631716, -0.09386402, -0.29488776, 0.13492396, -0.02168666, 0.1989783, -0.09386402, 0.19022007; result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); return result; } inline Geometry::CMatrixClassifierFgMDMRT AfterSupervised() { return Geometry::CMatrixClassifierFgMDMRT(NB_CLASS, Geometry::EMetric::Riemann); } inline Geometry::CMatrixClassifierFgMDMRT AfterUnSupervised() { return Geometry::CMatrixClassifierFgMDMRT(NB_CLASS, Geometry::EMetric::Riemann); } inline std::vector Prediction() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionUnSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector> PredictionDistance() { std::vector> result(NB_TRIALS); result[0] = { 0.02665352, 0.71870784 }; result[1] = { 0.0963665, 0.78842083 }; result[2] = { 0.27172762, 0.4203267 }; result[3] = { 0.86848167, 1.56053599 }; result[4] = { 0.13999143, 0.83204575 }; result[5] = { 0.44863838, 0.24341594 }; result[6] = { 0.41112711, 0.28092722 }; result[7] = { 0.59496729, 0.09708703 }; result[8] = { 0.87589215, 0.18383782 }; result[9] = { 0.76329856, 0.07124423 }; result[10] = { 0.59422854, 0.09782578 }; result[11] = { 0.63188509, 0.06016924 }; return result; } inline std::vector> PredictionDistanceSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } inline std::vector> PredictionDistanceUnSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } } // namespace FgMDMRT namespace MDMRebias { inline Geometry::CMatrixClassifierMDMRebias Reference() { Geometry::CMatrixClassifierMDMRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.129204848898484, -0.103109478655884, -0.005579207794177, -0.103109478655884, 0.884890317836479, 0.015961516899074, -0.005579207794177, 0.015961516899074, 0.801503003117589; means[1] << 0.855588028031272, 0.146119935000422, 0.004175889722330, 0.146119935000422, 1.212891172460091, -0.030535218161296, 0.004175889722330, -0.030535218161296, 1.364418888484737; Geometry::CBias bias; bias.setClassificationNumber(0); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.709522177383279, 0.016735943232583, 0.020785623695383, 0.016735943232582, 1.603446473585329, 0.054241640196169, 0.020785623695383, 0.054241640196169, 0.830327834469631; bias.setBias(m); result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierMDMRebias After() { Geometry::CMatrixClassifierMDMRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.129204848898484, -0.103109478655884, -0.005579207794177, -0.103109478655884, 0.884890317836479, 0.015961516899074, -0.005579207794177, 0.015961516899074, 0.801503003117589; means[1] << 0.855588028031272, 0.146119935000422, 0.004175889722330, 0.146119935000422, 1.212891172460091, -0.030535218161296, 0.004175889722330, -0.030535218161296, 1.364418888484737; Geometry::CBias bias; bias.setClassificationNumber(NB_TRIALS); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.705589799010000, 0.015745816879592, 0.019622109841865, 0.015745816879592, 1.606186296382902, 0.055107313019667, 0.019622109841864, 0.055107313019667, 0.830841812602058; bias.setBias(m); result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierMDMRebias AfterSupervised() { Geometry::CMatrixClassifierMDMRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.077801701232086, -0.135609812697659, -0.032311282008452, -0.135609812697659, 0.947469327241560, -0.034394668642257, -0.032311282008452, -0.034394668642258, 0.986389056463633; means[1] << 0.846602361879856, 0.168419115431573, 0.000436175648620, 0.168419115431572, 1.264667771319573, -0.037722396726046, 0.000436175648620, -0.037722396726045, 1.474562819298618; Geometry::CBias bias; bias.setClassificationNumber(NB_TRIALS); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.705589799010000, 0.015745816879592, 0.019622109841865, 0.015745816879592, 1.606186296382902, 0.055107313019667, 0.019622109841864, 0.055107313019667, 0.830841812602058; bias.setBias(m); result.setMeans(means); result.setTrialNumbers({ 2 * NB_TRIALS1, 2 * NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierMDMRebias AfterUnSupervised() { Geometry::CMatrixClassifierMDMRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.163328386007378, -0.071528982784288, 0.003415904977547, -0.071528982784288, 0.865367469644902, 0.037539841921305, 0.003415904977547, 0.037539841921304, 0.725209905616625; means[1] << 0.867551363970510, 0.027654580821275, -0.039319369201831, 0.027654580821275, 1.192704425561919, -0.114920170106705, -0.039319369201831, -0.114920170106704, 1.554798562413437; Geometry::CBias bias; bias.setClassificationNumber(NB_TRIALS); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.705589799010000, 0.015745816879592, 0.019622109841865, 0.015745816879592, 1.606186296382902, 0.055107313019667, 0.019622109841864, 0.055107313019667, 0.830841812602058; bias.setBias(m); result.setMeans(means); result.setTrialNumbers({ NB_TRIALS1 + 2, NB_TRIALS2 + 10 });// Find 2 & 10 times in Prediction result.setBias(bias); return result; } inline std::vector Prediction() { return std::vector{ 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionSupervised() { return std::vector{ 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionUnSupervised() { return std::vector{ 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector> PredictionDistance() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210112, 1.474855008515001 }; result[1] = { 1.695656381031027, 1.841285722807642 }; result[2] = { 0.985038237804275, 0.841748947395782 }; result[3] = { 0.893165255444375, 1.599278236985282 }; result[4] = { 0.999895116206910, 0.941884079636976 }; result[5] = { 1.137476666505600, 0.465758462215674 }; result[6] = { 1.011555978384045, 0.477398295992067 }; result[7] = { 1.061656174626915, 0.693427342482516 }; result[8] = { 1.170383892226384, 0.490874398142692 }; result[9] = { 1.264605170966096, 0.711483172971687 }; result[10] = { 0.958316311213036, 0.443514577199302 }; result[11] = { 0.979165666917157, 0.506488669219013 }; return result; } inline std::vector> PredictionDistanceSupervised() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210112, 1.474855008515001 }; result[1] = { 1.855966579223177, 1.841285722807642 }; result[2] = { 0.958576739762368, 0.841748947395782 }; result[3] = { 0.923258071960562, 1.599278236985282 }; result[4] = { 0.972293627395511, 0.941884079636976 }; result[5] = { 1.081434198790791, 0.465758462215674 }; result[6] = { 0.886487914539492, 0.477398295992067 }; result[7] = { 1.019626392142984, 0.693427342482516 }; result[8] = { 1.065871792145533, 0.446604052630479 }; result[9] = { 1.069057512264309, 0.803506934337151 }; result[10] = { 0.813748223596456, 0.477967335007498 }; result[11] = { 0.768497985059151, 0.533247406413060 }; return result; } inline std::vector> PredictionDistanceUnSupervised() { std::vector> result(NB_TRIALS); result[0] = { 1.314629453210112, 1.474855008515001 }; result[1] = { 1.855966579223177, 1.841285722807642 }; result[2] = { 1.077703693722418, 0.677588292749563 }; result[3] = { 0.990907763223969, 1.416399657557998 }; result[4] = { 1.102040763358186, 0.797780684168623 }; result[5] = { 1.233329154201637, 0.544647072527355 }; result[6] = { 1.103888150188716, 0.487000074621019 }; result[7] = { 1.094214879276997, 0.921591225768512 }; result[8] = { 1.223770999299696, 0.714324156664128 }; result[9] = { 1.357590792239233, 0.679090817494962 }; result[10] = { 1.028663404532504, 0.505823409893398 }; result[11] = { 1.085189723107800, 0.367393525001945 }; return result; } } // namespace MDMRebias namespace FgMDM { inline Geometry::CMatrixClassifierFgMDM Reference() { Geometry::CMatrixClassifierFgMDM result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 2.08042432, -0.08968098, 0.03145977, -0.08968098, 1.41163613, 0.09127538, 0.03145977, 0.09127538, 0.734828; means[1] << 1.30840283, 0.15716713, 0.00232698, 0.15716713, 1.93455782, -0.01963492, 0.00232698, -0.01963492, 0.98852719; Eigen::MatrixXd ref(NB_CHAN, NB_CHAN); ref << 1.70952664, 0.01674082, 0.02077766, 0.01674082, 1.60344581, 0.05423902, 0.02077766, 0.05423902, 0.8303257; Eigen::MatrixXd weight = Eigen::MatrixXd(NB_FEATURES, NB_FEATURES); weight << 0.45714834, -0.20916523, 0.03361964, -0.30846516, 0.14551225, -0.29488776, -0.20916523, 0.09570218, -0.01538245, 0.14113622, -0.06657818, 0.13492396, 0.03361964, -0.01538245, 0.00247246, -0.02268517, 0.01070127, -0.02168666, -0.30846516, 0.14113622, -0.02268517, 0.20813978, -0.09818576, 0.1989783, 0.14551225, -0.06657818, 0.01070127, -0.09818576, 0.04631716, -0.09386402, -0.29488776, 0.13492396, -0.02168666, 0.1989783, -0.09386402, 0.19022007; result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setDataset(InitCovariance::LWF::Reference()); return result; } inline Geometry::CMatrixClassifierFgMDM AfterSupervised() { return Geometry::CMatrixClassifierFgMDM(NB_CLASS, Geometry::EMetric::Riemann); } inline Geometry::CMatrixClassifierFgMDM AfterUnSupervised() { return Geometry::CMatrixClassifierFgMDM(NB_CLASS, Geometry::EMetric::Riemann); } inline std::vector PredictionSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionUnSupervised() { return std::vector{ 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector> PredictionDistanceSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } inline std::vector> PredictionDistanceUnSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } } // namespace FgMDM namespace FgMDMRTRebias { inline Geometry::CMatrixClassifierFgMDMRTRebias Reference() { Geometry::CMatrixClassifierFgMDMRTRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 1.21749102419878, -0.065244040475294, 0.00919064364644959, -0.0652440404752944, 0.879520180058735, 0.0383106920991925, 0.00919064364644961, 0.0383106920991925, 0.882712321945327; means[1] << 0.764724285777722, 0.0858374005624361, -0.0164757238732658, 0.0858374005624357, 1.20857271214632, -0.0743441311282506, -0.0164757238732657, -0.0743441311282506, 1.19491180388651; const Eigen::MatrixXd ref = Eigen::MatrixXd::Identity(NB_CHAN, NB_CHAN); Eigen::MatrixXd weight = Eigen::MatrixXd(NB_FEATURES, NB_FEATURES); weight << 0.457148328143448, -0.209165242331525, 0.0336196848430174, -0.308465155960592, 0.145512230780716, -0.294887759430561, -0.209165242331525, 0.0957021953405835, -0.0153824679964544, 0.141136224558352, -0.0665781741717288, 0.134923975140382, 0.0336196848430174, -0.0153824679964544, 0.00247246492956471, -0.0226852001637271, 0.0107012867344819, -0.0216866888180067, -0.308465155960592, 0.141136224558352, -0.0226852001637271, 0.208139779988291, -0.098185753285447, 0.19897830332888, 0.145512230780716, -0.0665781741717288, 0.0107012867344819, -0.098185753285447, 0.0463171535435127, -0.0938640110069554, -0.294887759430561, 0.134923975140382, -0.0216866888180067, 0.19897830332888, -0.0938640110069554, 0.190220078054599; Geometry::CBias bias; bias.setClassificationNumber(0); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.70952703700155, 0.0167406580855047, 0.0207774590925802, 0.0167406580855047, 1.60344585621418, 0.0542388460600326, 0.0207774590925802, 0.0542388460600327, 0.830325461380695; bias.setBias(m); result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierFgMDMRTRebias After() { Geometry::CMatrixClassifierFgMDMRTRebias result(NB_CLASS, Geometry::EMetric::Riemann); std::vector means(NB_CLASS, Eigen::MatrixXd(NB_CHAN, NB_CHAN)); means[0] << 2.08042432, -0.08968098, 0.03145977, -0.08968098, 1.41163613, 0.09127538, 0.03145977, 0.09127538, 0.734828; means[1] << 1.30840283, 0.15716713, 0.00232698, 0.15716713, 1.93455782, -0.01963492, 0.00232698, -0.01963492, 0.98852719; Eigen::MatrixXd ref(NB_CHAN, NB_CHAN); ref << 1.70952664, 0.01674082, 0.02077766, 0.01674082, 1.60344581, 0.05423902, 0.02077766, 0.05423902, 0.8303257; Eigen::MatrixXd weight = Eigen::MatrixXd(NB_FEATURES, NB_FEATURES); weight << 0.45714834, -0.20916523, 0.03361964, -0.30846516, 0.14551225, -0.29488776, -0.20916523, 0.09570218, -0.01538245, 0.14113622, -0.06657818, 0.13492396, 0.03361964, -0.01538245, 0.00247246, -0.02268517, 0.01070127, -0.02168666, -0.30846516, 0.14113622, -0.02268517, 0.20813978, -0.09818576, 0.1989783, 0.14551225, -0.06657818, 0.01070127, -0.09818576, 0.04631716, -0.09386402, -0.29488776, 0.13492396, -0.02168666, 0.1989783, -0.09386402, 0.19022007; Geometry::CBias bias; bias.setClassificationNumber(0); Eigen::MatrixXd m(NB_CHAN, NB_CHAN); m << 1.709522177383279, 0.016735943232583, 0.020785623695383, 0.016735943232582, 1.603446473585329, 0.054241640196169, 0.020785623695383, 0.054241640196169, 0.830327834469631; bias.setBias(m); result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierFgMDMRTRebias AfterSupervised() { Geometry::CMatrixClassifierFgMDMRTRebias result(NB_CLASS, Geometry::EMetric::Riemann); const std::vector means(NB_CLASS, Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN)); const Eigen::MatrixXd ref = Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN); const Eigen::MatrixXd weight = Eigen::MatrixXd::Zero(NB_FEATURES, NB_FEATURES); Geometry::CBias bias; bias.setClassificationNumber(0); const Eigen::MatrixXd m = Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN); bias.setBias(m); result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline Geometry::CMatrixClassifierFgMDMRTRebias AfterUnSupervised() { Geometry::CMatrixClassifierFgMDMRTRebias result(NB_CLASS, Geometry::EMetric::Riemann); const std::vector means(NB_CLASS, Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN)); const Eigen::MatrixXd ref = Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN); const Eigen::MatrixXd weight = Eigen::MatrixXd::Zero(NB_FEATURES, NB_FEATURES); Geometry::CBias bias; bias.setClassificationNumber(0); const Eigen::MatrixXd m = Eigen::MatrixXd::Zero(NB_CHAN, NB_CHAN); bias.setBias(m); result.setMeans(means); result.setRef(ref); result.setWeight(weight); result.setTrialNumbers({ NB_TRIALS1, NB_TRIALS2 }); result.setBias(bias); return result; } inline std::vector Prediction() { return std::vector{ 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionSupervised() { return std::vector{ 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector PredictionUnSupervised() { return std::vector{ 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1 }; } inline std::vector> PredictionDistance() { std::vector> result(NB_TRIALS); result[0] = { 0.02665352, 0.71870784 }; result[1] = { 0.0963665, 0.78842083 }; result[2] = { 0.27172762, 0.4203267 }; result[3] = { 0.86848167, 1.56053599 }; result[4] = { 0.13999143, 0.83204575 }; result[5] = { 0.44863838, 0.24341594 }; result[6] = { 0.41112711, 0.28092722 }; result[7] = { 0.59496729, 0.09708703 }; result[8] = { 0.87589215, 0.18383782 }; result[9] = { 0.76329856, 0.07124423 }; result[10] = { 0.59422854, 0.09782578 }; result[11] = { 0.63188509, 0.06016924 }; return result; } inline std::vector> PredictionDistanceSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } inline std::vector> PredictionDistanceUnSupervised() { return std::vector>(NB_TRIALS, { 0, 0 }); } } // namespace FgMDMRTRebias } // namespace InitMatrixClassif //********************************************************************************** //********** Initialisation Eigen Vector and Values Reference of Datasets ********** //********************************************************************************** namespace InitEigenVector { namespace Euclidian { inline std::vector Vectors() { std::vector res(NB_TRIALS); for (auto& m : res) { m.resize(NB_CHAN, NB_CHAN); } res[0] << -0.099719220313203, -0.669586208598549, -0.736009773273933, -0.205281981382212, 0.737627797680837, -0.643245318839019, 0.973609462371807, 0.086945622909601, -0.211009652473392; res[1] << 0.111965318724019, -0.566910883218780, 0.816134681220650, 0.005003184831306, -0.820966898831894, -0.570953867807099, 0.993699519746574, 0.068010304443119, -0.089083460557960; res[2] << -0.028322884385997, -0.002589190683924, -0.999595473334918, -0.041914725312920, 0.999120210419451, -0.001400333293987, 0.998719665382634, 0.041858108210884, -0.028406491423723; res[3] << 0.057976175973508, 0.314331831622869, -0.947541166730027, -0.034357038854548, 0.949203633909741, 0.312781161922661, 0.997726594263497, 0.014420852996801, 0.065830707866533; res[4] << 0.110221488627708, 0.456226738337136, -0.883010977661632, 0.173352582988355, 0.865982087312907, 0.469067059624150, 0.978672624229348, -0.204773503362712, 0.016361751269464; res[5] << -0.061397704657684, 0.089033331062346, -0.994134491818240, -0.177429035713844, 0.979176579240238, 0.098651730613507, 0.982216503194903, 0.182445314073361, -0.044322096343130; res[6] << -0.104727574488823, -0.834720521380581, 0.540623516254907, 0.059897872088547, -0.547920220834614, -0.834383410980714, 0.992695512259904, -0.055000752601024, 0.107380338760729; res[7] << -0.344452747212933, 0.756355847824317, 0.556127805813935, 0.164894212714269, -0.534427151764618, 0.828973774054463, 0.924208960977335, 0.377244550548736, 0.059366198551682; res[8] << -0.455815137256683, 0.808206330423871, 0.372874091497991, 0.094520279409775, -0.372603305244511, 0.923164499805514, 0.885041511697598, 0.456036516502403, 0.093446338549907; res[9] << -0.193758278930433, -0.979526714631217, -0.054636477464149, 0.125183968787669, 0.030551025517024, -0.991663052048641, 0.973029651811539, -0.198982537333385, 0.116701527547344; res[10] << 0.289237149384199, -0.831656691056042, -0.474013733596209, -0.245334651412988, 0.414238018239343, -0.876480332386991, 0.925285242631790, 0.369802666927723, -0.084221180833406; res[11] << -0.207072974526103, 0.859122563191672, -0.468005560475390, 0.248087389502956, -0.416625413178840, -0.874571845112321, 0.946347415271221, 0.297206471175398, 0.126865610395201; return res; } inline std::vector> Values() { std::vector> res(NB_TRIALS); res[0] = { 0.343998245316627, 1.047423892831558, 3.898577860851816 }; res[1] = { 0.636068793285036, 1.073728055690744, 2.470203153024218 }; res[2] = { 0.756059664962492, 1.005987809161390, 1.217952524876117 }; res[3] = { 0.306163898067430, 0.692913309767313, 2.790922792165257 }; res[4] = { 0.754419420371384, 1.423485809899146, 3.292094770729470 }; res[5] = { 1.157970726170646, 1.601524036502682, 1.650505237326672 }; res[6] = { 1.030292988524935, 1.883408477175503, 2.226298544299563 }; res[7] = { 0.672236347320348, 0.884784932899411, 1.542978716780240 }; res[8] = { 0.899245795614905, 1.015292513408225, 2.425461691976871 }; res[9] = { 1.457630446872362, 1.880811100141710, 2.721558452985928 }; res[10] = { 1.107534688634524, 1.804715500663015, 2.467749820702463 }; res[11] = { 1.599312581194488, 1.601588266036556, 1.609099152768956 }; return res; } } // namespace Euclidian namespace Riemann { inline std::vector Vectors() { std::vector res(NB_TRIALS); for (auto& m : res) { m.resize(NB_CHAN, NB_CHAN); } res[0] << 0.683177314172643, 0.356305060740859, 0.637428789034749, 0.596254535002547, 0.231781884566798, -0.768607629077125, 0.421603233963818, -0.905165101888665, 0.054100382938877; res[1] << -0.804528392658639, -0.036641392375157, 0.592782821757612, 0.576875792719752, 0.189145783947360, 0.794630852779387, 0.141238752401966, -0.981265142955638, 0.131035621264554; res[2] << 0.370856488267809, -0.927087072115963, 0.054543797311153, 0.135794568403219, 0.112234325869184, 0.984359330371218, 0.918708495825446, 0.357649293040181, -0.167516216785142; res[3] << -0.777574590698155, -0.470497128169579, 0.417145308357621, 0.352002391805965, 0.224004159793369, 0.908799456732973, 0.521029818785332, -0.853495511868367, 0.008563828412483; res[4] << -0.852200602468148, -0.348762320327424, -0.390024328821622, 0.522881706515124, -0.594304304543298, -0.611062283726576, 0.018677637558245, 0.724684232974016, -0.688827923602190; res[5] << -0.994896919437310, 0.004425680235693, -0.100799469485717, 0.035551250093998, 0.950342881863922, -0.309167455446607, -0.094425782024322, 0.311173296163130, 0.945650544040486; res[6] << 0.493492935585655, -0.848951899725937, -0.189064524643771, -0.854929504871917, -0.513442400504876, 0.073975962739598, 0.159875777485248, -0.125130225427405, 0.979174224772065; res[7] << 0.571527861854678, 0.121096129587873, 0.811598195243593, 0.728493396347230, 0.380359676034618, -0.569757745296470, 0.377694684371250, -0.916876351666721, -0.129168421651830; res[8] << 0.477199220498479, -0.005594736821533, 0.878777334070208, 0.863025617423313, 0.191571748880577, -0.467425982056996, 0.165733785411286, -0.981462665591888, -0.096246290435066; res[9] << -0.057676575400144, -0.942969112312847, -0.327845490855118, -0.986930132179911, 0.004358779254142, 0.161089773849114, 0.150473674925072, -0.332851700111830, 0.930896030116795; res[10] << -0.619029132884173, -0.643912841267474, 0.449643398140703, -0.781168599478668, 0.445692815423151, -0.437188212865720, -0.081108272261252, 0.621879543907849, 0.778901329463341; res[11] << -0.506535909250893, 0.426948212351236, 0.749090512961855, -0.837796356881654, -0.038403649506972, -0.544630539081656, 0.203761225544018, 0.903460228053582, -0.377148484406567; return res; } inline std::vector> Values() { std::vector> res(NB_TRIALS); res[0] = { 4.073187688916203, 2.162587306518192, 1.025374454830789 }; res[1] = { 3.435489024573568, 2.279680027983445, 2.036513370662008 }; res[2] = { 2.057398179893756, 2.019925692630136, 1.984777599444540 }; res[3] = { 3.925383089438475, 3.559258065718881, 2.185452461332125 }; res[4] = { 4.006415184752641, 2.386938299220804, 2.113758995206569 }; res[5] = { 2.247524315394388, 2.207809023521016, 1.943690511452435 }; res[6] = { 2.763686871540375, 2.395516400026313, 1.965812106992753 }; res[7] = { 2.175635908551394, 2.028557415426327, 1.478675960408231 }; res[8] = { 2.765398368473225, 1.884906422321359, 1.573787029619139 }; res[9] = { 3.124672536007347, 2.389738038023637, 2.124981903599315 }; res[10] = { 2.835071279823153, 2.375727383201085, 1.852703353517745 }; res[11] = { 2.230954201427166, 2.225389092373921, 2.223355992103003 }; return res; } } // namespace Riemann } // namespace InitEigenVector //************************************************************** //********** Initialisation ASR Reference of Datasets ********** //************************************************************** namespace InitASR { namespace Euclidian { inline Geometry::CASR Reference() { Geometry::CASR res(Geometry::EMetric::Euclidian); Eigen::MatrixXd median(3, 3), threshold(3, 3), r(3, 3); median << 1.32267188, 0.00105802, 0.00871490, 0.00105802, 1.32447262, 0.01829110, 0.00871490, 0.01829110, 1.02823244; threshold << -0.05738723, -0.12041171, 1.96255648, 3.44737720, -1.60950341, 0.00205466, 1.31840128, 2.82413924, 0.21182516; r.setIdentity(); res.setMatrices(median, threshold, r); return res; } } // namespace Euclidian namespace Riemann { inline Geometry::CASR Reference() { Geometry::CASR res(Geometry::EMetric::Riemann); Eigen::MatrixXd median(3, 3), threshold(3, 3), r(3, 3); median << 1.32267188, 0.00105802, 0.00871490, 0.00105802, 1.32447262, 0.01829110, 0.00871490, 0.01829110, 1.02823244; threshold << -0.05738723, -0.12041171, 1.96255648, 3.44737720, -1.60950341, 0.00205466, 1.31840128, 2.82413924, 0.21182516; r.setIdentity(); res.setMatrices(median, threshold, r); return res; } } // namespace Riemann } // namespace InitASR