[−][src]Struct plr::GreedyPLR
Performs a greedy piecewise linear regression (PLR) in an online fashion. This approach uses constant
time for each call to process as well as constant space. Note that, due to the
greedy nature of the algorithm, more regression segments may be created than strictly needed. For
PLR with a minimal number of segments, please see OptimalPLR.
Each call to process consumes a single point. Each time it is called,
process returns either a Segment representing
a piece of the final regression, or None. If your stream of points terminates, you can call
finish to flush the buffer and return the final segment.
Example
use plr::GreedyPLR; // first, generate some data points... let mut data = Vec::new(); for i in 0..1000 { let x = (i as f64) / 1000.0 * 7.0; let y = f64::sin(x); data.push((x, y)); } let mut plr = GreedyPLR::new(0.0005); // gamma = 0.0005, the maximum regression error let mut segments = Vec::new(); for (x, y) in data { // when `process` returns a segment, we should add it to our list if let Some(segment) = plr.process(x, y) { segments.push(segment); } } // because we have a finite amount of data, we flush the buffer and get the potential // last segment. if let Some(segment) = plr.finish() { segments.push(segment); } // the `segments` vector now contains all segments for this regression.
Methods
impl GreedyPLR[src]
pub fn new(gamma: f64) -> GreedyPLR[src]
Enables performing PLR using a greedy algorithm with a fixed gamma (maximum error).
Examples
To perform a greedy PLR with a maximum error of 0.05:
use plr::GreedyPLR; let plr = GreedyPLR::new(0.05);
pub fn process(&mut self, x: f64, y: f64) -> Option<Segment>[src]
Processes a single point using the greedy PLR algorithm. This function returns
a new Segment when the current segment cannot accommodate
the passed point, and returns None if the current segment could be (greedily) adjusted to
fit the point.
pub fn finish(self) -> Option<Segment>[src]
Terminates the PLR process, returning a final segment if required.
Auto Trait Implementations
impl Send for GreedyPLR
impl Sync for GreedyPLR
impl Unpin for GreedyPLR
impl UnwindSafe for GreedyPLR
impl RefUnwindSafe for GreedyPLR
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>, [src]
U: From<T>,
impl<T> From<T> for T[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>, [src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]
impl<T> Borrow<T> for T where
T: ?Sized, [src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T[src]
impl<T> Any for T where
T: 'static + ?Sized, [src]
T: 'static + ?Sized,