Struct sampling::histogram::HistogramFloat
source · [−]pub struct HistogramFloat<T> { /* private fields */ }Expand description
Generic Histogram struct
Implementations
sourceimpl<T> HistogramFloat<T>
impl<T> HistogramFloat<T>
sourceimpl<T> HistogramFloat<T>where
T: Float + PartialOrd + FromPrimitive,
impl<T> HistogramFloat<T>where
T: Float + PartialOrd + FromPrimitive,
sourcepub fn new(left: T, right: T, bins: usize) -> Result<Self, HistErrors>
pub fn new(left: T, right: T, bins: usize) -> Result<Self, HistErrors>
Create a new Historgram
- right exclusive, left inclusive
- if you want
rightto behave (almost) the same as an inclusive border, consider usingnew(left, right + T::EPSILON, bins)(make sure, that adding Epsilon actually changes the value!)
sourcepub fn interval_length(&self) -> T
pub fn interval_length(&self) -> T
Returns the length of the interval
sourcepub fn bin_iter(&self) -> impl Iterator<Item = &[T; 2]>
pub fn bin_iter(&self) -> impl Iterator<Item = &[T; 2]>
Iterator over all the bins
In HistogramFloat a bin is defined by two values: The left border (inclusive) and the right border (exclusive)
Here you get an iterator which iterates over said borders. The Iterator returns a borrowed Array of length two, where the first value is the left (inclusive) border and the second value is the right (exclusive) border
Example
use sampling::histogram::*;
let hist = HistogramFloat::<f32>::new(0.0, 1.0, 2).unwrap();
let mut iter = hist.bin_iter();
assert_eq!(iter.next(), Some(&[0.0, 0.5]));
assert_eq!(iter.next(), Some(&[0.5, 1.0]));
assert_eq!(iter.next(), None);sourcepub fn bin_hits_iter(&self) -> impl Iterator<Item = (&[T; 2], usize)>
pub fn bin_hits_iter(&self) -> impl Iterator<Item = (&[T; 2], usize)>
Iterate over all bins
In HistogramFloat a bin is defined by two values: The left border (inclusive) and the right border (exclusive)
This Iterator iterates over these values as well as the corresponding hit count ( i.e., how often a bin was hit)
Item of Iterator
(&[left_border, right_border], number_of_hits)
Example
use sampling::histogram::*;
let mut hist = HistogramFloat::<f64>::new(0.0, 1.0, 2).unwrap();
hist.increment_quiet(0.5);
hist.increment_quiet(0.71253782387);
let mut iter = hist.bin_hits_iter();
assert_eq!(iter.next(), Some((&[0.0, 0.5], 0)));
assert_eq!(iter.next(), Some((&[0.5, 1.0], 2)));
assert_eq!(iter.next(), None);sourcepub fn increment<B: Borrow<T>>(&mut self, val: B) -> Result<usize, HistErrors>
pub fn increment<B: Borrow<T>>(&mut self, val: B) -> Result<usize, HistErrors>
Increment hit count of bin
This will increment the hit count of the bin corresponding to the value val.
If the bin was valid it will return the index of the corresponding bin
sourcepub fn increment_quiet<B: Borrow<T>>(&mut self, val: B)
pub fn increment_quiet<B: Borrow<T>>(&mut self, val: B)
Increment hit count
Increments the hit count of the bin corresponding to val.
If no bin corresponding to val exists, nothing happens
Trait Implementations
sourceimpl<T: Clone> Clone for HistogramFloat<T>
impl<T: Clone> Clone for HistogramFloat<T>
sourcefn clone(&self) -> HistogramFloat<T>
fn clone(&self) -> HistogramFloat<T>
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresourceimpl<T: Debug> Debug for HistogramFloat<T>
impl<T: Debug> Debug for HistogramFloat<T>
sourceimpl<'de, T> Deserialize<'de> for HistogramFloat<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for HistogramFloat<T>where
T: Deserialize<'de>,
sourcefn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
sourceimpl<T> From<AtomicHistogramFloat<T>> for HistogramFloat<T>
impl<T> From<AtomicHistogramFloat<T>> for HistogramFloat<T>
sourcefn from(other: AtomicHistogramFloat<T>) -> Self
fn from(other: AtomicHistogramFloat<T>) -> Self
sourceimpl<T> From<HistogramFloat<T>> for AtomicHistogramFloat<T>
impl<T> From<HistogramFloat<T>> for AtomicHistogramFloat<T>
sourcefn from(other: HistogramFloat<T>) -> Self
fn from(other: HistogramFloat<T>) -> Self
sourceimpl<T> Histogram for HistogramFloat<T>
impl<T> Histogram for HistogramFloat<T>
sourcefn count_multiple_index(
&mut self,
index: usize,
count: usize
) -> Result<(), HistErrors>
fn count_multiple_index(
&mut self,
index: usize,
count: usize
) -> Result<(), HistErrors>
self.hist[index] += count, Err() if index out of boundssourcefn count_index(&mut self, index: usize) -> Result<(), HistErrors>
fn count_index(&mut self, index: usize) -> Result<(), HistErrors>
self.hist[index] += 1, Err() if index out of boundssourcefn any_bin_zero(&self) -> bool
fn any_bin_zero(&self) -> bool
sourceimpl<T> HistogramIntervalDistance<T> for HistogramFloat<T>where
T: Float + FromPrimitive + Zero + NumCast,
impl<T> HistogramIntervalDistance<T> for HistogramFloat<T>where
T: Float + FromPrimitive + Zero + NumCast,
sourcefn interval_distance_overlap<V: Borrow<T>>(
&self,
val: V,
overlap: NonZeroUsize
) -> usize
fn interval_distance_overlap<V: Borrow<T>>(
&self,
val: V,
overlap: NonZeroUsize
) -> usize
sourceimpl<T> HistogramVal<T> for HistogramFloat<T>where
T: Float + Zero + NumCast,
impl<T> HistogramVal<T> for HistogramFloat<T>where
T: Float + Zero + NumCast,
sourcefn borders_clone(&self) -> Result<Vec<T>, HistErrors>
fn borders_clone(&self) -> Result<Vec<T>, HistErrors>
consider using self.borders()
sourcefn count_val<V: Borrow<T>>(&mut self, val: V) -> Result<usize, HistErrors>
fn count_val<V: Borrow<T>>(&mut self, val: V) -> Result<usize, HistErrors>
Ok(index), if inside of hist, Err(_) if val is invalidsourcefn distance<V: Borrow<T>>(&self, val: V) -> f64
fn distance<V: Borrow<T>>(&self, val: V) -> f64
sourcefn first_border(&self) -> T
fn first_border(&self) -> T
sourcefn second_last_border(&self) -> T
fn second_last_border(&self) -> T
let b = self.borders_clone().expect("overflow"); assert_eq!(self.second_last_border(), b[b.len()-2])sourcefn not_inside<V: Borrow<T>>(&self, val: V) -> bool
fn not_inside<V: Borrow<T>>(&self, val: V) -> bool
is_inside