From ad4fbabeca2cbdf4cb47f1a923183027494ab0a8 Mon Sep 17 00:00:00 2001 From: Samuel Fadel Date: Thu, 22 Oct 2015 16:39:15 -0200 Subject: Added PLMP as an alternative technique to use; knn() is now exposed in the mp namespace. --- measures.cpp | 42 ++---------------------------------------- 1 file changed, 2 insertions(+), 40 deletions(-) (limited to 'measures.cpp') diff --git a/measures.cpp b/measures.cpp index a030096..daf3c78 100644 --- a/measures.cpp +++ b/measures.cpp @@ -4,44 +4,6 @@ #include #include -static -void knn(const arma::mat &dmat, arma::uword i, arma::uword k, arma::uvec &nn, arma::vec &dist) -{ - arma::uword n = dist.n_rows; - if (k > n) { - return; - } - - for (arma::uword j = 0, l = 0; l < k; j++, l++) { - if (j == i) { - j++; - } - - nn[l] = j; - dist[l] = dmat(i, j); - } - - double dmax = *std::max_element(dist.begin(), dist.end()); - for (arma::uword j = 0; j < n; j++) { - if (j == i) { - continue; - } - - if (dmat(i, j) < dmax) { - dmax = dmat(i, j); - arma::uword l; - for (l = 0; dmat(i, j) > dist[l] && l < k; l++); - for (arma::uword m = l + 1; m < k; m++) { - nn[m] = nn[m - 1]; - dist[m] = dist[m - 1]; - } - - nn[l] = j; - dist[l] = dmat(i, j); - } - } -} - arma::vec mp::neighborhoodPreservation(const arma::mat &distA, const arma::mat &distB, arma::uword k) @@ -55,8 +17,8 @@ arma::vec mp::neighborhoodPreservation(const arma::mat &distA, arma::uvec nnB(k); arma::vec dist(k); - knn(distA, i, k, nnA, dist); - knn(distB, i, k, nnB, dist); + mp::knn(distA, i, k, nnA, dist); + mp::knn(distB, i, k, nnB, dist); std::sort(nnA.begin(), nnA.end()); std::sort(nnB.begin(), nnB.end()); -- cgit v1.2.3