diff --git a/amodem/equalizer.py b/amodem/equalizer.py index a5dcb22..3b7abd0 100644 --- a/amodem/equalizer.py +++ b/amodem/equalizer.py @@ -38,32 +38,6 @@ class Equalizer(object): omegas=self.omegas, Nsym=self.Nsym) return np.array(list(itertools.islice(symbols, size))) - def equalize_symbols(self, signal, symbols, order, lookahead=0): - assert symbols.shape[1] == self.Nfreq - length = symbols.shape[0] - - matched = np.array(self.carriers) / (0.5*self.Nsym) - matched = matched[:, ::-1].transpose().conj() - signal = np.concatenate([signal, np.zeros(lookahead)]) - y = dsp.lfilter(x=signal, b=matched, a=[1]) - - A = [] - b = [] - - for j in range(self.Nfreq): - for i in range(length): - offset = (i+1)*self.Nsym - row = y[offset-order:offset+lookahead, j] - A.append(row) - b.append(symbols[i, j]) - - A = np.array(A) - b = np.array(b) - h = lstsq(A, b)[0] - h = h[::-1].real - - return h - def equalize_signal(self, signal, expected, order, lookahead=0): signal = [np.zeros(order-1), signal, np.zeros(lookahead)] signal = np.concatenate(signal) diff --git a/tests/test_equalizer.py b/tests/test_equalizer.py index 9e31315..75fd5f9 100644 --- a/tests/test_equalizer.py +++ b/tests/test_equalizer.py @@ -45,31 +45,6 @@ def test_modem(): assert_approx(sent, received) -def test_symbols(): - length = 100 - gain = float(config.Nfreq) - - e = equalizer.Equalizer(config) - symbols = e.train_symbols(length=length) - x = e.modulator(symbols) * gain - assert_approx(e.demodulator(x, size=length), symbols) - - den = np.array([1, -0.6, 0.1]) - num = np.array([0.5]) - y = dsp.lfilter(x=x, b=num, a=den) - - lookahead = 2 - h = e.equalize_symbols( - signal=y, symbols=symbols, order=len(den), lookahead=lookahead - ) - assert norm(h[:lookahead]) < 1e-12 - assert_approx(h[lookahead:], den / num) - - y = dsp.lfilter(x=y, b=h[lookahead:], a=[1]) - z = e.demodulator(y, size=length) - assert_approx(z, symbols) - - def test_signal(): length = 100 x = np.sign(RandomState(0).normal(size=length))