mahalanobis_distance.hpp
Go to the documentation of this file.
1 /***
2  * @file mahalanobis_dstance.h
3  * @author Ryan Curtin
4  *
5  * The Mahalanobis distance.
6  *
7  * mlpack is free software; you may redistribute it and/or modify it under the
8  * terms of the 3-clause BSD license. You should have received a copy of the
9  * 3-clause BSD license along with mlpack. If not, see
10  * http://www.opensource.org/licenses/BSD-3-Clause for more information.
11  */
12 #ifndef MLPACK_CORE_METRICS_MAHALANOBIS_DISTANCE_HPP
13 #define MLPACK_CORE_METRICS_MAHALANOBIS_DISTANCE_HPP
14 
15 #include <mlpack/prereqs.hpp>
16 
17 namespace mlpack {
18 namespace metric {
19 
59 template<bool TakeRoot = true>
61 {
62  public:
68 
75  MahalanobisDistance(const size_t dimensionality) :
76  covariance(arma::eye<arma::mat>(dimensionality, dimensionality)) { }
77 
84  MahalanobisDistance(const arma::mat& covariance) : covariance(covariance) { }
85 
95  template<typename VecTypeA, typename VecTypeB>
96  double Evaluate(const VecTypeA& a, const VecTypeB& b);
97 
103  const arma::mat& Covariance() const { return covariance; }
104 
110  arma::mat& Covariance() { return covariance; }
111 
113  template<typename Archive>
114  void serialize(Archive& ar, const unsigned int version);
115 
116  private:
118  arma::mat covariance;
119 };
120 
121 } // namespace metric
122 } // namespace mlpack
123 
124 #include "mahalanobis_distance_impl.hpp"
125 
126 #endif
.hpp
Definition: add_to_po.hpp:21
double Evaluate(const VecTypeA &a, const VecTypeB &b)
Evaluate the distance between the two given points using this Mahalanobis distance.
The core includes that mlpack expects; standard C++ includes and Armadillo.
const arma::mat & Covariance() const
Access the covariance matrix.
MahalanobisDistance(const size_t dimensionality)
Initialize the Mahalanobis distance with the identity matrix of the given dimensionality.
MahalanobisDistance()
Initialize the Mahalanobis distance with the empty matrix as covariance.
arma::mat & Covariance()
Modify the covariance matrix.
void serialize(Archive &ar, const unsigned int version)
Serialize the Mahalanobis distance.
MahalanobisDistance(const arma::mat &covariance)
Initialize the Mahalanobis distance with the given covariance matrix.
The Mahalanobis distance, which is essentially a stretched Euclidean distance.