pub struct TermanWangOscillator {
pub v: f64,
pub w: f64,
pub alpha: f64,
pub beta: f64,
pub epsilon: f64,
pub rho: f64,
pub dt: f64,
pub v_peak: f64,
}Expand description
Terman-Wang oscillator — segmentation by oscillatory correlation.
Fields§
§v: f64§w: f64§alpha: f64§beta: f64§epsilon: f64§rho: f64§dt: f64§v_peak: f64Implementations§
Source§impl TermanWangOscillator
impl TermanWangOscillator
pub fn new() -> Self
fn valid_numeric_contract(&self) -> bool
fn derivatives(&self, v: f64, w: f64, current: f64) -> Option<(f64, f64)>
fn rk4_candidate(&self, current: f64) -> Option<(f64, f64)>
pub fn step(&mut self, current: f64) -> i32
Sourcepub fn simulate(&mut self, n_steps: usize, current: f64) -> (Vec<f64>, i64)
pub fn simulate(&mut self, n_steps: usize, current: f64) -> (Vec<f64>, i64)
Run n_steps RK4 updates under a constant input, returning the v trace
and the upward-v_peak-crossing spike count. Reuses step; the cubic uses
v.powi(3) = v*v*v (matching the Python v*v*v). The hyperbolic-tangent
gating resolves to the same glibc tanh as the Python reference on Linux,
so this backend is bit-identical there. The final state is left in
self.v / self.w.
pub fn reset(&mut self)
Trait Implementations§
Source§impl Clone for TermanWangOscillator
impl Clone for TermanWangOscillator
Source§fn clone(&self) -> TermanWangOscillator
fn clone(&self) -> TermanWangOscillator
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for TermanWangOscillator
impl Debug for TermanWangOscillator
Auto Trait Implementations§
impl Freeze for TermanWangOscillator
impl RefUnwindSafe for TermanWangOscillator
impl Send for TermanWangOscillator
impl Sync for TermanWangOscillator
impl Unpin for TermanWangOscillator
impl UnsafeUnpin for TermanWangOscillator
impl UnwindSafe for TermanWangOscillator
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.