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.