Public Member Functions | Protected Member Functions | Private Attributes
pdf1d_flat Class Reference

Class for univariate flat distributions: p(x)=1/(hi-lo) in [lo,hi]. More...

#include <pdf1d_flat.h>

Inheritance diagram for pdf1d_flat:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 pdf1d_flat ()
 Dflt ctor (creates flat distribution in range [0,1]).
 pdf1d_flat (double lo, double hi)
 Dflt ctor (creates flat distribution in range [lo,hi]).
virtual ~pdf1d_flat ()
 Destructor.
double sd () const
 Return standard deviation.
void set (double lo, double hi)
 Creates flat distribution in range [lo,hi].
double lo () const
 Lower limit of range.
double hi () const
 Upper limit of range.
virtual pdf1d_samplernew_sampler () const
 Create a sampler object on the heap.
virtual double operator() (double x) const
 Probability density at x.
virtual double log_p (double x) const
 Log of probability density at x.
virtual double cdf (double x) const
 Cumulative Probability (P(x'<x) for x' drawn from the distribution).
virtual bool cdf_is_analytic () const
 Return true if cdf() uses an analytic implementation.
virtual double gradient (double x, double &p) const
 Gradient of PDF at x.
virtual double log_prob_thresh (double pass_proportion) const
 Compute threshold for PDF to pass a given proportion.
virtual double nearest_plausible (double x, double log_p_min) const
 Compute nearest point to x which has a density above a threshold.
short version_no () const
 Version number for I/O.
virtual vcl_string is_a () const
 Name of the class.
virtual bool is_class (vcl_string const &s) const
 Does the name of the class match the argument?.
virtual pdf1d_pdfclone () const
 Create a copy on the heap and return base class pointer.
virtual void print_summary (vcl_ostream &os) const
 Print class to os.
virtual void b_write (vsl_b_ostream &bfs) const
 Save class to binary file stream.
virtual void b_read (vsl_b_istream &bfs)
 Load class from binary file stream.
double mean () const
 Mean of distribution.
double variance () const
 Variance of each dimension.
virtual int n_peaks () const
 Number of peaks of distribution.
virtual double peak (int) const
 Position of the i'th peak.
virtual double inverse_cdf (double P) const
 The inverse cdf.
virtual bool is_valid_pdf () const
 Return true if the object represents a valid PDF.
void get_samples (vnl_vector< double > &x) const
 Fill x with samples drawn from distribution.
bool write_plot_file (const vcl_string &plot_file, double min_x, double max_x, int n) const
 Write values (x,p(x)) to text file suitable for plotting.

Protected Member Functions

void set_mean (double m)
void set_variance (double v)

Private Attributes

double lo_
double hi_
double p_
double log_p_

Detailed Description

Class for univariate flat distributions: p(x)=1/(hi-lo) in [lo,hi].

In range [lo,hi] p(x)=1/(hi-lo)

Definition at line 16 of file pdf1d_flat.h.


Constructor & Destructor Documentation

pdf1d_flat::pdf1d_flat ( )

Dflt ctor (creates flat distribution in range [0,1]).

Definition at line 19 of file pdf1d_flat.cxx.

pdf1d_flat::pdf1d_flat ( double  lo,
double  hi 
)

Dflt ctor (creates flat distribution in range [lo,hi]).

Definition at line 24 of file pdf1d_flat.cxx.

pdf1d_flat::~pdf1d_flat ( ) [virtual]

Destructor.

Definition at line 31 of file pdf1d_flat.cxx.


Member Function Documentation

void pdf1d_flat::b_read ( vsl_b_istream bfs) [virtual]

Load class from binary file stream.

Implements pdf1d_pdf.

Definition at line 185 of file pdf1d_flat.cxx.

void pdf1d_flat::b_write ( vsl_b_ostream bfs) const [virtual]

Save class to binary file stream.

Implements pdf1d_pdf.

Definition at line 173 of file pdf1d_flat.cxx.

double pdf1d_flat::cdf ( double  x) const [virtual]

Cumulative Probability (P(x'<x) for x' drawn from the distribution).

Reimplemented from pdf1d_pdf.

Definition at line 79 of file pdf1d_flat.cxx.

bool pdf1d_flat::cdf_is_analytic ( ) const [virtual]

Return true if cdf() uses an analytic implementation.

Default is false, as the base implementation is to draw samples from the distribution randomly to estimate cdf(x)

Reimplemented from pdf1d_pdf.

Definition at line 89 of file pdf1d_flat.cxx.

pdf1d_pdf * pdf1d_flat::clone ( ) const [virtual]

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

Implements pdf1d_pdf.

Definition at line 154 of file pdf1d_flat.cxx.

void pdf1d_pdf::get_samples ( vnl_vector< double > &  x) const [inherited]

Fill x with samples drawn from distribution.

Utility function. This calls new_sampler() to do the work, then deletes the sampler again. If you intend calling this repeatedly, create a sampler yourself.

Definition at line 132 of file pdf1d_pdf.cxx.

double pdf1d_flat::gradient ( double  x,
double &  p 
) const [virtual]

Gradient of PDF at x.

Implements pdf1d_pdf.

Definition at line 97 of file pdf1d_flat.cxx.

double pdf1d_flat::hi ( ) const [inline]

Upper limit of range.

Definition at line 42 of file pdf1d_flat.h.

double pdf1d_pdf::inverse_cdf ( double  P) const [virtual, inherited]

The inverse cdf.

The inverse cumulative distribution function.

The value of x: P(x'<x) = P for x' drawn from distribution pdf. The default version of this algorithm uses sampling if !cdf_is_analytic(), and Newton-Raphson root finding otherwise.

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

Reimplemented in pdf1d_kernel_pdf.

Definition at line 288 of file pdf1d_pdf.cxx.

vcl_string pdf1d_flat::is_a ( ) const [virtual]

Name of the class.

Reimplemented from pdf1d_pdf.

Definition at line 126 of file pdf1d_flat.cxx.

bool pdf1d_flat::is_class ( vcl_string const &  s) const [virtual]

Does the name of the class match the argument?.

Reimplemented from pdf1d_pdf.

Definition at line 136 of file pdf1d_flat.cxx.

bool pdf1d_pdf::is_valid_pdf ( ) const [virtual, inherited]

Return true if the object represents a valid PDF.

This will return false, if n_dims() is 0, for example just ofter default construction.

Reimplemented in pdf1d_mixture.

Definition at line 126 of file pdf1d_pdf.cxx.

double pdf1d_flat::lo ( ) const [inline]

Lower limit of range.

Definition at line 39 of file pdf1d_flat.h.

double pdf1d_flat::log_p ( double  x) const [virtual]

Log of probability density at x.

This value is also the Normalised Mahalanobis distance from the centroid to the given vector.

Implements pdf1d_pdf.

Definition at line 72 of file pdf1d_flat.cxx.

double pdf1d_flat::log_prob_thresh ( double  pass_proportion) const [virtual]

Compute threshold for PDF to pass a given proportion.

Reimplemented from pdf1d_pdf.

Definition at line 108 of file pdf1d_flat.cxx.

double pdf1d_pdf::mean ( ) const [inline, inherited]

Mean of distribution.

Definition at line 42 of file pdf1d_pdf.h.

virtual int pdf1d_pdf::n_peaks ( ) const [inline, virtual, inherited]

Number of peaks of distribution.

Definition at line 48 of file pdf1d_pdf.h.

double pdf1d_flat::nearest_plausible ( double  x,
double  log_p_min 
) const [virtual]

Compute nearest point to x which has a density above a threshold.

If log_p(x)>log_p_min then x returned unchanged. Otherwise x is moved (typically up the gradient) until log_p(x)>=log_p_min.

Parameters:
xThis may be modified to the nearest plausible position.
log_p_minlower threshold for log_p(x)

Implements pdf1d_pdf.

Definition at line 115 of file pdf1d_flat.cxx.

pdf1d_sampler * pdf1d_flat::new_sampler ( ) const [virtual]

Create a sampler object on the heap.

Caller is responsible for deletion.

Implements pdf1d_pdf.

Definition at line 55 of file pdf1d_flat.cxx.

double pdf1d_flat::operator() ( double  x) const [virtual]

Probability density at x.

Reimplemented from pdf1d_pdf.

Definition at line 64 of file pdf1d_flat.cxx.

virtual double pdf1d_pdf::peak ( int  ) const [inline, virtual, inherited]

Position of the i'th peak.

Definition at line 51 of file pdf1d_pdf.h.

void pdf1d_flat::print_summary ( vcl_ostream &  os) const [virtual]

Print class to os.

Implements pdf1d_pdf.

Definition at line 164 of file pdf1d_flat.cxx.

double pdf1d_flat::sd ( ) const [inline]

Return standard deviation.

Definition at line 33 of file pdf1d_flat.h.

void pdf1d_flat::set ( double  lo,
double  hi 
)

Creates flat distribution in range [lo,hi].

Initialise.

Definition at line 38 of file pdf1d_flat.cxx.

void pdf1d_pdf::set_mean ( double  m) [inline, protected, inherited]

Reimplemented in pdf1d_gaussian.

Definition at line 31 of file pdf1d_pdf.h.

void pdf1d_pdf::set_variance ( double  v) [inline, protected, inherited]

Definition at line 32 of file pdf1d_pdf.h.

double pdf1d_pdf::variance ( ) const [inline, inherited]

Variance of each dimension.

Definition at line 45 of file pdf1d_pdf.h.

short pdf1d_flat::version_no ( ) const

Version number for I/O.

Reimplemented from pdf1d_pdf.

Definition at line 145 of file pdf1d_flat.cxx.

bool pdf1d_pdf::write_plot_file ( const vcl_string &  plot_file,
double  min_x,
double  max_x,
int  n 
) const [inherited]

Write values (x,p(x)) to text file suitable for plotting.

Evaluate pdf at n points in range [min_x,max_x] and write a text file, each line of which is {x p(x)}, suitable for plotting with many graph packages

Definition at line 142 of file pdf1d_pdf.cxx.


Member Data Documentation

double pdf1d_flat::hi_ [private]

Definition at line 18 of file pdf1d_flat.h.

double pdf1d_flat::lo_ [private]

Definition at line 18 of file pdf1d_flat.h.

double pdf1d_flat::log_p_ [private]

Definition at line 20 of file pdf1d_flat.h.

double pdf1d_flat::p_ [private]

Definition at line 19 of file pdf1d_flat.h.


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