The L_p metric for arbitrary integer p, with an option to take the root. More...
Public Member Functions  
LMetric ()  
Default constructor does nothing, but is required to satisfy the Metric policy. More...  
template < typename Archive >  
void  serialize (Archive &, const uint32_t) 
Serialize the metric (nothing to do). More...  
Static Public Member Functions  
template < typename VecTypeA , typename VecTypeB >  
static VecTypeA::elem_type  Evaluate (const VecTypeA &a, const VecTypeB &b) 
Computes the distance between two points. More...  
Static Public Attributes  
static const int  Power = TPower 
The power of the metric. More...  
static const bool  TakeRoot = TTakeRoot 
Whether or not the root is taken. More...  
The L_p metric for arbitrary integer p, with an option to take the root.
This class implements the standard L_p metric for two arbitrary vectors and of dimensionality :
The value of p is given as a template parameter.
In addition, the function can be simplified, neglecting the proot calculation. This is done by specifying the TakeRoot template parameter to be false. Then,
It is faster to compute that distance, so TakeRoot is by default off. However, when TakeRoot is false, the distance given is not actually a true metric – it does not satisfy the triangle inequality. Some mlpack methods do not require the triangle inequality to operate correctly (such as the BinarySpaceTree), but setting TakeRoot = false in some cases will cause incorrect results.
A few convenience typedefs are given:
Power  Power of metric; i.e. Power = 1 gives the L1norm (Manhattan distance). 
TakeRoot  If true, the Power'th root of the result is taken before it is returned. Setting this to false causes the metric to not satisfy the Triangle Inequality (be careful!). 
Definition at line 63 of file lmetric.hpp.

inline 
Default constructor does nothing, but is required to satisfy the Metric policy.
Definition at line 70 of file lmetric.hpp.

static 
Computes the distance between two points.
VecTypeA  Type of first vector (generally arma::vec or arma::sp_vec). 
VecTypeB  Type of second vector. 
a  First vector. 
b  Second vector. 
Referenced by KMeansPlusPlusInitialization::Cluster(), SphericalKernel::ConvolutionIntegral(), GaussianKernel::ConvolutionIntegral(), SphericalKernel::Evaluate(), TriangularKernel::Evaluate(), LaplacianKernel::Evaluate(), GaussianKernel::Evaluate(), CauchyKernel::Evaluate(), and LMetric< TPower, true >::LMetric().

inline 
Serialize the metric (nothing to do).
Definition at line 88 of file lmetric.hpp.

static 
The power of the metric.
Definition at line 91 of file lmetric.hpp.

static 
Whether or not the root is taken.
Definition at line 93 of file lmetric.hpp.