From 53df2d593448b8f97ea833eb37cd773f74492ddd Mon Sep 17 00:00:00 2001 From: Julien Woillez Date: Sun, 22 Jul 2018 16:46:55 +0000 Subject: [PATCH] Speed up carrier detection with numpy. --- amodem/detect.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/amodem/detect.py b/amodem/detect.py index 9fc81d3..66c9c19 100644 --- a/amodem/detect.py +++ b/amodem/detect.py @@ -85,12 +85,10 @@ class Detector(object): signal = np.concatenate([zeroes, carrier]) signal = (2 ** 0.5) * signal / dsp.norm(signal) - coeffs = [] - for i in range(len(buf) - len(signal)): - b = buf[i:i+len(signal)] - norm_b = dsp.norm(b) - c = (np.abs(np.dot(b, signal)) / norm_b) if norm_b else 0.0 - coeffs.append(c) + corr = np.abs(np.correlate(buf, signal)) + norm_b = np.sqrt(np.correlate(np.abs(buf)**2, np.ones(len(signal)))) + coeffs = np.zeros_like(corr) + coeffs[norm_b > 0.0] = corr[norm_b > 0.0] / norm_b[norm_b > 0.0] index = np.argmax(coeffs) log.info('Carrier coherence: %.3f%%', coeffs[index] * 100)