1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
7 %This script was tested with GNU
Octave, version 3.8.2 or
Matlab 9.2.0.538062 (R2017a)
12 % 5MHz 10MHz 15MHz 20 MHz 25 MHz 30 MHz 40 MHz 50MHz 60 MHz 70 MHz 80 MHz 90 MHz 100 MHz
15 % 5MHz 10MHz 15MHz 20 MHz 25 MHz 30 MHz 40 MHz 50MHz 60 MHz 70 MHz 80 MHz 90 MHz 100 MHz
16 [25, 52, 79, 106, 133, 160, 216, 270, 0, 0, 0, 0, 0] % Numerology 0 (15KHz)
17 [11, 24, 38, 51, 65, 78, 106, 133, 162, 0, 217, 245, 273] % Numerology 1 (30KHz)
18 [0, 11, 18, 24, 31, 38, 51, 65, 79, 0, 107, 121, 135] % Numerology 2 (60KHz)
23 % 50Mhz 100MHz 200MHz 400MHz
24 [66, 132, 264, 0] % Numerology 2 (60KHz)
25 [32, 66, 132, 264] % Numerology 3 (120KHz)
28 % total number of tests
32 true, true, true, true, false, true,
42 5, 10, 20, 100, 100, 100
52 false, false, false, false, false, true
57 32, 32, 32, 32, 32, 32
61 "./usecase/mu0_5mhz/";
62 "./usecase/mu0_10mhz/";
63 "./usecase/mu0_20mhz/";
64 "./usecase/mu1_100mhz/";
65 "./usecase/mu3_100mhz/";
66 "./usecase/cat_b/mu1_100mhz/";
76 %select mu and
bw to generate test files
79 sub6=sub6_all(test_num) %
false 80 mu=mu_all(test_num) % 0,1, or 3
81 bw=bw_all(test_num) %5,10,20,100 MHz
83 bfw_gen=bfw_gen_all(test_num)
84 trx = trx_all(test_num)
88 nSlots=nSlots_all(test_num) % any 40 and 160
122 disp(
'Unknown BW && mu')
127 if (mu >=2) && (mu <= 3)
139 disp(
'Unknown BW && mu')
145 disp(
'Incorrect Numerology and BW combination.')
154 %ifft_in = load(
'ifft_in.txt')
157 ifft_in = [[1:1:(numRBs*12)]', [1:1:(numRBs*12)]'];
160 for (i=1:1:nSlots*14-1)
165 %write files
for IQ samples
169 file_name = strcat(path_to_usecase,"ant_", num2str(ant-1),".bin"); 171 fileID = fopen(file_name,'w
'); 172 fwrite(fileID, antX_16, 'int16
'); 177 disp('Generate BF Weights per RB
') 179 %seed to make it repeatable 182 %random channel matrix for single sym on syngle RB 183 H = (rand(trx,ant_num) + 1j*rand(trx,ant_num)); 186 % W_dl = H^*(H^TH^*)^-1 187 % W_ul = ((H^H*H)^-1)H^H 188 % where H^* - conjugate 190 % H^H - conjugate transpose 191 W_dl = conj(H)*(transpose(H)*conj(H))^-1; %weights for DL 192 W_ul = ((ctranspose(H)*H)^-1)*ctranspose(H); %weights for UL 200 % adjust channel per each RB
206 %reuse channel
for all symbols
207 for (slot_idx=1:1:nSlots*14)
213 %write files for IQ samples 214 antX_16=bfw_all_slots_int.';
215 file_name = strcat(path_to_usecase,
"dl_bfw_ue_", num2str(
ant-1),
".bin");
223 % adjust channel per each RB
224 for iPrb = 1:1:numRBs
225 bfw_per_sym = [ bfw_per_sym, [real((W_ul(:, ant).'))*iPrb; imag((W_ul(:, ant).'))*iPrb]];
229 %reuse channel
for all symbols
230 for (slot_idx=1:1:nSlots*14)
231 bfw_all_slots = [bfw_all_slots, bfw_per_sym];
234 bfw_all_slots_int = int16(bfw_all_slots./max(max(abs((bfw_all_slots.
')))).*2^15); 236 %write files for IQ samples 237 antX_16=bfw_all_slots_int.';
238 file_name = strcat(path_to_usecase,
"ul_bfw_ue_", num2str(
ant-1),
".bin");
end write files for IQ samples for ant
MHz MHz MHz MHz MHz MHz MHz MHz MHz nNumRbsPerSymF1
otherwise disp('Unknown BW &&mu') end end else disp('mmWave') if(mu >
fwrite(fileID, antX_16, 'int16')
< COPYRIGHT_TAG > This script was tested with GNU version or Matlab(R2017a) close all
total number of tests tests_total
adjust channel per each RB for iPrb
< COPYRIGHT_TAG > This script was tested with GNU Octave