1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream>
2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <Eigen/Dense>
3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std;
5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace Eigen;
6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathint main()
8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  Eigen::MatrixXf m(2,4);
10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  Eigen::VectorXf v(2);
11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  m << 1, 23, 6, 9,
13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath       3, 11, 7, 2;
14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  v << 2,
16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath       3;
17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  MatrixXf::Index index;
19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  // find nearest neighbour
20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  (m.colwise() - v).colwise().squaredNorm().minCoeff(&index);
21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  cout << "Nearest neighbour is column " << index << ":" << endl;
23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  cout << m.col(index) << endl;
24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
25