{
// The algorithm expects more columns than rows in the cost matrix.
MatrixXi correct_matrix = cost_matrix;
+ if (cost_matrix.cols() == 0 || cost_matrix.rows() == 0){
+ row_ind = VectorXi::Zero(0);
+ col_ind = VectorXi::Zero(0);
+ return 0;
+ }
bool is_transposed = false;
if (cost_matrix.cols() < cost_matrix.rows()){
cout << "cols < rows, transpose." << endl;
}
return 4;
}
+
+////////////////////////////////////////////////////////////////////////////////
+double distance_cosine(const VectorXd& u, const VectorXd& v)
+{
+ return (1 - u.dot(v) / std::sqrt(u.dot(u) * v.dot(v)));
+}
+
+double distance_euclidean(const VectorXd& u, const VectorXd& v)
+{
+ VectorXd d = u - v;
+ return std::sqrt(d.dot(d));
+}