aboutsummaryrefslogtreecommitdiff
path: root/measures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'measures.cpp')
-rw-r--r--measures.cpp42
1 files changed, 2 insertions, 40 deletions
diff --git a/measures.cpp b/measures.cpp
index a030096..daf3c78 100644
--- a/measures.cpp
+++ b/measures.cpp
@@ -4,44 +4,6 @@
#include <cmath>
#include <algorithm>
-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());