Bayesian Filtering Library Generated from SVN r
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
DiscreteConditionalPdf Class Reference

Class representing all FULLY Discrete Conditional PDF's. More...

#include <discreteconditionalpdf.h>

Inheritance diagram for DiscreteConditionalPdf:
ConditionalPdf< int, int > Pdf< T >

Public Member Functions

 DiscreteConditionalPdf (int num_states=1, int num_conditional_arguments=1, int cond_arg_dimensions[]=NULL)
 Constructor.
 
 DiscreteConditionalPdf (const DiscreteConditionalPdf &pdf)
 Copy constructor.
 
virtual ~DiscreteConditionalPdf ()
 Destructor.
 
virtual DiscreteConditionalPdfClone () const
 Clone function.
 
unsigned int NumStatesGet () const
 Get the number of discrete states.
 
Probability ProbabilityGet (const int &input) const
 
virtual bool SampleFrom (Sample< int > &one_sample, const SampleMthd method, void *args) const
 
virtual bool SampleFrom (vector< Sample< int > > &list_samples, unsigned int num_samples, const SampleMthd method, void *args) const
 
void ProbabilitySet (const double &prob, const int &input, const std::vector< int > &condargs) const
 Set the probability (Typical for discrete Pdf's)
 
unsigned int NumConditionalArgumentsGet () const
 Get the Number of conditional arguments.
 
virtual void NumConditionalArgumentsSet (unsigned int numconditionalarguments)
 Set the Number of conditional arguments.
 
const std::vector< int > & ConditionalArgumentsGet () const
 Get the whole list of conditional arguments.
 
virtual void ConditionalArgumentsSet (std::vector< int > ConditionalArguments)
 Set the whole list of conditional arguments.
 
const int & ConditionalArgumentGet (unsigned int n_argument) const
 Get the n-th argument of the list.
 
virtual void ConditionalArgumentSet (unsigned int n_argument, const int &argument)
 Set the n-th argument of the list.
 
virtual bool SampleFrom (vector< Sample< T > > &list_samples, const unsigned int num_samples, const SampleMthd method=SampleMthd::DEFAULT, void *args=NULL) const
 Draw multiple samples from the Pdf (overloaded)
 
virtual bool SampleFrom (Sample< T > &one_sample, const SampleMthd method=SampleMthd::DEFAULT, void *args=NULL) const
 Draw 1 sample from the Pdf:
 
virtual Probability ProbabilityGet (const T &input) const
 Get the probability of a certain argument.
 
unsigned int DimensionGet () const
 Get the dimension of the argument.
 
virtual void DimensionSet (unsigned int dim)
 Set the dimension of the argument.
 
virtual T ExpectedValueGet () const
 Get the expected value E[x] of the pdf.
 
virtual MatrixWrapper::SymmetricMatrix CovarianceGet () const
 Get the Covariance Matrix E[(x - E[x])^2] of the Analytic pdf.
 

Protected Member Functions

int IndexGet (const int &input, const std::vector< int > &condargs) const
 Get the correct index in the row of doubles (double * probability)
 

Protected Attributes

unsigned int _num_states
 number of discrete states
 
double * _probability_p
 Pointer to the probability values.
 
int * _cond_arg_dims_p
 "Possible discrete states" of all the conditional arguments
 
int _total_dimension
 Total dimension of the likelihoodtable.
 
std::vector< double > _probs
 
std::vector< double > _valuelist
 

Detailed Description

Class representing all FULLY Discrete Conditional PDF's.

This class inherits only from ConditionalPdf (not from DiscretePdf, avoiding a circular class structure

      ------
      |    |
      ------
     /      \
-----        -----
|   |        |   |
-----        -----
     \      /
      ------
      |    |
      ------
Todo:
Check if this is the best way to implement this.
Note
that the name of this class could be better chosen. Something like Discrete-DiscreteConditionalPdf would maybe be more clear (???), but quite long...
See also
ConditionalPdf

Definition at line 53 of file discreteconditionalpdf.h.

Constructor & Destructor Documentation

◆ DiscreteConditionalPdf()

DiscreteConditionalPdf ( int  num_states = 1,
int  num_conditional_arguments = 1,
int  cond_arg_dimensions[] = NULL 
)

Constructor.

Precondition
The number of elements of cond_arg_dimensions should be equal to num_conditional_arguments, otherwise -> Segfaults
Parameters
num_statesint representing the number of possible states
num_conditional_argumentsthe number of arguments behind the |
cond_arg_dimensions[]possible number of states of the different conditional arguments
See also
ConditionalPdf
Todo:
Get cleaner api and implementation

Member Function Documentation

◆ Clone()

virtual DiscreteConditionalPdf * Clone ( ) const
virtual

Clone function.

Reimplemented from ConditionalPdf< int, int >.

◆ ConditionalArgumentGet()

const int & ConditionalArgumentGet ( unsigned int  n_argument) const
inherited

Get the n-th argument of the list.

Returns
The current value of the n-th conditional argument (starting from 0!)

Definition at line 97 of file conditionalpdf.h.

◆ ConditionalArgumentSet()

void ConditionalArgumentSet ( unsigned int  n_argument,
const int &  argument 
)
virtualinherited

Set the n-th argument of the list.

Parameters
n_argumentwhich one of the conditional arguments
argumentvalue of the n-th argument

Definition at line 104 of file conditionalpdf.h.

◆ ConditionalArgumentsGet()

const std::vector< int > & ConditionalArgumentsGet
inherited

Get the whole list of conditional arguments.

Returns
an STL-vector containing all the current values of the conditional arguments

Definition at line 85 of file conditionalpdf.h.

◆ ConditionalArgumentsSet()

void ConditionalArgumentsSet ( std::vector< int >  ConditionalArguments)
virtualinherited

Set the whole list of conditional arguments.

Parameters
ConditionalArgumentsan STL-vector of type
T
containing the condtional arguments

Definition at line 91 of file conditionalpdf.h.

◆ CovarianceGet()

MatrixWrapper::SymmetricMatrix CovarianceGet
virtualinherited

Get the Covariance Matrix E[(x - E[x])^2] of the Analytic pdf.

Get first order statistic (Covariance) of this AnalyticPdf

Returns
The Covariance of the Pdf (a SymmetricMatrix of dim DIMENSION)
Todo:
extend this more general to n-th order statistic
Bug:
Discrete pdfs should not be able to use this!

Reimplemented in AnalyticConditionalGaussianAdditiveNoise, ConditionalGaussianAdditiveNoise, FilterProposalDensity, Gaussian, MCPdf< T >, Mixture< T >, NonLinearAnalyticConditionalGaussian_Ginac, and OptimalImportanceDensity.

Definition at line 222 of file pdf.h.

◆ DimensionGet()

unsigned int DimensionGet
inlineinherited

Get the dimension of the argument.

Returns
the dimension of the argument

Definition at line 166 of file pdf.h.

◆ DimensionSet()

void DimensionSet ( unsigned int  dim)
virtualinherited

Set the dimension of the argument.

Parameters
dimthe dimension

Reimplemented in Gaussian.

Definition at line 172 of file pdf.h.

◆ ExpectedValueGet()

T ExpectedValueGet
virtualinherited

Get the expected value E[x] of the pdf.

Get low order statistic (Expected Value) of this AnalyticPdf

Returns
The Expected Value of the Pdf (a ColumnVector with DIMENSION rows)
Note
No set functions here! This can be useful for analytic functions, but not for sample based representations!
For certain discrete Pdfs, this function has no meaning, what is the average between yes and no?

Reimplemented in FilterProposalDensity, Gaussian, LinearAnalyticConditionalGaussian, MCPdf< T >, Mixture< T >, NonLinearAnalyticConditionalGaussian_Ginac, and OptimalImportanceDensity.

Definition at line 212 of file pdf.h.

◆ NumConditionalArgumentsGet()

unsigned int NumConditionalArgumentsGet
inlineinherited

Get the Number of conditional arguments.

Returns
the number of conditional arguments

Definition at line 71 of file conditionalpdf.h.

◆ NumConditionalArgumentsSet()

void NumConditionalArgumentsSet ( unsigned int  numconditionalarguments)
inlinevirtualinherited

Set the Number of conditional arguments.

Parameters
numconditionalargumentsthe number of conditionalarguments
Bug:
will probably give rise to memory allocation problems if you herit from this class and do not redefine this method.

Definition at line 79 of file conditionalpdf.h.

◆ ProbabilityGet()

Probability ProbabilityGet ( const T &  input) const
virtualinherited

Get the probability of a certain argument.

Parameters
inputT argument of the Pdf
Returns
the probability value of the argument

Reimplemented in DiscretePdf, Gaussian, Uniform, and Mixture< T >.

Definition at line 204 of file pdf.h.

◆ SampleFrom() [1/2]

bool SampleFrom ( Sample< T > &  one_sample,
const SampleMthd  method = SampleMthd::DEFAULT,
void *  args = NULL 
) const
virtualinherited

Draw 1 sample from the Pdf:

There's no need to create a list for only 1 sample!

Parameters
one_samplesample that will contain result of sampling
methodSampling method to be used. Each sampling method is currently represented by an enum, eg. SampleMthd::BOXMULLER
argsPointer to a struct representing extra sample arguments
See also
SampleFrom()
Bug:
Sometimes the compiler doesn't know which method to choose!

Reimplemented in DiscretePdf, Gaussian, Uniform, MCPdf< T >, and Mixture< T >.

Definition at line 194 of file pdf.h.

◆ SampleFrom() [2/2]

bool SampleFrom ( vector< Sample< T > > &  list_samples,
const unsigned int  num_samples,
const SampleMthd  method = SampleMthd::DEFAULT,
void *  args = NULL 
) const
virtualinherited

Draw multiple samples from the Pdf (overloaded)

Parameters
list_sampleslist of samples that will contain result of sampling
num_samplesNumber of Samples to be drawn (iid)
methodSampling method to be used. Each sampling method is currently represented by an enum eg. SampleMthd::BOXMULLER
argsPointer to a struct representing extra sample arguments. "Sample Arguments" can be anything (the number of steps a gibbs-iterator should take, the interval width in MCMC, ... (or nothing), so it is hard to give a meaning to what exactly Sample Arguments should represent...
Todo:
replace the C-call "void * args" by a more object-oriented structure: Perhaps something like virtual Sample * Sample (const int num_samples,class Sampler)
Bug:
Sometimes the compiler doesn't know which method to choose!

Reimplemented in DiscretePdf, Gaussian, Uniform, MCPdf< T >, and Mixture< T >.

Definition at line 179 of file pdf.h.

Referenced by MCPdf< T >::SampleFrom(), and Mixture< T >::SampleFrom().

Member Data Documentation

◆ _cond_arg_dims_p

int* _cond_arg_dims_p
protected

"Possible discrete states" of all the conditional arguments

Definition at line 65 of file discreteconditionalpdf.h.

◆ _num_states

unsigned int _num_states
protected

number of discrete states

Definition at line 57 of file discreteconditionalpdf.h.

◆ _probability_p

double* _probability_p
protected

Pointer to the probability values.

For now we implement this using a simple row of doubles, this should probably become a tensor in the future

Definition at line 63 of file discreteconditionalpdf.h.

◆ _probs

std::vector<double> _probs
mutableprotected

Definition at line 75 of file discreteconditionalpdf.h.

◆ _total_dimension

int _total_dimension
protected

Total dimension of the likelihoodtable.

Definition at line 68 of file discreteconditionalpdf.h.

◆ _valuelist

std::vector<double> _valuelist
mutableprotected

Definition at line 76 of file discreteconditionalpdf.h.


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