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)) |
---|