mirror of
https://github.com/romanz/amodem.git
synced 2026-02-25 00:31:08 +08:00
equalizer: move training to module scope
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user