use ndarray::{Array1, Array2, Axis};
use crate::estimators::traits::{GlobalValue, LocalValues};
use super::mle::DiscreteEntropy;
use crate::estimators::approaches::ordinal::ordinal_utils::symbolize_series_compact;
pub struct OrdinalEntropy {
inner: DiscreteEntropy,
pub order: usize,
pub delay: usize,
}
impl OrdinalEntropy {
pub fn new(data: Array1<f64>, order: usize, delay: usize) -> Self {
let codes: Array1<i32> = symbolize_series_compact(&data, order, delay, true);
let inner = DiscreteEntropy::new(codes);
Self { inner, order, delay }
}
}
impl GlobalValue for OrdinalEntropy {
fn global_value(&self) -> f64 {
self.inner.global_value()
}
}
impl LocalValues for OrdinalEntropy {
fn local_values(&self) -> Array1<f64> {
self.inner.local_values()
}
}