def test_004_t(self): # test input commutator for large vector lengths L = 16 n = L * 1000 input_stream = arange(n) self.src = blocks.vector_source_c(range(n), vlen=1) self.comm = fbmc.input_commutator_cvc(L) self.snk = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.comm, self.snk) self.tb.run() # check data data = self.snk.data() self.assertTrue(n, len(data))
def test_001_t(self): # set up fg L = 6 d = range(1, 13) self.src = blocks.vector_source_c(d, vlen=1) self.comm = fbmc.input_commutator_cvc(L) self.snk = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.comm, self.snk) self.tb.run() # check data data = self.snk.data() ref = (1, 0, 0, 1, 0, 0, 4, 3, 2, 4, 3, 2, 7, 6, 5, 7, 6, 5, 10, 9, 8, 10, 9, 8) self.assertComplexTuplesAlmostEqual(data, ref)
def test_003_t(self): # prepare reference data n = 16 L = 8 input_stream = arange(n) input_matrix = flipud(r_[zeros(L / 2 - 1), input_stream[:-(L / 2 - 1)]].reshape((L / 2, -1), order='F')) input_matrix = r_[input_matrix, input_matrix] ref_output = input_matrix.transpose().reshape((n * 2, 1)) self.src = blocks.vector_source_c(range(n), vlen=1) self.comm = fbmc.input_commutator_cvc(L) self.snk = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.comm, self.snk) self.tb.run() # check data data = self.snk.data() self.assertComplexTuplesAlmostEqual(data, ref_output)
def test_002_large_dataset(self): L = 12 multiple = 1000 d = range(1, L * multiple + 1) ref = ft.commutate_input_stream(d, L) # set up fg self.src = blocks.vector_source_c(d, vlen=1) self.comm = fbmc.input_commutator_cvc(L) self.snk = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.comm, self.snk) self.tb.run() # check data data = self.snk.data() self.assertTrue(len(ref), len(data)) self.assertComplexTuplesAlmostEqual(data, ref)
def test_004_legacy_big(self): np.set_printoptions(linewidth=150, precision=4) multiple = 4 overlap = 4 self.cfg = fbmc.fbmc_config(num_used_subcarriers=20, num_payload_sym=16, num_overlap_sym=overlap, modulation="QPSK", preamble="IAM") L = self.cfg.num_total_subcarriers() taps = np.array(self.cfg.prototype_taps_float(), dtype=np.float) # test data! d = np.arange(1, multiple * L // 2 + 1 + 1, dtype=np.complex) # initialize fg smt = fbmc.rx_polyphase_cvc(taps, L) self.src = blocks.vector_source_c(d, vlen=1) self.snk = blocks.vector_sink_c(vlen=L) # old chain self.com = fbmc.input_commutator_cvc(L) self.pfb = fbmc.polyphase_filterbank_vcvc(L, taps) self.fft = fft.fft_vcc(L, False, (), False, 1) self.snkold = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.com, self.pfb, self.fft, self.snkold) self.tb.connect(self.src, smt, self.snk) self.tb.run() # check data res = self.snk.data() resmatrix = np.array(res).reshape((-1, L)).T old = self.snkold.data() oldmatrix = np.array(old).reshape((-1, L)).T print np.array(smt.filterbank_taps()) print "\nresult" print resmatrix print "\nold fg" print oldmatrix self.assertComplexTuplesAlmostEqual(oldmatrix.flatten(), resmatrix.flatten())
def test_003_legacy_small(self): multiple = 10 L = 4 taps = np.append(np.ones(L), 0.5 * np.ones(L)) # test data! d = np.arange(1, multiple * L // 2 + 1 + 1, dtype=np.complex) # initialize fg smt = fbmc.rx_polyphase_cvc(taps, L) self.src = blocks.vector_source_c(d, vlen=1) self.snk = blocks.vector_sink_c(vlen=L) # old chain self.com = fbmc.input_commutator_cvc(L) self.pfb = fbmc.polyphase_filterbank_vcvc(L, taps) self.fft = fft.fft_vcc(L, False, (), False, 1) self.snkold = blocks.vector_sink_c(vlen=L) self.tb.connect(self.src, self.com, self.pfb, self.fft, self.snkold) self.tb.connect(self.src, smt, self.snk) self.tb.run() # check data res = self.snk.data() resmatrix = np.array(res).reshape((-1, L)).T old = self.snkold.data() oldmatrix = np.array(old).reshape((-1, L)).T print np.array(smt.filterbank_taps()) print "\nresult" print resmatrix print "\nold" print oldmatrix self.assertComplexTuplesAlmostEqual(oldmatrix.flatten(), resmatrix.flatten())