00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __CONDITIONAL_GAUSSIAN__
00021 #define __CONDITIONAL_GAUSSIAN__
00022
00023 #include "conditionalpdf.h"
00024
00025 namespace BFL
00026 {
00028
00040 class ConditionalGaussian : public ConditionalPdf<MatrixWrapper::ColumnVector, MatrixWrapper::ColumnVector>
00041 {
00042 public:
00044
00049 ConditionalGaussian(int dim = 0, int num_conditional_arguments=0);
00050
00051
00052
00054 virtual ~ConditionalGaussian();
00055
00057 virtual ConditionalGaussian* Clone() const;
00058
00059
00060 virtual Probability ProbabilityGet(const MatrixWrapper::ColumnVector& input) const;
00061 virtual bool SampleFrom (Sample<MatrixWrapper::ColumnVector>& sample, int method=DEFAULT, void * args=NULL) const;
00062 virtual bool SampleFrom (std::vector<Sample<MatrixWrapper::ColumnVector> >& samples, const int num_samples,
00063 int method=DEFAULT, void * args=NULL) const;
00064
00065 protected:
00066
00067 mutable ColumnVector _diff;
00068 mutable ColumnVector _Mu;
00069 mutable Matrix _Low_triangle;
00070 mutable ColumnVector _samples;
00071 mutable ColumnVector _SampleValue;
00072
00073 };
00074
00075 }
00076
00077 #endif // __CONDITIONAL_GAUSSIAN__
00078