synthrs
has the following function to convolve filters:
pub fn convolve(filter: &[f64], input: &[f64]) -> Vec<f64> {
let mut output: Vec<f64> = Vec::new();
let h_len = (filter.len() / 2) as isize;
for i in -(filter.len() as isize / 2)..(input.len() as isize - 1) {
output.push(0.0);
for j in 0isize..filter.len() as isize {
let input_idx = i + j;
let output_idx = i + h_len;
if input_idx < 0 || input_idx >= input.len() as isize {
continue;
}
output[output_idx as usize] += input[input_idx as usize] * filter[j as usize]
}
}
output
}
I'm trying to get my head around whether this can be adapted to take input
as Iterator<Item = f64>
and return Iterator<Item = f64>
...