def sync_symbol(filtertype, alpha, K, n_mod, N): """ Generate Schmidls Training Symbols to achieve Receiver Synchronisation K: should be an odd number Process: * First Symbol: Transmit PN-Sequence on all even frequencies while zeros on the odd frequencies. Constant signal energy -> Multiply every Symbol with sqrt(2) * Second Symbol: Transmit PN-Sequence on all odd frequencies and another PN-Sequence on the even frequencies """ pn_order = 14 pn_seed = "00101101010010" pn_mask = "01001110100111" if int(np.floor(K / 2.0)) % 2: n_even_freq = int(np.floor(K / 2.0)) else: n_even_freq = int(np.ceil(K / 2.0)) seq_length = n_even_freq * n_mod sym_sequence = np.zeros(K, dtype="complex") pn_sequence = cp.pnsequence(pn_order, pn_seed, pn_mask, seq_length) qam_mod = cp.modulation.QAMModem(2**n_mod) qam_sequence = qam_mod.modulate(pn_sequence) for i in range(len(sym_sequence)): if not i % 2: sym_sequence[i] = qam_sequence[i / 2] ifft_sequence = np.fft.ifftshift(sym_sequence) output = gfdm_tx(ifft_sequence, filtertype, alpha, 1, K, N) # output = np.fft.ifft(np.sqrt(2)*ifft_sequence) return output
def sync_symbol(filtertype, alpha, K, n_mod, N): ''' Generate Schmidls Training Symbols to achieve Receiver Synchronisation K: should be an odd number Process: * First Symbol: Transmit PN-Sequence on all even frequencies while zeros on the odd frequencies. Constant signal energy -> Multiply every Symbol with sqrt(2) * Second Symbol: Transmit PN-Sequence on all odd frequencies and another PN-Sequence on the even frequencies ''' pn_order = 14 pn_seed = '00101101010010' pn_mask = '01001110100111' if int(np.floor(K/2.0)) % 2: n_even_freq = int(np.floor(K/2.0)) else: n_even_freq = int(np.ceil(K/2.0)) seq_length = n_even_freq*n_mod sym_sequence = np.zeros(K, dtype='complex') pn_sequence = cp.pnsequence(pn_order, pn_seed, pn_mask, seq_length) qam_mod = cp.modulation.QAMModem(2**n_mod) qam_sequence = qam_mod.modulate(pn_sequence) for i in xrange(len(sym_sequence)): if not i % 2: sym_sequence[i] = qam_sequence[i/2] ifft_sequence = np.fft.ifftshift(sym_sequence) output = gfdm_tx(ifft_sequence, filtertype, alpha, 1, K, N) # output = np.fft.ifft(np.sqrt(2)*ifft_sequence) return output
def sync_symbol2(filtertype, alpha, K, L, n_mod): pn_order = 14 pn_seed = '01001000111011' pn_mask = '01001101001110' seq_length = K*n_mod pn_sequence = cp.pnsequence(pn_order, pn_seed, pn_mask, seq_length) qam_mod = cp.modulation.QAMModem(2**n_mod) qam_sequence = qam_mod.modulate(pn_sequence) output = gfdm_tx_fft2(np.tile(qam_sequence, 2), filtertype, alpha, 2, K, 2, 1) return output
def sync_symbol2(filtertype, alpha, K, L, n_mod): pn_order = 14 pn_seed = '01001000111011' pn_mask = '01001101001110' seq_length = K * n_mod pn_sequence = cp.pnsequence(pn_order, pn_seed, pn_mask, seq_length) qam_mod = cp.modulation.QAMModem(2 ** n_mod) qam_sequence = qam_mod.modulate(pn_sequence) output = gfdm_tx_fft2(np.tile(qam_sequence, 2), filtertype, alpha, 2, K, 2, 1) return output