mirror of
https://github.com/romanz/amodem.git
synced 2026-02-06 16:48:06 +08:00
train: remove unneeded file
This commit is contained in:
@@ -6,7 +6,7 @@ import collections
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from . import dsp
|
||||
from . import train
|
||||
from . import equalizer
|
||||
from . import common
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ class Detector(object):
|
||||
|
||||
COHERENCE_THRESHOLD = 0.9
|
||||
|
||||
CARRIER_DURATION = sum(train.prefix)
|
||||
CARRIER_DURATION = sum(equalizer.prefix)
|
||||
CARRIER_THRESHOLD = int(0.9 * CARRIER_DURATION)
|
||||
SEARCH_WINDOW = int(0.1 * CARRIER_DURATION)
|
||||
|
||||
|
||||
@@ -58,3 +58,8 @@ def train(signal, expected, order, lookahead=0):
|
||||
h = lstsq(A, b)[0]
|
||||
h = h[::-1].real
|
||||
return h
|
||||
|
||||
|
||||
prefix = [1]*400 + [0]*50
|
||||
equalizer_length = 500
|
||||
silence_length = 100
|
||||
|
||||
@@ -9,7 +9,6 @@ log = logging.getLogger(__name__)
|
||||
from . import stream
|
||||
from . import dsp
|
||||
from . import sampling
|
||||
from . import train
|
||||
from . import common
|
||||
from . import framing
|
||||
from . import equalizer
|
||||
@@ -33,7 +32,7 @@ class Receiver(object):
|
||||
self.output_size = 0 # number of bytes written to output stream
|
||||
|
||||
def _prefix(self, symbols, gain=1.0, skip=5):
|
||||
S = common.take(symbols, len(train.prefix))
|
||||
S = common.take(symbols, len(equalizer.prefix))
|
||||
S = S[:, self.carrier_index] * gain
|
||||
sliced = np.round(np.abs(S))
|
||||
self.plt.figure()
|
||||
@@ -43,13 +42,13 @@ class Receiver(object):
|
||||
bits = np.array(sliced, dtype=int)
|
||||
self.plt.subplot(122)
|
||||
self.plt.plot(np.abs(S))
|
||||
self.plt.plot(train.prefix)
|
||||
if any(bits != train.prefix):
|
||||
self.plt.plot(equalizer.prefix)
|
||||
if any(bits != equalizer.prefix):
|
||||
raise ValueError('Incorrect prefix')
|
||||
|
||||
log.debug('Prefix OK')
|
||||
|
||||
nonzeros = np.array(train.prefix, dtype=bool)
|
||||
nonzeros = np.array(equalizer.prefix, dtype=bool)
|
||||
pilot_tone = S[nonzeros]
|
||||
phase = np.unwrap(np.angle(pilot_tone)) / (2 * np.pi)
|
||||
indices = np.arange(len(phase))
|
||||
@@ -68,11 +67,12 @@ class Receiver(object):
|
||||
|
||||
def _train(self, sampler, order, lookahead):
|
||||
Nfreq = len(self.frequencies)
|
||||
train_symbols = self.equalizer.train_symbols(train.equalizer_length)
|
||||
equalizer_length = equalizer.equalizer_length
|
||||
train_symbols = self.equalizer.train_symbols(equalizer_length)
|
||||
train_signal = self.equalizer.modulator(train_symbols) * Nfreq
|
||||
|
||||
prefix = postfix = train.silence_length * self.Nsym
|
||||
signal_length = train.equalizer_length * self.Nsym + prefix + postfix
|
||||
prefix = postfix = equalizer.silence_length * self.Nsym
|
||||
signal_length = equalizer_length * self.Nsym + prefix + postfix
|
||||
|
||||
signal = sampler.take(signal_length + lookahead)
|
||||
|
||||
@@ -92,7 +92,8 @@ class Receiver(object):
|
||||
return equalization_filter
|
||||
|
||||
def _verify_training(self, equalized, train_symbols):
|
||||
symbols = self.equalizer.demodulator(equalized, train.equalizer_length)
|
||||
equalizer_length = equalizer.equalizer_length
|
||||
symbols = self.equalizer.demodulator(equalized, equalizer_length)
|
||||
sliced = np.array(symbols).round()
|
||||
errors = np.array(sliced - train_symbols, dtype=np.bool)
|
||||
error_rate = errors.sum() / errors.size
|
||||
|
||||
@@ -4,8 +4,6 @@ import itertools
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from . import train
|
||||
|
||||
from . import common
|
||||
from . import stream
|
||||
from . import framing
|
||||
@@ -20,7 +18,7 @@ class Sender(object):
|
||||
self.modem = dsp.MODEM(config.symbols)
|
||||
self.carriers = config.carriers / config.Nfreq
|
||||
self.pilot = config.carriers[config.carrier_index]
|
||||
self.silence = np.zeros(train.silence_length * config.Nsym)
|
||||
self.silence = np.zeros(equalizer.silence_length * config.Nsym)
|
||||
self.iters_per_report = config.baud # report once per second
|
||||
self.padding = [0] * config.bits_per_baud
|
||||
self.equalizer = equalizer.Equalizer(config)
|
||||
@@ -32,10 +30,10 @@ class Sender(object):
|
||||
self.offset += len(sym)
|
||||
|
||||
def start(self):
|
||||
for value in train.prefix:
|
||||
for value in equalizer.prefix:
|
||||
self.write(self.pilot * value)
|
||||
|
||||
symbols = self.equalizer.train_symbols(train.equalizer_length)
|
||||
symbols = self.equalizer.train_symbols(equalizer.equalizer_length)
|
||||
signal = self.equalizer.modulator(symbols)
|
||||
self.write(self.silence)
|
||||
self.write(signal)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
prefix = [1]*400 + [0]*50
|
||||
equalizer_length = 500
|
||||
silence_length = 100
|
||||
@@ -4,14 +4,14 @@ import pytest
|
||||
from amodem import dsp
|
||||
from amodem import recv
|
||||
from amodem import detect
|
||||
from amodem import train
|
||||
from amodem import equalizer
|
||||
from amodem import sampling
|
||||
from amodem import config
|
||||
config = config.fastest()
|
||||
|
||||
|
||||
def test_detect():
|
||||
P = sum(train.prefix)
|
||||
P = sum(equalizer.prefix)
|
||||
t = np.arange(P * config.Nsym) * config.Ts
|
||||
x = np.cos(2 * np.pi * config.Fc * t)
|
||||
|
||||
@@ -31,7 +31,7 @@ def test_detect():
|
||||
def test_prefix():
|
||||
omega = 2 * np.pi * config.Fc / config.Fs
|
||||
symbol = np.cos(omega * np.arange(config.Nsym))
|
||||
signal = np.concatenate([c * symbol for c in train.prefix])
|
||||
signal = np.concatenate([c * symbol for c in equalizer.prefix])
|
||||
|
||||
def symbols_stream(signal):
|
||||
sampler = sampling.Sampler(signal)
|
||||
|
||||
Reference in New Issue
Block a user