moving_average/
moving_average.rs1use matten::Tensor;
6
7fn main() {
8 let series = Tensor::from_vec(vec![1.0, 3.0, 5.0, 7.0, 9.0, 11.0, 13.0]);
9 let window = 3usize;
10 let n = series.len();
11
12 let mut avgs = Vec::new();
14 for start in 0..=(n - window) {
15 let w = series.slice().range(start..start + window).build().unwrap();
16 avgs.push(w.mean());
17 }
18
19 println!("series = {:?}", series.as_slice());
20 println!("3-pt moving avg = {:?}", avgs);
21 assert_eq!(avgs.len(), n - window + 1);
22 assert!((avgs[0] - 3.0).abs() < 1e-10); assert!((avgs[1] - 5.0).abs() < 1e-10); println!("Moving average: OK");
25}