annotate test_signal_processing.py @ 3:4be70944d21b skeleton_v2

Add some basic signal processing methods we need
author Chris Cannam
date Thu, 04 Oct 2012 17:14:05 +0100
parents
children ea2387fd1b90
rev   line source
Chris@3 1
Chris@3 2 import signal_processing as sp
Chris@3 3 import numpy as np
Chris@3 4
Chris@3 5 def test_rms():
Chris@3 6 assert sp.rms([1,1,1]) == 1.0
Chris@3 7 assert sp.rms([0.5,-0.5]) == 0.5
Chris@3 8 assert sp.rms([0,0,0,0]) == 0.0
Chris@3 9 assert sp.rms([5]) == 5.0
Chris@3 10 assert abs(sp.rms([1,2,-2]) - np.sqrt(3.0)) < 0.000001
Chris@3 11
Chris@3 12 def test_autocorrelation():
Chris@3 13 samples = [1,0,0,1,0,0,1,0,0,1,0,0,1,0,0]
Chris@3 14 acf = sp.autocorrelation(samples)
Chris@3 15 assert len(acf) == len(samples)
Chris@3 16 assert np.argmax(acf) == 0
Chris@3 17 assert acf[3] > acf[2]
Chris@3 18 assert acf[3] > acf[4]
Chris@3 19
Chris@3 20 def test_bpm_lag_conversions():
Chris@3 21 assert sp.bpm_to_lag(60, 1) == 1
Chris@3 22 assert sp.bpm_to_lag(60, 120) == 120
Chris@3 23 assert sp.bpm_to_lag(30, 120) == 240
Chris@3 24 assert sp.bpm_to_lag(120, 1) == 0 # should be an integer
Chris@3 25 assert sp.lag_to_bpm(120, 120) == 60.0
Chris@3 26 assert sp.lag_to_bpm(60, 120) == 120.0
Chris@3 27 assert sp.lag_to_bpm(80, 6) == 4.5