equalizer: move training to module scope

This commit is contained in:
Roman Zeyde
2015-01-08 09:43:22 +02:00
parent 3dcd9f4ccc
commit a866301774
3 changed files with 19 additions and 19 deletions

View File

@@ -38,22 +38,23 @@ class Equalizer(object):
omegas=self.omegas, Nsym=self.Nsym)
return np.array(list(itertools.islice(symbols, size)))
def equalize_signal(self, signal, expected, order, lookahead=0):
signal = [np.zeros(order-1), signal, np.zeros(lookahead)]
signal = np.concatenate(signal)
length = len(expected)
A = []
b = []
def train(signal, expected, order, lookahead=0):
signal = [np.zeros(order-1), signal, np.zeros(lookahead)]
signal = np.concatenate(signal)
length = len(expected)
for i in range(length - order):
offset = order + i
row = signal[offset-order:offset+lookahead]
A.append(np.array(row, ndmin=2))
b.append(expected[i])
A = []
b = []
A = np.concatenate(A, axis=0)
b = np.array(b)
h = lstsq(A, b)[0]
h = h[::-1].real
return h
for i in range(length - order):
offset = order + i
row = signal[offset-order:offset+lookahead]
A.append(np.array(row, ndmin=2))
b.append(expected[i])
A = np.concatenate(A, axis=0)
b = np.array(b)
h = lstsq(A, b)[0]
h = h[::-1].real
return h

View File

@@ -75,7 +75,7 @@ class Receiver(object):
signal = sampler.take(signal_length + lookahead)
coeffs = self.equalizer.equalize_signal(
coeffs = equalizer.train(
signal=signal[prefix:-postfix],
expected=train_signal,
order=order, lookahead=lookahead

View File

@@ -51,10 +51,9 @@ def test_signal():
den = np.array([1, -0.6, 0.1])
num = np.array([0.5])
y = dsp.lfilter(x=x, b=num, a=den)
e = equalizer.Equalizer(config)
lookahead = 2
h = e.equalize_signal(
h = equalizer.train(
signal=y, expected=x, order=len(den), lookahead=lookahead)
assert norm(h[:lookahead]) < 1e-12