37 #ifndef DISSIMILARITY_MATRIX_H
38 #define DISSIMILARITY_MATRIX_H
41 #include <boost/numeric/ublas/symmetric.hpp>
58 template <
class T,
class D>
61 if (mat.size1() != objects.size() || mat.size2() != objects.size()) {
62 mat.resize(objects.size(), objects.size());
65 for (
size_t i=0; i < objects.size(); i++) {
66 for (
size_t j=0; j <= i; j++) {
67 mat(i,j) = dissimilarity(objects[i], objects[j]);
82 template <
class T,
class D>
85 if (mat.size1() != subset.size() || mat.size2() != subset.size()) {
86 mat.resize(subset.size(), subset.size());
89 for (
size_t i=0; i < subset.size(); i++) {
90 for (
size_t j=0; j <= i; j++) {
91 mat(i,j) = dissimilarity(objects[subset[i]], objects[subset[j]]);
109 template <
class T,
class D>
123 template <
class T,
class D>
130 #endif // DISSIMILARITY_MATRIX_H
double operator()(size_t i, size_t j)
const std::vector< T > & objects
void build_dissimilarity_matrix(const std::vector< T > &objects, D dissimilarity, dissimilarity_matrix &mat)
Computes a dissimilarity matrix from a vector of objects.
lazy_distance_functor(const std::vector< T > &objs, D d)
Adaptor for passing a matrix by reference to template functions that take a callable distance functio...
lazy_distance_functor< T, D > lazy_distance(const std::vector< T > &objs, D dist)
Type-inferred syntactic sugar for constructing lazy_distance_functor.
boost::numeric::ublas::symmetric_matrix< double > dissimilarity_matrix
Packed repersentation of symmetric dissimilarity matrix.
matrix_distance(const dissimilarity_matrix &m)
const dissimilarity_matrix & mat
double operator()(size_t i, size_t j)
Functor for computing distance lazily from an object array and a distance metric. ...