use axon_encoder::prelude::*;
fn main() {
let mut encoder = DeltaEncoder::try_new(3.0, 2).expect("valid DeltaEncoder");
let readings: Vec<[f32; 2]> = vec![
[0.0, 10.0],
[1.0, 10.5], [5.0, 10.2], [5.5, 10.0], [1.0, 20.0], [1.5, 20.5], ];
println!("=== Delta Encoding ===");
println!("Threshold: 3.0\n");
for (step, input) in readings.iter().enumerate() {
let output = encoder.encode(input);
if output.spikes.is_empty() {
println!("Step {}: input {:?} -> no spikes", step, input);
} else {
for spike in &output.spikes {
let direction = if spike.polarity { "↑" } else { "↓" };
println!(
"Step {}: input {:?} -> SPIKE on channel {} {}",
step, input, spike.channel, direction
);
}
}
}
println!("\n--- encode_deltas_to_spikes utility ---");
let deltas = [0.1, -0.5, 3.2, -4.0, 0.8];
let threshold = 1.0;
let spikes = encode_deltas_to_spikes(&deltas, threshold);
println!("Deltas: {:?}", deltas);
println!("Threshold: {}", threshold);
println!("Spikes: {:?}", spikes);
}