[1590] | 1 | function [LongTrainingSyms_up2,LongSymbol_time_up2,LongSymbol_time,LongSymbol_freq,scale_LongTrainingSyms] = warplab_generateLongTrainingSyms |
---|
| 2 | |
---|
| 3 | % Generate one long training symbol |
---|
| 4 | LongSymbol_freq_bot = [0 0 0 0 0 0 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1]'; |
---|
| 5 | LongSymbol_freq_top = [1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 0 0 0 0 0]'; |
---|
| 6 | LongSymbol_freq = [LongSymbol_freq_bot ; 0 ; LongSymbol_freq_top]; |
---|
| 7 | LongSymbol_time = ifft(fftshift(LongSymbol_freq)).'; |
---|
| 8 | LongSymbol_time_up2 = interp(LongSymbol_time,2); % Upsample by 2. This is |
---|
| 9 | % the reference sequence that will be used for timing synchronization. It |
---|
| 10 | % is upsampled by 2 so that the signal has the desired bandwidth (~20MHz) |
---|
| 11 | scale = 1/max([ max(abs(real(LongSymbol_time_up2))), max(abs(imag(LongSymbol_time_up2))) ]); |
---|
| 12 | LongSymbol_time_up2 = scale * LongSymbol_time_up2; |
---|
| 13 | scale_LongTrainingSyms = scale; |
---|
| 14 | |
---|
| 15 | % Concatenate two long training symbols and add cyclic prefix |
---|
| 16 | %longsyms_2_cp = [longSymbol_time(33:64) repmat(longSymbol_time,1,2)]; |
---|
| 17 | %longsyms_2_cp_up2 = interp(longsyms_2_cp,2); % Upsample by 2 |
---|
| 18 | LongTrainingSyms_up2 = [LongSymbol_time_up2(65:128) repmat(LongSymbol_time_up2,1,2)]; |
---|
| 19 | |
---|
| 20 | % Concatenate long training symbols with payload |
---|
| 21 | %DataVecOUT = [longsyms_2_cp_up2 DataVecIN]; |
---|
| 22 | % |
---|
| 23 | % figure |
---|
| 24 | % subplot(2,2,1) |
---|
| 25 | % plot(real(LongSymbol_time_up2)) |
---|
| 26 | % subplot(2,2,2) |
---|
| 27 | % plot(imag(LongSymbol_time_up2)) |
---|
| 28 | % subplot(2,2,3) |
---|
| 29 | % plot(abs(LongSymbol_time_up2)) |
---|
| 30 | % subplot(2,2,4) |
---|
| 31 | % plot(angle(LongSymbol_time_up2)) |
---|