Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn subc(a: usize, b: usize) -> usize {
- if a >= b { a - b } else { 0 }
- }
- fn convolve(a: &[f32], b: &[f32]) -> Vec<f32> {
- use std::cmp::min;
- let N = a.len() - 1;
- (0..2*N+1).map(|k|
- //(subc(k, N) .. min(k+1, N+1)).map(|i|
- (k.saturating_sub() .. min(k+1, N+1)).map(|i|
- a[i]*b[k-i]
- ).sum()
- ).collect()
- }
- fn main() {
- let v1 = vec![1.0, 2.0, 3.0];
- let v2 = vec![0.0, 1.0, 0.5];
- let v3 = convolve(&v1, &v2);
- println!("{:?} * {:?} = {:?}", v1, v2, v3);
- }
Add Comment
Please, Sign In to add comment