mirror of
https://github.com/romanz/amodem.git
synced 2026-04-20 13:16:42 +08:00
split demodulation using itertools.tee()
This commit is contained in:
17
recv.py
17
recv.py
@@ -8,6 +8,7 @@ logging.basicConfig(level=0, format='%(message)s')
|
|||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
import sigproc
|
import sigproc
|
||||||
|
import loop
|
||||||
import show
|
import show
|
||||||
from common import *
|
from common import *
|
||||||
|
|
||||||
@@ -60,13 +61,14 @@ def demodulate(x, freq, filt, plot=None):
|
|||||||
def receive(x, freqs):
|
def receive(x, freqs):
|
||||||
x = iter(x)
|
x = iter(x)
|
||||||
prefix = [1]*300 + [0]*100
|
prefix = [1]*300 + [0]*100
|
||||||
symbols = itertools.islice(extract_symbols(x, Fc), len(prefix))
|
S = itertools.islice(extract_symbols(x, Fc), len(prefix))
|
||||||
bits = np.round(np.abs(list(symbols)))
|
S = np.array(list(S))
|
||||||
|
bits = np.round(np.abs(S))
|
||||||
bits = np.array(bits, dtype=int)
|
bits = np.array(bits, dtype=int)
|
||||||
if all(bits != prefix):
|
if all(bits != prefix):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
log.info( 'Prefix OK')
|
log.info('Prefix OK')
|
||||||
filters = {}
|
filters = {}
|
||||||
|
|
||||||
full_scale = len(freqs)
|
full_scale = len(freqs)
|
||||||
@@ -93,10 +95,11 @@ def receive(x, freqs):
|
|||||||
|
|
||||||
sz = int(np.ceil(np.sqrt(len(freqs))))
|
sz = int(np.ceil(np.sqrt(len(freqs))))
|
||||||
streams = []
|
streams = []
|
||||||
x = list(x)
|
|
||||||
for i, freq in enumerate(freqs):
|
xs = itertools.tee(x, len(freqs))
|
||||||
plot = functools.partial(pylab.subplot, sz, sz, i+1)
|
for i, (x, freq) in enumerate(zip(xs, freqs)):
|
||||||
stream = demodulate(x, freq, filters[freq], plot=plot)
|
stream = demodulate(x, freq=freq, filt=filters[freq],
|
||||||
|
plot=functools.partial(pylab.subplot, sz, sz, i+1))
|
||||||
streams.append(stream)
|
streams.append(stream)
|
||||||
|
|
||||||
bitstream = []
|
bitstream = []
|
||||||
|
|||||||
Reference in New Issue
Block a user