Public Types | Public Member Functions
vpdl_gaussian_base< T, n > Class Template Reference

The abstract base class for Gaussian distributions. More...

#include <vpdl_gaussian_base.h>

Inheritance diagram for vpdl_gaussian_base< T, n >:
Inheritance graph
[legend]

List of all members.

Public Types

typedef vpdt_field_default< T,
n >::type 
vector
 the data type used for vectors.
typedef vpdt_field_default< T,
n >::type 
field_type
 the data type used for vectors.
typedef vpdt_field_traits
< field_type >::matrix_type 
matrix
 the data type used for matrices.

Public Member Functions

virtual ~vpdl_gaussian_base ()
 Destructor.
virtual const vectormean () const =0
 Access the mean directly.
virtual void set_mean (const vector &mean)=0
 Set the mean.
virtual unsigned int dimension () const =0
 Return the run time dimension, which does not equal n when n==0.
virtual vpdl_distribution< T, n > * clone () const =0
 Create a copy on the heap and return base class pointer.
virtual T density (const vector &pt) const =0
 Evaluate the unnormalized density at a point.
virtual T prob_density (const vector &pt) const
 Evaluate the probability density at a point.
virtual T log_prob_density (const vector &pt) const
 Evaluate the log probability density at a point.
virtual T gradient_density (const vector &pt, vector &g) const =0
 Compute the gradient of the unnormalized density at a point.
virtual T norm_const () const =0
 The normalization constant for the density.
virtual T cumulative_prob (const vector &pt) const =0
 Evaluate the cumulative distribution function at a point.
virtual vector inverse_cdf (const T &p) const
 Compute the inverse of the cumulative_prob() function.
virtual T box_prob (const vector &min_pt, const vector &max_pt) const
 The probability of being in an axis-aligned box.
virtual void compute_mean (vector &mean) const =0
 Compute the mean of the distribution.
virtual void compute_covar (matrix &covar) const =0
 Compute the covariance of the distribution.

Detailed Description

template<class T, unsigned int n = 0>
class vpdl_gaussian_base< T, n >

The abstract base class for Gaussian distributions.

All Gaussian classes represent the mean in the same way, so it is managed in this base class. Derived classes differ in how they represent covariance

Definition at line 23 of file vpdl_gaussian_base.h.


Member Typedef Documentation

template<class T, unsigned int n = 0>
typedef vpdt_field_default<T,n>::type vpdl_distribution< T, n >::field_type [inherited]

the data type used for vectors.

Reimplemented in vpdl_mixture_of< dist_t >.

Definition at line 36 of file vpdl_distribution.h.

template<class T, unsigned int n = 0>
typedef vpdt_field_traits<field_type>::matrix_type vpdl_distribution< T, n >::matrix [inherited]
template<class T , unsigned int n = 0>
typedef vpdt_field_default<T,n>::type vpdl_gaussian_base< T, n >::vector

the data type used for vectors.

Reimplemented from vpdl_distribution< T, n >.

Reimplemented in vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

Definition at line 27 of file vpdl_gaussian_base.h.


Constructor & Destructor Documentation

template<class T , unsigned int n = 0>
virtual vpdl_gaussian_base< T, n >::~vpdl_gaussian_base ( ) [inline, virtual]

Destructor.

Definition at line 31 of file vpdl_gaussian_base.h.


Member Function Documentation

template<class T , unsigned int n>
T vpdl_distribution< T, n >::box_prob ( const vector min_pt,
const vector max_pt 
) const [virtual, inherited]

The probability of being in an axis-aligned box.

The box is defined by two points, the minimum and maximum. Implemented in terms of cumulative_prob() by default.

Reimplemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, and vpdl_mixture_of< dist_t >.

Definition at line 86 of file vpdl_distribution.txx.

template<class T, unsigned int n = 0>
virtual vpdl_distribution<T,n>* vpdl_distribution< T, n >::clone ( ) const [pure virtual, inherited]
template<class T, unsigned int n = 0>
virtual void vpdl_distribution< T, n >::compute_covar ( matrix covar) const [pure virtual, inherited]

Compute the covariance of the distribution.

This may be trivial for distributions like Gaussians, but actually involves computation for others.

Implemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_mixture_of< dist_t >.

template<class T, unsigned int n = 0>
virtual void vpdl_distribution< T, n >::compute_mean ( vector mean) const [pure virtual, inherited]

Compute the mean of the distribution.

This may be trivial for distributions like Gaussians, but actually involves computation for others.

Implemented in vpdl_mixture< T, n >, vpdl_gaussian_sphere< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_indep< T, n >, vpdl_gaussian< T, n >, and vpdl_kernel_base< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::cumulative_prob ( const vector pt) const [pure virtual, inherited]

Evaluate the cumulative distribution function at a point.

This is the integral of the density function from negative infinity (in all dimensions) to the point in question

Note:
It is not possible to compute this value for all functions in closed form. In some cases, numerical integration may be used. If no good solutions exists the function should return a quiet NaN.

Implemented in vpdl_mixture< T, n >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::density ( const vector pt) const [pure virtual, inherited]

Evaluate the unnormalized density at a point.

Note:
This is not a probability density. To make this a probability multiply by norm_const()
See also:
prob_density

Implemented in vpdl_mixture< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, vpdl_gaussian< T, n >, and vpdl_kernel_gaussian_sfbw< T, n >.

template<class T, unsigned int n = 0>
virtual unsigned int vpdl_distribution< T, n >::dimension ( ) const [pure virtual, inherited]

Return the run time dimension, which does not equal n when n==0.

Implemented in vpdl_mixture< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, vpdl_gaussian< T, n >, and vpdl_kernel_base< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::gradient_density ( const vector pt,
vector g 
) const [pure virtual, inherited]

Compute the gradient of the unnormalized density at a point.

Returns:
the density at pt since it is usually needed as well, and is often trivial to compute while computing gradient
Return values:
gthe gradient vector

Implemented in vpdl_mixture< T, n >, vpdl_mixture_of< dist_t >, vpdl_kernel_gaussian_sfbw< T, n >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n>
vpdl_distribution< T, n >::vector vpdl_distribution< T, n >::inverse_cdf ( const T &  p) const [virtual, inherited]

Compute the inverse of the cumulative_prob() function.

The value of x: P(x'<x) = P for x' drawn from the distribution.

Note:
This is only valid for univariate distributions multivariate distributions will return a quiet NaN

The value of x: P(x'<x) = P for x' drawn from the distribution. This is only valid for univariate distributions multivariate distributions will return -infinity

Definition at line 75 of file vpdl_distribution.txx.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::log_prob_density ( const vector pt) const [inline, virtual, inherited]

Evaluate the log probability density at a point.

Reimplemented in vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

Definition at line 62 of file vpdl_distribution.h.

template<class T , unsigned int n = 0>
virtual const vector& vpdl_gaussian_base< T, n >::mean ( ) const [pure virtual]

Access the mean directly.

Implemented in vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::norm_const ( ) const [pure virtual, inherited]

The normalization constant for the density.

When density() is multiplied by this value it becomes prob_density norm_const() is reciprocal of the integral of density over the entire field

Implemented in vpdl_mixture< T, n >, vpdl_kernel_fbw_base< T, n >, vpdl_mixture_of< dist_t >, vpdl_gaussian_sphere< T, n >, vpdl_gaussian_indep< T, n >, and vpdl_gaussian< T, n >.

template<class T, unsigned int n = 0>
virtual T vpdl_distribution< T, n >::prob_density ( const vector pt) const [inline, virtual, inherited]
template<class T , unsigned int n = 0>
virtual void vpdl_gaussian_base< T, n >::set_mean ( const vector mean) [pure virtual]

The documentation for this class was generated from the following file: