14 #include <gtest/gtest.h>    21 #include <Eigen/Dense>    34     const double dat_A[] = {
    35         2.8955668335, 2.3041932983, 1.9002381085, 1.7993158652, 1.8456197228,
    36         2.9632296740, 1.9368565578, 2.1988923358, 2.0547605617, 2.5655678993,
    37         2.3041932983, 3.8406914364, 2.1811218706, 3.2312564555, 2.4736403918,
    38         3.4703311380, 1.4874417483, 3.1073538218, 2.1353324397, 2.9541115932,
    39         1.9002381085, 2.1811218706, 2.4942067597, 1.6851007198, 1.4585872052,
    40         2.3015952197, 1.0955231591, 2.2979627790, 1.3918738834, 2.1854562572,
    41         1.7993158652, 3.2312564555, 1.6851007198, 3.1226161015, 1.6779632687,
    42         2.7195826381, 1.2397348013, 2.3757864319, 1.6291224768, 2.4463194915,
    43         1.8456197228, 2.4736403918, 1.4585872052, 1.6779632687, 2.8123267839,
    44         2.5860688816, 1.4131630919, 2.1914803135, 1.5542420639, 2.7170092067,
    45         2.9632296740, 3.4703311380, 2.3015952197, 2.7195826381, 2.5860688816,
    46         4.1669180394, 2.1145239023, 3.3214801332, 2.6694845663, 3.0742063088,
    47         1.9368565578, 1.4874417483, 1.0955231591, 1.2397348013, 1.4131630919,
    48         2.1145239023, 1.8928811570, 1.7097998455, 1.7205860530, 1.8710847505,
    49         2.1988923358, 3.1073538218, 2.2979627790, 2.3757864319, 2.1914803135,
    50         3.3214801332, 1.7097998455, 3.4592638415, 2.1518695071, 2.8907499694,
    51         2.0547605617, 2.1353324397, 1.3918738834, 1.6291224768, 1.5542420639,
    52         2.6694845663, 1.7205860530, 2.1518695071, 2.1110960664, 1.6731209980,
    53         2.5655678993, 2.9541115932, 2.1854562572, 2.4463194915, 2.7170092067,
    54         3.0742063088, 1.8710847505, 2.8907499694, 1.6731209980, 3.9093678727};
    62     const double dat_good_M[] = {
    63         2.246424086, 2.718547419, 1.899166596, 2.192679825, 2.073010093,
    64         2.938742050, 1.648159507, 2.570463898, 1.909148862, 2.628699435};
    66     const double dat_good_S[] = {
    67         0.428901371, 0.720352792, 0.468999497, 0.684910097, 0.546595053,
    68         0.604303301, 0.328759015, 0.582584159, 0.382009344, 0.644788760};
    71     EXPECT_NEAR((result_mean - good_M).sum_abs(), 0, 1e-4);
    72     EXPECT_NEAR((result_std - good_S).sum_abs(), 0, 1e-4);
    75 TEST(Matrices, meanAndStdAll)
    81     const double dat_A[] = {
    82         2.8955668335, 2.3041932983, 1.9002381085, 1.7993158652, 1.8456197228,
    83         2.9632296740, 1.9368565578, 2.1988923358, 2.0547605617, 2.5655678993,
    84         2.3041932983, 3.8406914364, 2.1811218706, 3.2312564555, 2.4736403918,
    85         3.4703311380, 1.4874417483, 3.1073538218, 2.1353324397, 2.9541115932,
    86         1.9002381085, 2.1811218706, 2.4942067597, 1.6851007198, 1.4585872052,
    87         2.3015952197, 1.0955231591, 2.2979627790, 1.3918738834, 2.1854562572,
    88         1.7993158652, 3.2312564555, 1.6851007198, 3.1226161015, 1.6779632687,
    89         2.7195826381, 1.2397348013, 2.3757864319, 1.6291224768, 2.4463194915,
    90         1.8456197228, 2.4736403918, 1.4585872052, 1.6779632687, 2.8123267839,
    91         2.5860688816, 1.4131630919, 2.1914803135, 1.5542420639, 2.7170092067,
    92         2.9632296740, 3.4703311380, 2.3015952197, 2.7195826381, 2.5860688816,
    93         4.1669180394, 2.1145239023, 3.3214801332, 2.6694845663, 3.0742063088,
    94         1.9368565578, 1.4874417483, 1.0955231591, 1.2397348013, 1.4131630919,
    95         2.1145239023, 1.8928811570, 1.7097998455, 1.7205860530, 1.8710847505,
    96         2.1988923358, 3.1073538218, 2.2979627790, 2.3757864319, 2.1914803135,
    97         3.3214801332, 1.7097998455, 3.4592638415, 2.1518695071, 2.8907499694,
    98         2.0547605617, 2.1353324397, 1.3918738834, 1.6291224768, 1.5542420639,
    99         2.6694845663, 1.7205860530, 2.1518695071, 2.1110960664, 1.6731209980,
   100         2.5655678993, 2.9541115932, 2.1854562572, 2.4463194915, 2.7170092067,
   101         3.0742063088, 1.8710847505, 2.8907499694, 1.6731209980, 3.9093678727};
   105     double result_mean, result_std;
   109     const double good_M = 2.282504177034;
   110     const double good_S = 0.660890754096;
   112     EXPECT_NEAR(std::abs(result_mean - good_M), 0, 1e-4);
   113     EXPECT_NEAR(std::abs(result_std - good_S), 0, 1e-4);
   120     const double W_vals[6 * 6] = {0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0,
   121                                   0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1,
   122                                   1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0};
   128     const double real_laplacian_vals[6 * 6] = {
   129         2, -1, 0,  0, -1, 0,  -1, 3,  -1, 0,  -1, 0, 0, -1, 2, -1, 0, 0,
   130         0, 0,  -1, 3, -1, -1, -1, -1, 0,  -1, 3,  0, 0, 0,  0, -1, 0, 1};
   136 TEST(Matrices, loadFromTextFile)
   139         const std::string s1 =
   142         std::stringstream s(s1);
   150         catch (
const std::exception& e)
   152             std::cerr << e.what() << std::endl;
   159         const std::string s1 =
   162         std::stringstream s(s1);
   170         catch (
const std::exception& e)
   172             std::cerr << e.what() << std::endl;
   179         const std::string s1 = 
"1 2";
   180         std::stringstream s(s1);
   188         catch (
const std::exception& e)
   190             std::cerr << e.what() << std::endl;
   197         const std::string s1 =
   201         std::stringstream s(s1);
   209         catch (
const std::exception& e)
   211             std::cerr << e.what() << std::endl;
   218         const std::string s1 =
   221         std::stringstream s(s1);
   229         catch (std::exception&)
   232         EXPECT_FALSE(retval) << 
"string:\n" << s1 << endl;
   235         const std::string s1 =
   238         std::stringstream s(s1);
   246         catch (std::exception&)
   249         EXPECT_FALSE(retval) << 
"string:\n" << s1 << endl;
   252         const std::string s1 = 
"  \n";
   253         std::stringstream s(s1);
   261         catch (std::exception&)
   264         EXPECT_FALSE(retval) << 
"string:\n" << s1 << endl;
   267         const std::string s1 =
   271         std::stringstream s(s1);
   279         catch (std::exception&)
   282         EXPECT_FALSE(retval) << 
"string:\n" << s1 << endl;
 A namespace of pseudo-random numbers generators of diferent distributions. 
 
A compile-time fixed-size numeric matrix container. 
 
EXPECT_TRUE(mrpt::system::fileExists(ini_fil))
 
void laplacian(const MATIN &g, MATOUT &ret)
Computes the Laplacian of a square graph weight matrix. 
 
This file implements several operations that operate element-wise on individual or pairs of container...
 
This file implements miscelaneous matrix and matrix/vector operations, and internal functions in mrpt...
 
This base provides a set of functions for maths stuff. 
 
void meanAndStdColumns(const MAT_IN &m, VEC &outMeanVector, VEC &outStdVector, const bool unbiased_variance=true)
Computes a row with the mean values of each column in the matrix and the associated vector with the s...
 
size_type rows() const
Number of rows in the matrix. 
 
size_type cols() const
Number of columns in the matrix. 
 
constexpr size_type rows() const
Number of rows in the matrix. 
 
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries. 
 
void meanAndStd(const VECTORLIKE &v, double &out_mean, double &out_std, bool unbiased=true)
Computes the standard deviation of a vector (or all elements of a matrix) 
 
TEST(Matrices, meanAndStdColumns)
 
EXPECT_EQ(out.image_pair_was_used.size(), NUM_IMGS)
 
constexpr size_type cols() const
Number of columns in the matrix. 
 
EXPECT_NEAR(out.cam_params.rightCameraPose.x, 0.1194, 0.005)
 
void loadFromTextFile(std::istream &f)
Loads a vector/matrix from a text file, compatible with MATLAB text format.