2 #include "gtest/gtest.h"
16 VectorXi row_ind, col_ind;
17 int ret = linear_sum_assignment(C, row_ind, col_ind);
18 cout << "row: [" << row_ind.transpose() << "], col: [" << col_ind.transpose() << "]" << endl;
19 Vector3i expect_row_ind, expect_col_ind;
21 expect_row_ind << 0, 1, 2;
22 expect_col_ind << 2, 1, 0;
25 EXPECT_TRUE(expect_row_ind == row_ind);
26 EXPECT_TRUE(expect_col_ind == col_ind);
38 VectorXi row_ind, col_ind;
39 int ret = linear_sum_assignment(C, row_ind, col_ind);
40 Vector3i expect_row_ind, expect_col_ind;
42 expect_row_ind << 0, 1, 3;
43 expect_col_ind << 1, 2, 0;
46 EXPECT_TRUE(expect_row_ind == row_ind);
47 EXPECT_TRUE(expect_col_ind == col_ind);
52 MatrixXi C = MatrixXi::Zero(0, 0);
53 VectorXi row_ind, col_ind;
54 int ret = linear_sum_assignment(C, row_ind, col_ind);
59 TEST(Distance, consine)
64 double d = distance_cosine(u, v);
65 EXPECT_DOUBLE_EQ(d, 1.0);
69 d = distance_cosine(u, v);
70 EXPECT_DOUBLE_EQ(d, 1.0);
74 d = distance_cosine(u, v);
75 EXPECT_TRUE(std::abs(d - 0.2928932) < 0.0001);
78 TEST(Distance, euclidean)
83 double d = distance_euclidean(u, v);
84 EXPECT_TRUE(std::abs(d - 1.41421356) < 0.0001);
88 d = distance_euclidean(u, v);
89 EXPECT_DOUBLE_EQ(d, 1.0);
92 TEST(Distance, vector)
94 std::vector<int> sv = {1, 2, 3, 4, 5, 6};
96 VectorXi b = Eigen::Map<VectorXi>(sv.data(), sv.size());
97 std::cout << b << std::endl;
98 std::vector<float> f1_hog = { 0.1, 0.2, 0,3};
99 // Eigen::Map<Eigen::VectorXd>(f2_hog.data(), f2_hog.size())
101 //VectorXd mf = Map<VectorXd, 0, InnerStride<2> >(sv.data(), sv.size());
102 std::vector<double> sd = {1, 2, 3, 4, 5, 6};
103 VectorXd mm = Map<VectorXd>(sd.data(), sd.size());
104 VectorXd xd = Map<VectorXd, 0, InnerStride<2> >(sd.data(), sd.size());
105 cout << Map<VectorXd, 0, InnerStride<2> >(sd.data(), sd.size()) << endl;
108 for(int i = 0; i < 12; ++i) array[i] = i;
109 cout << Map<VectorXi, 0, InnerStride<2> >(sv.data(), sv.size()) // the inner stride has already been passed as template parameter
113 //Vector3d v = Vector3d::Random();
114 //std::cout << v << std::endl;