From 8f263e859e0970ce87b77addc80dec28e8fc7e82 Mon Sep 17 00:00:00 2001 From: wukong Date: Tue, 5 Jun 2018 22:34:51 -0700 Subject: re-init --- conv.awk | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 conv.awk (limited to 'conv.awk') diff --git a/conv.awk b/conv.awk new file mode 100644 index 0000000..10c99c7 --- /dev/null +++ b/conv.awk @@ -0,0 +1,36 @@ +### conv.awk +# [PoC] linear convolution (with hardcoded IR window). + + +BEGIN { + X = ARGV[1] + input_size = split(X, X_arr) + #H = "1.0 1.0 1.0" # rect + #H = "0.25 0.50 0.25" # von Hann + H = "0.23 0.54 0.23" # Hamming + window_size = split(H, H_arr) + output_size = (input_size + window_size - 1) + for (n=1; n <= output_size; n++) { + Y_arr[n] = 0 + for (m=1; m <= input_size; m++) { + if (n <= window_size) { + Y_arr[n] = Y_arr[n] + H_arr[n-m+1]*X_arr[m] + continue + } + if ((n > window_size) && (n <= input_size)) { + Y_arr[n] = Y_arr[n] + H_arr[n-m+1]*X_arr[m] + continue + } + if ((n > window_size) && (n > input_size)) { + Y_arr[n] = Y_arr[n] + H_arr[n-m+1]*X_arr[m] + continue + } + else { + Y_arr[n] = Y_arr[n] + 0 + continue + } + } + print Y_arr[n] + } +} + -- cgit v1.2.3