vpdl_distribution< T, n > Class Template Reference

The base class for all probability distributions. More...

`#include <vpdl_distribution.h>`

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

List of all members.

Public Types

typedef vpdt_field_default< T,
n >::type
field_type
the data type used for vectors.
typedef vpdt_field_default< T,
n >::type
vector
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_distribution ()
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_distribution< T, n >

The base class for all probability distributions.

There is a distinct polymorphic class hierarchy for each choice of template parameters. The vector and matrix data types vary with both `T` and `n`.

Template Parameters:
 T is the scalar type use for numerical calculations (generally double or float) n is the fixed dimension of the space with special case 0 (the default) indicating dynamic dimension set at run time. For n > 1 the data types are vnl_vector_fixed and vnl_matrix_fixed For n == 1 the data types are T and T For n == 0 the data types are vnl_vector and vnl_matrix

Definition at line 30 of file vpdl_distribution.h.

Member Typedef Documentation

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

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::matrix_type vpdl_distribution< T, n >::matrix

the data type used for matrices.

Definition at line 41 of file vpdl_distribution.h.

template<class T, unsigned int n = 0>
 typedef vpdt_field_default::type vpdl_distribution< T, n >::vector

the data type used for vectors.

Definition at line 39 of file vpdl_distribution.h.

Constructor & Destructor Documentation

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

Definition at line 33 of file vpdl_distribution.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]`

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.

Definition at line 86 of file vpdl_distribution.txx.

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

Create a copy on the heap and return base class pointer.

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

Compute the covariance of the distribution.

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

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

Compute the mean of the distribution.

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

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

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.
template<class T, unsigned int n = 0>
 virtual T vpdl_distribution< T, n >::density ( const vector & pt ) const` [pure virtual]`

Evaluate the unnormalized density at a point.

Note:
This is not a probability density. To make this a probability multiply by norm_const()
prob_density
template<class T, unsigned int n = 0>
 virtual unsigned int vpdl_distribution< T, n >::dimension ( ) const` [pure virtual]`

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

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

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:
template<class T, unsigned int n>
 vpdl_distribution< T, n >::vector vpdl_distribution< T, n >::inverse_cdf ( const T & p ) const` [virtual]`

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]`

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 T vpdl_distribution< T, n >::norm_const ( ) const` [pure virtual]`

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

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

Evaluate the probability density at a point.

Definition at line 56 of file vpdl_distribution.h.

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