示例#1
0
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
示例#2
0
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
示例#3
0
def resource_mapping_test():
    active = 110
    fft_len = 128
    timeslots = 205
    smap = np.arange(active) + (active - active) // 2
    per_timeslot = True
    mapper = cgfdm.py_resource_mapper_kernel_cc(timeslots, fft_len, active, smap, per_timeslot)
    demapper = cgfdm.py_resource_demapper_kernel_cc(timeslots, fft_len, active, smap, per_timeslot)

    assert mapper.input_vector_size() == demapper.output_vector_size()
    assert mapper.output_vector_size() == demapper.input_vector_size()

    N = 10
    for i in range(N):
        data = np.random.randn(2, active * timeslots)
        data = data[0] + 1j * data[1]
        data = data.astype(dtype=np.complex64)
        tx = mapper.map_to_resources(data)
        rd = demapper.demap_from_resources(tx, len(data))
        assert len(data) == len(rd)
        assert np.all(np.abs(data - rd) < 1e-10)
示例#4
0
def resource_mapping_test():
    active = 110
    fft_len = 128
    timeslots = 205
    smap = np.arange(active) + (active - active) // 2
    per_timeslot = True
    mapper = cgfdm.py_resource_mapper_kernel_cc(timeslots, fft_len, active, smap, per_timeslot)
    demapper = cgfdm.py_resource_demapper_kernel_cc(timeslots, fft_len, active, smap, per_timeslot)

    assert mapper.input_vector_size() == demapper.output_vector_size()
    assert mapper.output_vector_size() == demapper.input_vector_size()

    N = 10
    for i in range(N):
        data = np.random.randn(2, active * timeslots)
        data = data[0] + 1j * data[1]
        data = data.astype(dtype=np.complex64)
        tx = mapper.map_to_resources(data)
        rd = demapper.demap_from_resources(tx, len(data))
        assert len(data) == len(rd)
        assert np.all(np.abs(data - rd) < 1e-10)