Next: Histogram allocation, Up: Histograms [Index]

A histogram is defined by the following struct,

- Data Type:
**gsl_histogram** `size_t n`

This is the number of histogram bins

`double * range`

The ranges of the bins are stored in an array of

elements pointed to by`n`+1`range`.`double * bin`

The counts for each bin are stored in an array of

`n`elements pointed to by`bin`. The bins are floating-point numbers, so you can increment them by non-integer values if necessary.

The range for `bin`[i] is given by `range`[i] to
`range`[i+1]. For *n* bins there are *n+1* entries in the
array `range`. Each bin is inclusive at the lower end and exclusive
at the upper end. Mathematically this means that the bins are defined by
the following inequality,

bin[i] corresponds to range[i] <= x < range[i+1]

Here is a diagram of the correspondence between ranges and bins on the
number-line for *x*,

[ bin[0] )[ bin[1] )[ bin[2] )[ bin[3] )[ bin[4] ) ---|---------|---------|---------|---------|---------|--- x r[0] r[1] r[2] r[3] r[4] r[5]

In this picture the values of the `range` array are denoted by
*r*. On the left-hand side of each bin the square bracket
‘`[`’ denotes an inclusive lower bound
(*r <= x*), and the round parentheses ‘`)`’ on the right-hand
side denote an exclusive upper bound (*x < r*). Thus any samples
which fall on the upper end of the histogram are excluded. If you want
to include this value for the last bin you will need to add an extra bin
to your histogram.

The `gsl_histogram`

struct and its associated functions are defined
in the header file `gsl_histogram.h`.

Next: Histogram allocation, Up: Histograms [Index]