deprecated Mahalanobis, add better named functions
							parent
							
								
									8c2bd97940
								
							
						
					
					
						commit
						fbd5aef61a
					
				| 
						 | 
				
			
			@ -157,7 +157,7 @@ Vector Gaussian::unwhiten(const Vector& v) const {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
double Gaussian::Mahalanobis(const Vector& v) const {
 | 
			
		||||
double Gaussian::SquaredMahalanobisDistance(const Vector& v) const {
 | 
			
		||||
  // Note: for Diagonal, which does ediv_, will be correct for constraints
 | 
			
		||||
  Vector w = whiten(v);
 | 
			
		||||
  return w.dot(w);
 | 
			
		||||
| 
						 | 
				
			
			@ -573,7 +573,7 @@ void Isotropic::print(const string& name) const {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/* ************************************************************************* */
 | 
			
		||||
double Isotropic::Mahalanobis(const Vector& v) const {
 | 
			
		||||
double Isotropic::SquaredMahalanobisDistance(const Vector& v) const {
 | 
			
		||||
  return v.dot(v) * invsigma_ * invsigma_;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -207,12 +207,23 @@ namespace gtsam {
 | 
			
		|||
      virtual Vector unwhiten(const Vector& v) const;
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Mahalanobis distance v'*R'*R*v = <R*v,R*v>
 | 
			
		||||
       * Squared Mahalanobis distance v'*R'*R*v = <R*v,R*v>
 | 
			
		||||
       */
 | 
			
		||||
      virtual double SquaredMahalanobisDistance(const Vector& v) const;
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
       * Mahalanobis distance
 | 
			
		||||
       */
 | 
			
		||||
      virtual double MahalanobisDistance(const Vector& v) const {
 | 
			
		||||
        return std::sqrt(SquaredMahalanobisDistance(v));
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V4
 | 
			
		||||
      virtual double Mahalanobis(const Vector& v) const;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
      inline virtual double distance(const Vector& v) const {
 | 
			
		||||
        return Mahalanobis(v);
 | 
			
		||||
        return SquaredMahalanobisDistance(v);
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      /**
 | 
			
		||||
| 
						 | 
				
			
			@ -564,7 +575,7 @@ namespace gtsam {
 | 
			
		|||
      }
 | 
			
		||||
 | 
			
		||||
      virtual void print(const std::string& name) const;
 | 
			
		||||
      virtual double Mahalanobis(const Vector& v) const;
 | 
			
		||||
      virtual double SquaredMahalanobisDistance(const Vector& v) const;
 | 
			
		||||
      virtual Vector whiten(const Vector& v) const;
 | 
			
		||||
      virtual Vector unwhiten(const Vector& v) const;
 | 
			
		||||
      virtual Matrix Whiten(const Matrix& H) const;
 | 
			
		||||
| 
						 | 
				
			
			@ -616,7 +627,7 @@ namespace gtsam {
 | 
			
		|||
      virtual bool isUnit() const { return true; }
 | 
			
		||||
 | 
			
		||||
      virtual void print(const std::string& name) const;
 | 
			
		||||
      virtual double Mahalanobis(const Vector& v) const {return v.dot(v); }
 | 
			
		||||
      virtual double SquaredMahalanobisDistance(const Vector& v) const {return v.dot(v); }
 | 
			
		||||
      virtual Vector whiten(const Vector& v) const { return v; }
 | 
			
		||||
      virtual Vector unwhiten(const Vector& v) const { return v; }
 | 
			
		||||
      virtual Matrix Whiten(const Matrix& H) const { return H; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -68,10 +68,10 @@ TEST(NoiseModel, constructors)
 | 
			
		|||
  for(Gaussian::shared_ptr mi: m)
 | 
			
		||||
    EXPECT(assert_equal(unwhitened,mi->unwhiten(whitened)));
 | 
			
		||||
 | 
			
		||||
  // test Mahalanobis distance
 | 
			
		||||
  // test squared Mahalanobis distance
 | 
			
		||||
  double distance = 5*5+10*10+15*15;
 | 
			
		||||
  for(Gaussian::shared_ptr mi: m)
 | 
			
		||||
    DOUBLES_EQUAL(distance,mi->Mahalanobis(unwhitened),1e-9);
 | 
			
		||||
    DOUBLES_EQUAL(distance,mi->SquaredMahalanobisDistance(unwhitened),1e-9);
 | 
			
		||||
 | 
			
		||||
  // test R matrix
 | 
			
		||||
  for(Gaussian::shared_ptr mi: m)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue