diff --git a/loop.py b/loop.py index a0d3778..7d1f2b7 100644 --- a/loop.py +++ b/loop.py @@ -1,10 +1,10 @@ import numpy as np import itertools -import recv import sampling import sigproc + class Filter(object): def __init__(self, b, a=()): self.b = b @@ -20,6 +20,7 @@ class Filter(object): self.y = [y] + self.y return y + class FreqLoop(object): def __init__(self, x, freqs, prefix=0.0): interp = sampling.Interpolator() @@ -34,7 +35,8 @@ class FreqLoop(object): samplers = itertools.tee(self.sampler, len(freqs)) for freq, generator in zip(freqs, samplers): - self.gens.append( sigproc.extract_symbols(generator, freq) ) + gen = sigproc.extract_symbols(generator, freq) + self.gens.append(gen) Kp, Ki = 0.2, 0.01 b = np.array([1, -1])*Kp + np.array([0.5, 0.5])*Ki diff --git a/sampling.py b/sampling.py index eb7af47..dbccfdb 100644 --- a/sampling.py +++ b/sampling.py @@ -3,6 +3,7 @@ import logging log = logging.getLogger(__name__) + class Interpolator(object): def __init__(self, resolution=10000, width=128): self.width = width @@ -28,6 +29,7 @@ class Interpolator(object): coeffs = self.filt[j] return coeffs, k - self.width + class Sampler(object): def __init__(self, src, interp=None): self.src = iter(src) @@ -70,6 +72,6 @@ if __name__ == '__main__': _, x = common.load(sys.stdin) sampler = Sampler(x, Interpolator()) sampler.freq += df - y = np.array(list(sampler), ) - sys.stdout.write( common.dumps(y*1j) ) - + y = np.array(list(sampler)) + y = common.dumps(y*1j) + sys.stdout.write(y) diff --git a/test_sampling.py b/test_sampling.py index 5e85873..bbac0eb 100644 --- a/test_sampling.py +++ b/test_sampling.py @@ -1,6 +1,6 @@ import sampling import numpy as np -import pylab + def test_resample(): x = np.arange(300) @@ -12,7 +12,8 @@ def test_resample(): err = x - y assert np.max(np.abs(err)) < 1e-10 + def test_coeffs(): I = sampling.Interpolator(width=4, resolution=16) - err = I.filt[0] - [0,0,0,1,0,0,0,0] + err = I.filt[0] - [0, 0, 0, 1, 0, 0, 0, 0] assert np.max(np.abs(err)) < 1e-10 diff --git a/test_sigproc.py b/test_sigproc.py index a961c2e..6cf8750 100644 --- a/test_sigproc.py +++ b/test_sigproc.py @@ -4,6 +4,7 @@ import common import numpy as np import random + def test_qam(): q = sigproc.QAM(sigproc._symbols) r = random.Random(0) @@ -13,6 +14,7 @@ def test_qam(): decoded = list(q.decode(list(S))) assert decoded == bits + def test_drift(): fc = 10e3 df = 1.23