aboutsummaryrefslogtreecommitdiff
path: root/measures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'measures.cpp')
-rw-r--r--measures.cpp31
1 files changed, 17 insertions, 14 deletions
diff --git a/measures.cpp b/measures.cpp
index 2a3908f..7c30cd9 100644
--- a/measures.cpp
+++ b/measures.cpp
@@ -8,31 +8,34 @@
static const float EPSILON = 1e-6f;
-arma::vec mp::neighborhoodPreservation(const arma::mat &distA,
- const arma::mat &distB,
- arma::uword k)
+void mp::neighborhoodPreservation(const arma::mat &distA,
+ const arma::mat &distB,
+ arma::uword k,
+ arma::vec &v)
{
- int n = uintToInt<arma::uword, int>(distA.n_rows);
- arma::vec np(n);
+ int n = uintToInt<arma::uword, int>(v.n_elem);
- #pragma omp parallel for shared(np, n)
+ #pragma omp parallel for shared(v, n)
for (int i = 0; i < n; i++) {
- arma::uvec nnA(k);
- arma::uvec nnB(k);
- arma::vec dist(k);
+ //arma::uvec nnA(k);
+ //arma::uvec nnB(k);
+ //arma::vec dist(k);
+
+ //mp::knn(distA, i, k, nnA, dist);
+ //mp::knn(distB, i, k, nnB, dist);
- mp::knn(distA, i, k, nnA, dist);
- mp::knn(distB, i, k, nnB, dist);
+ arma::uvec nnA = arma::sort_index(distA.col(i));
+ nnA = nnA.subvec(2, k + 1);
+ arma::uvec nnB = arma::sort_index(distB.col(i));
+ nnB = nnB.subvec(2, k + 1);
std::sort(nnA.begin(), nnA.end());
std::sort(nnB.begin(), nnB.end());
arma::uword l;
for (l = 0; nnA[l] == nnB[l] && l < k; l++);
- np[i] = ((double) l) / k;
+ v[i] = ((double) l) / k;
}
-
- return np;
}
arma::vec mp::silhouette(const arma::mat &distA,