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)
Example #5
0
    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())
Example #6
0
    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())