def main(): my_set = { 'active_subcarriers': 110, 'frame_symbols': 4096, 'fft_len': 128, 'frame_time_symbols': 38, 'cp_len': 6 } n_subcarriers = my_set['fft_len'] n_timeslots = my_set['frame_time_symbols'] overlap = 2 taps = np.array([ 1, ] * n_timeslots * overlap, dtype=np.complex) kernel = gfdm.py_modulator_kernel_cc(n_timeslots, n_subcarriers, overlap, taps) print(kernel.block_size()) syms = map_to_waveform_resources( get_random_qpsk(my_set['frame_symbols']), np.arange(my_set['active_subcarriers']) + 9, my_set['active_subcarriers'], my_set['fft_len']) frame = kernel.modulate(syms) plot_waterfall(frame, 128) plt.show()
def modulator_test(): fft_len = 128 timeslots = 205 overlap = 2 taps = get_frequency_domain_filter('rrc', .5, timeslots, fft_len, overlap) kernel = cgfdm.py_modulator_kernel_cc(timeslots, fft_len, overlap, taps) N = 10 for i in range(N): data = np.random.randn(2, fft_len * timeslots) data = data[0] + 1j * data[1] data = data.astype(dtype=np.complex64) kernel.modulate(data)
def modulate_gfdm_frame(tx_symbols, params): mapper = cgfdm.py_resource_mapper_kernel_cc(params['timeslots'], params['fft_len'], params['active_subcarriers'], params['subcarrier_map']) taps = get_frequency_domain_filter(params['prototype_type'], params['prototype_alpha'], params['timeslots'], params['fft_len'], params['overlap']) kernel = cgfdm.py_modulator_kernel_cc(params['timeslots'], params['fft_len'], params['overlap'], taps) win_filt = get_raised_cosine_ramp(params['filter_len'], params['timeslots'] * params['fft_len'] + params['cp_len']) cpler = cgfdm.py_add_cyclic_prefix_cc(params['timeslots'] * params['fft_len'], params['cp_len'], params['filter_len'], win_filt) syms = mapper.map_to_resources(tx_symbols) frame = kernel.modulate(syms.flatten()) frame = cpler.add_cyclic_prefix(frame) return frame
def main(): my_set = {'active_subcarriers': 110, 'frame_symbols': 4096, 'fft_len': 128, 'frame_time_symbols': 38, 'cp_len': 6} n_subcarriers = my_set['fft_len'] n_timeslots = my_set['frame_time_symbols'] overlap = 2 taps = np.array([1, ] * n_timeslots * overlap, dtype=np.complex) kernel = gfdm.py_modulator_kernel_cc(n_timeslots, n_subcarriers, overlap, taps) print(kernel.block_size()) syms = map_to_waveform_resources(get_random_qpsk(my_set['frame_symbols']), np.arange(my_set['active_subcarriers']) + 9, my_set['active_subcarriers'], my_set['fft_len']) frame = kernel.modulate(syms) plot_waterfall(frame, 128) plt.show()