def test_002_big_data(self): print("big data test") reps = 5 alpha = .5 M = 127 K = 16 L = 4 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) data = np.array([], dtype=complex) ref = np.array([], dtype=complex) for i in range(reps): d = get_random_qpsk(M * K) D = get_data_matrix(d, K, group_by_subcarrier=False) ref = np.append(ref, gfdm_modulate_block(D, taps, M, K, L, False)) data = np.append(data, d) src = blocks.vector_source_c(data) mod = gfdm.simple_modulator_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) # set up fg self.tb.run() # check data res = np.array(dst.data()) # res /= M * K self.assertComplexTuplesAlmostEqual(ref, res, 2)
def test_002_big_data(self): print "big data test" reps = 5 alpha = .5 M = 127 K = 16 L = 4 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) data = np.array([], dtype=np.complex) ref = np.array([], dtype=np.complex) for i in range(reps): d = get_random_qpsk(M * K) D = get_data_matrix(d, K, group_by_subcarrier=False) ref = np.append(ref, gfdm_modulate_block(D, taps, M, K, L, False)) data = np.append(data, d) # print data # print ref # print "MAXIMUM ref value: ", np.max(abs(ref)) src = blocks.vector_source_c(data) mod = gfdm.simple_modulator_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) # set up fg self.tb.run() # check data res = np.array(dst.data()) # res /= M * K # print "MAXIMUM result value: ", np.max(abs(res)) self.assertComplexTuplesAlmostEqual(ref, res, 2)
def test_001_t(self): alpha = .5 M = 8 K = 4 L = 2 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) # data = np.repeat(np.arange(1, K + 1), M) data = get_random_qpsk(M * K) D = get_data_matrix(data, K, group_by_subcarrier=False) src = blocks.vector_source_c(data) mod = gfdm.simple_modulator_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) # set up fg self.tb.run() # check data res = np.array(dst.data()) # res /= M * K # F = gfdm_transform_subcarriers_to_fd(D, M) # F = gfdm_upsample_subcarriers_in_fd(F, K, L) # F = gfdm_filter_subcarriers_in_fd(F, taps, M, K, L) ref = gfdm_modulate_block(D, taps, M, K, L, False) self.assertComplexTuplesAlmostEqual(ref, res, 5)
def test_001_t(self): alpha = .5 M = 8 K = 4 L = 2 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) # data = np.repeat(np.arange(1, K + 1), M) data = get_random_qpsk(M * K) D = get_data_matrix(data, K, group_by_subcarrier=False) # print data # print D src = blocks.vector_source_c(data) mod = gfdm.simple_modulator_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) # set up fg self.tb.run() # check data res = np.array(dst.data()) # res /= M * K # F = gfdm_transform_subcarriers_to_fd(D, M) # F = gfdm_upsample_subcarriers_in_fd(F, K, L) # F = gfdm_filter_subcarriers_in_fd(F, taps, M, K, L) ref = gfdm_modulate_block(D, taps, M, K, L, False) self.assertComplexTuplesAlmostEqual(ref, res, 5)
def test_001_norm_preamble(self): alpha = .5 K = 32 cp_len = K pre_gen = gfdm.preamble_generator(K, alpha, K * 2) preamble = np.array(pre_gen.get_preamble()) kernel = gfdm.improved_sync_algorithm_kernel_cc(K, cp_len, preamble, 4000) kernel_preamble = np.array(kernel.preamble()) # normalize preamble preamble /= np.sqrt(np.abs(calculate_signal_energy(preamble))) print 'norm_preamble energy:', calculate_signal_energy(preamble) self.assertComplexTuplesAlmostEqual(kernel_preamble, preamble)
def test_001_norm_preamble(self): alpha = .5 K = 32 cp_len = K pre_gen = gfdm.preamble_generator(K, alpha, K * 2) preamble = np.array(pre_gen.get_preamble()) kernel = gfdm.improved_sync_algorithm_kernel_cc( K, cp_len, preamble, 4000) kernel_preamble = np.array(kernel.preamble()) # normalize preamble preamble /= np.sqrt(np.abs(calculate_signal_energy(preamble))) print 'norm_preamble energy:', calculate_signal_energy(preamble) self.assertComplexTuplesAlmostEqual(kernel_preamble, preamble)
def test_001_t(self): alpha = .5 M = 8 K = 4 L = 2 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) data = get_random_qpsk(M * K) src = blocks.vector_source_c(data) mod = gfdm.simple_receiver_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) self.tb.run() res = np.array(dst.data()) ref = gfdm_demodulate_block(data, taps, K, M, L) res *= np.sqrt( calculate_signal_energy(ref) / calculate_signal_energy(res)) self.assertComplexTuplesAlmostEqual(ref, res, 5)
def test_001_t(self): alpha = .5 M = 8 K = 4 L = 2 taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) data = get_random_qpsk(M * K) src = blocks.vector_source_c(data) mod = gfdm.simple_receiver_cc(M, K, L, taps) dst = blocks.vector_sink_c() self.tb.connect(src, mod, dst) self.tb.run() res = np.array(dst.data()) ref = gfdm_demodulate_block(data, taps, K, M, L) # print calculate_signal_energy(ref), calculate_signal_energy(res) res *= np.sqrt(calculate_signal_energy(ref) / calculate_signal_energy(res)) self.assertComplexTuplesAlmostEqual(ref, res, 5)
def test_001_t(self): np.set_printoptions(precision=2) n_frames = 3 alpha = .5 active = 8 M = 8 K = 16 L = 2 cp_len = 8 cs_len = 4 ramp_len = 4 block_len = M * K window_len = get_window_len(cp_len, M, K, cs_len) taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) window_taps = get_raised_cosine_ramp(ramp_len, window_len) pn_symbols = get_random_qpsk(K) H_preamble = get_frequency_domain_filter('rrc', alpha, 2, K, L) preamble = get_sync_symbol(pn_symbols, H_preamble, K, L, cp_len, ramp_len)[0] smap = get_subcarrier_map(K, active, dc_free=True) ref = np.array([], dtype=complex) data = np.array([], dtype=complex) frame_len = window_len + len(preamble) frame_gap = np.zeros(frame_len) for i in range(n_frames): d = get_random_qpsk(active * M) dd = map_to_waveform_resources(d, active, K, smap) D = get_data_matrix(dd, K, group_by_subcarrier=False) b = gfdm_modulate_block(D, taps, M, K, L, False) b = add_cyclic_starfix(b, cp_len, cs_len) b = pinch_block(b, window_taps) ref = np.concatenate((ref, frame_gap, preamble, b)) data = np.concatenate((data, d)) src = blocks.vector_source_c(data) mapper = gfdm.resource_mapper_cc(active, K, M, smap, True) mod = gfdm.simple_modulator_cc(M, K, L, taps) prefixer = gfdm.cyclic_prefixer_cc(block_len, cp_len, cs_len, ramp_len, window_taps) preambler = blocks.vector_insert_c(preamble, window_len + len(preamble), 0) gapper = blocks.vector_insert_c(frame_gap, frame_len + len(frame_gap), 0) dst = blocks.vector_sink_c() self.tb.connect(src, mapper, mod, prefixer, preambler, gapper, dst) # self.tb.connect(src, mapper, dst) self.tb.run() res = np.array(dst.data())[0:len(ref)] self.assertComplexTuplesAlmostEqual(ref, res, 5)
def test_001_t(self): np.set_printoptions(precision=2) n_frames = 3 alpha = .5 active = 8 M = 8 K = 16 L = 2 cp_len = 8 cs_len = 4 ramp_len = 4 block_len = M * K window_len = get_window_len(cp_len, M, K, cs_len) taps = get_frequency_domain_filter('rrc', alpha, M, K, L) taps /= np.sqrt(calculate_signal_energy(taps) / M) window_taps = get_raised_cosine_ramp(ramp_len, window_len) pn_symbols = get_random_qpsk(K) H_preamble = get_frequency_domain_filter('rrc', alpha, 2, K, L) preamble = get_sync_symbol(pn_symbols, H_preamble, K, L, cp_len, ramp_len)[0] smap = get_subcarrier_map(K, active, dc_free=True) ref = np.array([], dtype=np.complex) data = np.array([], dtype=np.complex) frame_len = window_len + len(preamble) frame_gap = np.zeros(frame_len) for i in range(n_frames): d = get_random_qpsk(active * M) dd = map_to_waveform_resources(d, active, K, smap) D = get_data_matrix(dd, K, group_by_subcarrier=False) b = gfdm_modulate_block(D, taps, M, K, L, False) b = add_cyclic_starfix(b, cp_len, cs_len) b = pinch_block(b, window_taps) ref = np.concatenate((ref, frame_gap, preamble, b)) data = np.concatenate((data, d)) src = blocks.vector_source_c(data) mapper = gfdm.resource_mapper_cc(active, K, M, smap, True) mod = gfdm.simple_modulator_cc(M, K, L, taps) prefixer = gfdm.cyclic_prefixer_cc(block_len, cp_len, cs_len, ramp_len, window_taps) preambler = blocks.vector_insert_c(preamble, window_len + len(preamble), 0) gapper = blocks.vector_insert_c(frame_gap, frame_len + len(frame_gap), 0) dst = blocks.vector_sink_c() self.tb.connect(src, mapper, mod, prefixer, preambler, gapper, dst) # self.tb.connect(src, mapper, dst) self.tb.run() res = np.array(dst.data())[0:len(ref)] self.assertComplexTuplesAlmostEqual(ref, res, 5)