Mercurial > hg > may
changeset 363:87c25c94e4ed
Another interpolation test (that succeeds this time)
author | Chris Cannam |
---|---|
date | Fri, 12 Jul 2013 10:13:08 +0100 |
parents | 6a8263b37ea1 |
children | 99103233707a |
files | may/stream/test/test_filter.yeti |
diffstat | 1 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/may/stream/test/test_filter.yeti Tue Jul 02 22:24:14 2013 +0100 +++ b/may/stream/test/test_filter.yeti Fri Jul 12 10:13:08 2013 +0100 @@ -619,7 +619,7 @@ done convolutionOptions); ), -"interpolated-\(name)": \( +"interpolated-sine-\(name)": \( // Interpolating a sinusoid should give us a sinusoid sinusoid = syn.sinusoid 8 2; // 2Hz sine sampled at 8Hz: [ 0, 1, 0, -1 ] etc input = maybeDuration 16 sinusoid; @@ -635,7 +635,7 @@ else true fi; ), -"decimated-\(name)": \( +"decimated-sine-\(name)": \( // Decimating a sinusoid should give us a sinusoid sinusoid = syn.sinusoid 32 2; // 2Hz sine sampled at 16Hz input = maybeDuration 64 sinusoid; @@ -651,9 +651,29 @@ else true fi; ), +"interpolated-misc-\(name)": \( + // Interpolating any signal by N should give a signal in which + // every Nth sample is the original signal + data = vec.fromList [ 0, 0.1, -0.3, -0.4, -0.3, 0, 0.5, 0.2, 0.8, -0.1 ]; + data = vec.concat [ data, bf.scaled (5/4) data, bf.scaled (3/4) data, data ]; + data = vec.concat [ data, data ]; + input = maybeDuration (vec.length data) (syn.precalculatedMono 4 data); + factor = 3; + up = filt.interpolated factor input; + result = mat.getRow 0 (up.read (factor * vec.length data)); + phase = 0; + a = vec.list data; + b = map do i: vec.at result (i*factor + phase) done [0..vec.length data - 1]; + if not compareClose [a] [b] then + \() (pl.plot [Vector (vec.fromList b), Vector data]); + false + else true fi; +), + "int-dec-\(name)": \( // Interpolating any signal then decimating by the same factor // should get us the original back again + //!!! no, this is phase dependent data = vec.fromList [ 0, 0.1, -0.3, -0.4, -0.3, 0, 0.5, 0.2, 0.8, -0.1 ]; data = vec.concat [ data, bf.scaled (5/4) data, bf.scaled (3/4) data, data ]; data = vec.concat [ data, data ];