use axon_encoder::prelude::*;
fn main() {
let mut encoder =
TemporalEncoder::try_new(10, vec![(2.0, 1), (5.0, 2)], 2).expect("valid TemporalEncoder");
let stable_readings = [[1.0, 5.0], [1.1, 5.1], [1.0, 4.9], [1.2, 5.0], [1.0, 5.2]];
let spike_readings = [
[8.0, 5.0], [9.0, 5.1],
[8.5, 12.0], ];
println!("=== Temporal Encoding ===\n");
println!("--- Stable phase ---");
for (i, input) in stable_readings.iter().enumerate() {
let output = encoder.encode(input);
println!("Step {}: {} spike(s)", i, output.spikes.len());
}
println!("\n--- Change phase ---");
for (i, input) in spike_readings.iter().enumerate() {
let output = encoder.encode(input);
let details: Vec<String> = output
.spikes
.iter()
.map(|s| format!("ch{}", s.channel))
.collect();
println!(
"Step {}: {} spike(s) {:?} (input: {:?})",
i + stable_readings.len(),
output.spikes.len(),
details,
input
);
}
}