function [preamble,c1,c2] = generatePreamble(WaveformPara,Power) N = WaveformPara.N_FFT; L = WaveformPara.CP_Len; pnSequence = comm.PNSequence('Polynomial',[8 6 5 4 0], ... 'SamplesPerFrame',N,'InitialConditions',[0 0 0 0 0 0 0 1]); pnSeq1 = pnSequence(); Modulator = comm.QPSKModulator; dataInMatrix1 = reshape(pnSeq1,N/2,2); dataSymbolsIn1 = bi2de(dataInMatrix1); pnSeq1 = Modulator(dataSymbolsIn1); c1 = sqrt(2)*kron(pnSeq1,[1,0]'); pnSequence = comm.PNSequence('Polynomial',[8 6 5 4 0], ... 'SamplesPerFrame',N,'InitialConditions',[0 1 0 0 0 0 0 1]); pnSeq2 = pnSequence(); dataInMatrix2 = reshape(pnSeq2,N/2,2); dataSymbolsIn2 = bi2de(dataInMatrix2); pnSeq2 = Modulator(dataSymbolsIn2); pnSequence = comm.PNSequence('Polynomial',[8 6 5 4 0], ... 'SamplesPerFrame',N,'InitialConditions',[1 1 0 0 1 0 0 1]); pnSeq3 = pnSequence(); dataInMatrix3 = reshape(pnSeq3,N/2,2); dataSymbolsIn3 = bi2de(dataInMatrix3); pnSeq3 = Modulator(dataSymbolsIn3); c2 = zeros(N,1); c2(1:2:N-1) = pnSeq2; c2(2:2:N) = pnSeq3; ofdmSymbol = ifft(c1,N)*sqrt(N); cp = ofdmSymbol(length(ofdmSymbol)-L+1:end); trainingSym1 = [cp;ofdmSymbol]; ofdmSymbol = ifft(c2,N)*sqrt(N); cp = ofdmSymbol(length(ofdmSymbol)-L+1:end); trainingSym2 = [cp;ofdmSymbol]; preamble = sqrt(Power)/sqrt(2)*([trainingSym1;trainingSym2]); end