47 lines
1.5 KiB
Matlab
47 lines
1.5 KiB
Matlab
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 |