00001 // This is core/vpdl/vpdl_gaussian_base.h 00002 #ifndef vpdl_gaussian_base_h_ 00003 #define vpdl_gaussian_base_h_ 00004 //: 00005 // \file 00006 // \author Matthew Leotta 00007 // \date February 11, 2009 00008 // \brief The abstract base class for Gaussian distributions 00009 // 00010 // \verbatim 00011 // Modifications 00012 // None 00013 // \endverbatim 00014 00015 #include <vpdl/vpdl_distribution.h> 00016 00017 00018 //: The abstract base class for Gaussian distributions 00019 // All Gaussian classes represent the mean in the same way, 00020 // so it is managed in this base class. 00021 // Derived classes differ in how they represent covariance 00022 template<class T, unsigned int n=0> 00023 class vpdl_gaussian_base : public vpdl_distribution<T,n> 00024 { 00025 public: 00026 //: the data type used for vectors 00027 typedef typename vpdt_field_default<T,n>::type vector; 00028 00029 00030 //: Destructor 00031 virtual ~vpdl_gaussian_base() {} 00032 00033 //: Access the mean directly 00034 virtual const vector& mean() const = 0; 00035 00036 //: Set the mean 00037 virtual void set_mean(const vector& mean) = 0; 00038 }; 00039 00040 00041 #endif // vpdl_gaussian_base_h_