casa
$Rev:20696$
|
Makes a histogram from input values. More...
#include <HistAcc.h>
Public Member Functions | |
HistAcc (const uInt nBuff) | |
Constructors and destructor. | |
HistAcc (const uInt nBuff, const T width) | |
HistAcc (const T low, const T high, const T width) | |
HistAcc (const HistAcc &) | |
~HistAcc () | |
void | copy (const HistAcc &) |
Copy operations. | |
HistAcc & | operator= (const HistAcc &) |
void | put (const T v) |
Accumulate (put) value(s) into the histogram. | |
void | put (const Array< T > &vv) |
void | put (const Block< T > &vv) |
void | reset () |
Reset the contents of the bins to zero, but retain the current bin definition. | |
void | emptyBinsWithLessThan (const uInt nmin) |
Empty all bins whose contents is < nmin (e.g. | |
Fallible< T > | getPercentile (const Float p) |
The median is the 50-percentile (getPercentile(50)), i.e. | |
Fallible< T > | getMedian () |
Fallible< T > | getBinWidth () const |
All bins have the same width. | |
const StatAcc< T > & | getStatistics () |
Get the internal Statistics accumulator (see StatAcc,h). | |
Fallible< uInt > | getHistogram (Block< uInt > &bins, Block< T > &values) |
The return value is the nr of histogram bins, and is invalid if the number is zero. | |
uInt | getSpurious (uInt &tooSmall, uInt &tooLarge) |
Get the nr of `spurious' values, i.e. | |
void | printHistogram (ostream &, const String &caption) |
Print histogram. | |
Private Member Functions | |
void | put1 (const T) |
Accumulate a single value into the histogram. | |
void | defineBins (const T low, const T high, const T width) |
Definition of histogram bins with given parameters. | |
void | initBuffer (const uInt size) |
Internal helper functions for the automatic definition of histogram parameters, using the contents of itsBuffer. | |
void | putBuffer (const T v) |
void | clearBuffer () |
void | autoDefineBins () |
void | init () |
Other internal helper function(s). | |
Fallible< T > | getBinValue (const uInt index) const |
Private Attributes | |
Block< uInt > | itsBinContents |
Block< T > | itsBinHighLimit |
T | itsUserDefinedBinWidth |
StatAcc< T > | itsStatAcc |
Bool | itsAutoDefineMode |
Block< T > | itsBuffer |
uInt | itsBufferContents |
Makes a histogram from input values.
HistAcc stands for `Histogram Accumulator'.
Makes a histogram from input values. The histogram bin parameters may be defined, or determined from the first n input values. The input values are fed to HistAcc via the member function `put'. They can be fed individually, or in the form of an Array.
The histogram `bins' can be defined via the constructor in the form of loop variables: low bin, high bin, bin-width. It is also possible to let the bin parameters be determined automatically from the first n (e.g. n=50) input values. If the actual nr of input values is less than n when the histogram is interrogated in some way, the bin parameters will be determined from what is available.
It is usually convenient to let the bins be defined automatically:
Matrix<T> vv(30,100); // an array of input values vv = ... // fill the array HistAcc<T> h(25); // use the first 25 values to define bins h.put(vv); // accumulate values into histogram h.printHistogram(cout,"vv"); // print the histogram of vv Fallible<Double> median = h1.getMedian(); // return the median
In some cases the bin parameters are pre-defined:
Vector<T> vv(100,0); // a vector (array) of values vv = ... // fill the vector HistAcc<T> h(-10,20,3); // bins with width 3, between -10 and 20 h.put(vv); // accumulate values into histogram uInt n = h.getSpurious(l,h);// get the number outside the bins
The internal statistics accumulator can be interrogated explicitly or implicitly:
StatAcc<T> s = h.getStatistics(); // return the internal StatAcc Fallible<Double> mean = s.getMean(); // get the mean of the input values Fallible<Double> mean = h.getStatistics().getMean(); // alternative
casa::HistAcc< T >::HistAcc | ( | const uInt | nBuff | ) |
Constructors and destructor.
If the bin-parameters low, high and width (for lowest and highest bin, and binwidth) are not specified, they will be determined automatically from the first nBuff input values (which are stored in a temporary buffer).
casa::HistAcc< T >::HistAcc | ( | const uInt | nBuff, |
const T | width | ||
) |
casa::HistAcc< T >::HistAcc | ( | const T | low, |
const T | high, | ||
const T | width | ||
) |
casa::HistAcc< T >::HistAcc | ( | const HistAcc< T > & | ) |
casa::HistAcc< T >::~HistAcc | ( | ) | [inline] |
void casa::HistAcc< T >::autoDefineBins | ( | ) | [private] |
void casa::HistAcc< T >::clearBuffer | ( | ) | [private] |
void casa::HistAcc< T >::copy | ( | const HistAcc< T > & | ) |
Copy operations.
void casa::HistAcc< T >::defineBins | ( | const T | low, |
const T | high, | ||
const T | width | ||
) | [private] |
Definition of histogram bins with given parameters.
void casa::HistAcc< T >::emptyBinsWithLessThan | ( | const uInt | nmin | ) |
Empty all bins whose contents is < nmin (e.g.
nmin=2). This is useful to remove `noise' values from the histogram.
Fallible<T> casa::HistAcc< T >::getBinValue | ( | const uInt | index | ) | const [private] |
Fallible<T> casa::HistAcc< T >::getBinWidth | ( | ) | const |
All bins have the same width.
Fallible<uInt> casa::HistAcc< T >::getHistogram | ( | Block< uInt > & | bins, |
Block< T > & | values | ||
) |
The return value is the nr of histogram bins, and is invalid if the number is zero.
The given blocks/vectors are resized, and contain the contents and centre values of the bins.
Fallible<T> casa::HistAcc< T >::getMedian | ( | ) |
Fallible<T> casa::HistAcc< T >::getPercentile | ( | const Float | p | ) |
The median is the 50-percentile (getPercentile(50)), i.e.
the value which has 50 percent of the input values below it. Calculation takes into account the spurious input values, i.e. values that fell outside the bins.
uInt casa::HistAcc< T >::getSpurious | ( | uInt & | tooSmall, |
uInt & | tooLarge | ||
) |
Get the nr of `spurious' values, i.e.
the ones that fell outside the defined bins.
const StatAcc<T>& casa::HistAcc< T >::getStatistics | ( | ) |
Get the internal Statistics accumulator (see StatAcc,h).
It can be used to obtain statistics of the input values.
void casa::HistAcc< T >::init | ( | ) | [private] |
Other internal helper function(s).
void casa::HistAcc< T >::initBuffer | ( | const uInt | size | ) | [private] |
Internal helper functions for the automatic definition of histogram parameters, using the contents of itsBuffer.
HistAcc& casa::HistAcc< T >::operator= | ( | const HistAcc< T > & | ) |
void casa::HistAcc< T >::printHistogram | ( | ostream & | , |
const String & | caption | ||
) |
Print histogram.
void casa::HistAcc< T >::put | ( | const T | v | ) | [inline] |
void casa::HistAcc< T >::put | ( | const Array< T > & | vv | ) |
void casa::HistAcc< T >::put | ( | const Block< T > & | vv | ) |
void casa::HistAcc< T >::put1 | ( | const T | ) | [private] |
Accumulate a single value into the histogram.
void casa::HistAcc< T >::putBuffer | ( | const T | v | ) | [private] |
void casa::HistAcc< T >::reset | ( | ) |
Reset the contents of the bins to zero, but retain the current bin definition.
Bool casa::HistAcc< T >::itsAutoDefineMode [private] |
Block<uInt> casa::HistAcc< T >::itsBinContents [private] |
Block<T> casa::HistAcc< T >::itsBinHighLimit [private] |
Block<T> casa::HistAcc< T >::itsBuffer [private] |
uInt casa::HistAcc< T >::itsBufferContents [private] |
StatAcc<T> casa::HistAcc< T >::itsStatAcc [private] |
T casa::HistAcc< T >::itsUserDefinedBinWidth [private] |