def gfdm_demodulate_block(R, H, K, M, L): D_0 = gfdm_transform_input_to_fd(R) D_1 = gfdm_extract_subcarriers(D_0, K, M, L) D_2 = gfdm_filter_subcarriers(D_1, H, K, M, L) D_3 = gfdm_superposition_subcarriers(D_2, K, M, L) D_4 = gfdm_transform_subcarriers_to_tdomain(D_3, K, M, L) return get_data_stream(D_4)
def gfdm_demodulate_block_sic(R, H, K, M, L, J=0): H_sic = gfdm_get_ic_f_taps(H / float(K), M) D_0 = gfdm_transform_input_to_fd(R) D_1 = gfdm_extract_subcarriers(D_0, K, M, L) D_2 = gfdm_filter_subcarriers(D_1, H, K, M, L) D_3 = gfdm_superposition_subcarriers(D_2, K, M, L) D_4 = gfdm_transform_subcarriers_to_tdomain(D_3, K, M, L) for j in xrange(J): D_5 = gfdm_map_subcarriers(D_4, K, M, L) D_6 = gfdm_remove_sc_interference(D_3, D_5, K, M, L, H_sic) D_4 = gfdm_transform_subcarriers_to_tdomain(D_6, K, M, L) return get_data_stream(D_4)
def gfdm_demodulate_block_sic(R, H, K, M, L, J=0): H_sic = gfdm_get_ic_f_taps(H/float(K), M) D_0 = gfdm_transform_input_to_fd(R) D_1 = gfdm_extract_subcarriers(D_0, K, M, L) D_2 = gfdm_filter_subcarriers(D_1, H, K, M, L) D_3 = gfdm_superposition_subcarriers(D_2, K, M, L) D_4 = gfdm_transform_subcarriers_to_tdomain(D_3, K, M, L) for j in xrange(J): print 'IC iter', j D_5 = gfdm_map_subcarriers(D_4, K, M, L) D_6 = gfdm_remove_sc_interference(D_3, D_5, K, M, L, H_sic) D_4 = gfdm_transform_subcarriers_to_tdomain(D_6, K, M, L) return get_data_stream(D_4)