pub struct TemporalEncoder { /* private fields */ }Expand description
Encodes temporal patterns by tracking history of values per channel.
Fires a spike when the rate of change exceeds configurable thresholds. Useful for detecting sudden changes or motion in sensor signals.
§Mathematical Model
Computes the difference between recent average (last 3 values) and older average (previous 3 values before that). A spike is generated when this change exceeds the threshold:
change = |mean(history[-3:]) - mean(history[-6:-3])|
spike if change > threshold§When to Use
- Detecting sudden changes in signal (edge detection)
- Motion detection in video or sensor streams
- Event-based encoding where changes are more important than absolute values
§Parameters
history_depth: How many past values to track per channelchange_thresholds: Vec of (threshold, spike_value) pairs - fires when change exceeds thresholdnum_channels: Number of input channels
§Examples
use axon_encoder::prelude::*;
// history_depth must be at least 6 for the dual-window change detector.
let mut enc = TemporalEncoder::try_new(6, vec![(0.5, 1)], 1)?;
for v in [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0] {
let _ = enc.encode_step(&[v]);
}Implementations§
Source§impl TemporalEncoder
impl TemporalEncoder
Sourcepub fn new(
history_depth: usize,
change_thresholds: Vec<(f32, u16)>,
num_channels: usize,
) -> Self
pub fn new( history_depth: usize, change_thresholds: Vec<(f32, u16)>, num_channels: usize, ) -> Self
Sourcepub fn try_new(
history_depth: usize,
change_thresholds: Vec<(f32, u16)>,
num_channels: usize,
) -> Result<Self, EncoderError>
pub fn try_new( history_depth: usize, change_thresholds: Vec<(f32, u16)>, num_channels: usize, ) -> Result<Self, EncoderError>
Creates a new TemporalEncoder, returning an EncoderError for invalid configuration.
Each threshold in change_thresholds must be finite and non-negative.
Sourcepub fn encode_with_modulators(
&mut self,
input: &[f32],
modulators: &NeuroModulators,
gain_curves: &NeuromodulatorGainCurves,
) -> EncodedOutput
pub fn encode_with_modulators( &mut self, input: &[f32], modulators: &NeuroModulators, gain_curves: &NeuromodulatorGainCurves, ) -> EncodedOutput
Encodes input using neuromodulator-driven gain curves.
Inherent wrapper so callers need not import ModulatedEncoder.
Sourcepub fn encode_step_with_modulators(
&mut self,
input: &[f32],
modulators: &NeuroModulators,
gain_curves: &NeuromodulatorGainCurves,
) -> EncodedOutput
pub fn encode_step_with_modulators( &mut self, input: &[f32], modulators: &NeuroModulators, gain_curves: &NeuromodulatorGainCurves, ) -> EncodedOutput
Step-wise variant of encode_with_modulators.
Trait Implementations§
Source§impl Clone for TemporalEncoder
impl Clone for TemporalEncoder
Source§fn clone(&self) -> TemporalEncoder
fn clone(&self) -> TemporalEncoder
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 TemporalEncoder
impl Debug for TemporalEncoder
Source§impl Encoder for TemporalEncoder
impl Encoder for TemporalEncoder
Source§fn encode(&mut self, input: &[f32]) -> EncodedOutput
fn encode(&mut self, input: &[f32]) -> EncodedOutput
Encodes a slice of analog values into spike events (batch mode).
Source§fn encode_step(&mut self, input: &[f32]) -> EncodedOutput
fn encode_step(&mut self, input: &[f32]) -> EncodedOutput
Encodes a single step incrementally (streaming mode). Read more
Source§impl ModulatedEncoder for TemporalEncoder
impl ModulatedEncoder for TemporalEncoder
Source§fn encode_with_gains(
&mut self,
input: &[f32],
gains: EncodingGains,
) -> EncodedOutput
fn encode_with_gains( &mut self, input: &[f32], gains: EncodingGains, ) -> EncodedOutput
Encodes input using already evaluated encoding gains. Read more
Source§fn encode_step_with_gains(
&mut self,
input: &[f32],
gains: EncodingGains,
) -> EncodedOutput
fn encode_step_with_gains( &mut self, input: &[f32], gains: EncodingGains, ) -> EncodedOutput
Encodes one streaming step using already evaluated encoding gains. Read more
Source§fn encode_with_modulators(
&mut self,
input: &[f32],
modulators: &NeuroModulators,
gain_curves: &NeuromodulatorGainCurves,
) -> EncodedOutput
fn encode_with_modulators( &mut self, input: &[f32], modulators: &NeuroModulators, gain_curves: &NeuromodulatorGainCurves, ) -> EncodedOutput
Encodes input using neuromodulator-driven gain curves.
Source§fn encode_step_with_modulators(
&mut self,
input: &[f32],
modulators: &NeuroModulators,
gain_curves: &NeuromodulatorGainCurves,
) -> EncodedOutput
fn encode_step_with_modulators( &mut self, input: &[f32], modulators: &NeuroModulators, gain_curves: &NeuromodulatorGainCurves, ) -> EncodedOutput
Encodes one streaming step using neuromodulator-driven gain curves.
Source§impl PartialEq for TemporalEncoder
impl PartialEq for TemporalEncoder
impl StructuralPartialEq for TemporalEncoder
Auto Trait Implementations§
impl Freeze for TemporalEncoder
impl RefUnwindSafe for TemporalEncoder
impl Send for TemporalEncoder
impl Sync for TemporalEncoder
impl Unpin for TemporalEncoder
impl UnsafeUnpin for TemporalEncoder
impl UnwindSafe for TemporalEncoder
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