split demodulation using itertools.tee()

This commit is contained in:
Roman Zeyde
2014-07-05 09:40:35 +03:00
parent 63fbee8bfc
commit 8a1d8f33bd

17
recv.py
View File

@@ -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 = []