-ant0=ant_c;
-ant1=ant_c*10;
-ant2=ant_c*20;
-ant3=ant_c*30;
-ant4=ant_c*40;
-ant5=ant_c*50;
-ant6=ant_c*60;
-ant7=ant_c*70;
-ant8=ant_c*80;
-ant9=ant_c*90;
-ant10=ant_c*100;
-ant11=ant_c*110;
-ant12=ant_c*120;
-ant13=ant_c*130;
-ant14=ant_c*140;
-ant15=ant_c*150;
-
-
-ant0_16=int16(ant0.');
-fileID = fopen('ant_0.bin','w');
-fwrite(fileID,ant0_16, 'int16');
-fclose(fileID);
-
-ant1_16=int16(ant1.');
-fileID = fopen('ant_1.bin','w');
-fwrite(fileID,ant1_16, 'int16');
-fclose(fileID);
-
-ant2_16=int16(ant2.');
-fileID = fopen('ant_2.bin','w');
-fwrite(fileID,ant2_16, 'int16');
-fclose(fileID);
-
-ant3_16=int16(ant3.');
-fileID = fopen('ant_3.bin','w');
-fwrite(fileID,ant3_16, 'int16');
-fclose(fileID);
-
-ant4_16=int16(ant4.');
-fileID = fopen('ant_4.bin','w');
-fwrite(fileID,ant4_16, 'int16');
-fclose(fileID);
-
-ant5_16=int16(ant5.');
-fileID = fopen('ant_5.bin','w');
-fwrite(fileID,ant5_16, 'int16');
-fclose(fileID);
-
-ant6_16=int16(ant6.');
-fileID = fopen('ant_6.bin','w');
-fwrite(fileID,ant6_16, 'int16');
-fclose(fileID);
-
-ant7_16=int16(ant7.');
-fileID = fopen('ant_7.bin','w');
-fwrite(fileID,ant7_16, 'int16');
-fclose(fileID);
-
-ant8_16=int16(ant8.');
-fileID = fopen('ant_8.bin','w');
-fwrite(fileID,ant8_16, 'int16');
-fclose(fileID);
-
-ant9_16=int16(ant9.');
-fileID = fopen('ant_9.bin','w');
-fwrite(fileID,ant9_16, 'int16');
-fclose(fileID);
-
-ant10_16=int16(ant10.');
-fileID = fopen('ant_10.bin','w');
-fwrite(fileID,ant10_16, 'int16');
-fclose(fileID);
-
-ant11_16=int16(ant11.');
-fileID = fopen('ant_11.bin','w');
-fwrite(fileID,ant11_16, 'int16');
-fclose(fileID);
-
-ant12_16=int16(ant12.');
-fileID = fopen('ant_12.bin','w');
-fwrite(fileID,ant12_16, 'int16');
-fclose(fileID);
-
-ant13_16=int16(ant13.');
-fileID = fopen('ant_13.bin','w');
-fwrite(fileID,ant13_16, 'int16');
-fclose(fileID);
-
-ant14_16=int16(ant14.');
-fileID = fopen('ant_14.bin','w');
-fwrite(fileID,ant14_16, 'int16');
-fclose(fileID);
-
-ant15_16=int16(ant15.');
-fileID = fopen('ant_15.bin','w');
-fwrite(fileID,ant15_16, 'int16');
-fclose(fileID);
+ %write files for IQ samples
+ for ant = 1:1:ant_num
+ antX=ant_c*(ant*10);
+ antX_16=int16(antX.');
+ file_name = strcat(path_to_usecase,"ant_", num2str(ant-1),".bin");
+ disp(file_name)
+ fileID = fopen(file_name,'w');
+ fwrite(fileID, antX_16, 'int16');
+ fclose(fileID);
+ end
+
+ if bfw_gen
+ disp('Generate BF Weights per RB')
+
+ %seed to make it repeatable
+ rand('seed',47)
+
+ %random channel matrix for single sym on syngle RB
+ H = (rand(trx,ant_num) + 1j*rand(trx,ant_num));
+
+ %calculate weights
+ % W_dl = H^*(H^TH^*)^-1
+ % W_ul = ((H^H*H)^-1)H^H
+ % where H^* - conjugate
+ % H^T - transpose
+ % H^H - conjugate transpose
+ W_dl = conj(H)*(transpose(H)*conj(H))^-1; %weights for DL
+ W_ul = ((ctranspose(H)*H)^-1)*ctranspose(H); %weights for UL
+
+ W_ul = W_ul.';
+
+ for ant = 1:1:ant_num
+ %DL
+
+ bfw_per_sym = [];
+ % adjust channel per each RB
+ for iPrb = 1:1:numRBs
+ bfw_per_sym = [ bfw_per_sym, [real((W_dl(:, ant).'))*iPrb; imag((W_dl(:, ant).'))*iPrb]];
+ end
+
+ bfw_all_slots = [];
+ %reuse channel for all symbols
+ for (slot_idx=1:1:nSlots*14)
+ bfw_all_slots = [bfw_all_slots, bfw_per_sym];
+ end
+
+ bfw_all_slots_int = int16(bfw_all_slots./max(max(abs((bfw_all_slots.')))).*2^15);
+
+ %write files for IQ samples
+ antX_16=bfw_all_slots_int.';
+ file_name = strcat(path_to_usecase,"dl_bfw_ue_", num2str(ant-1),".bin");
+ disp(file_name)
+ fileID = fopen(file_name,'w');
+ fwrite(fileID,antX_16, 'int16');
+ fclose(fileID);
+
+ %UL
+ bfw_per_sym = [];
+ % adjust channel per each RB
+ for iPrb = 1:1:numRBs
+ bfw_per_sym = [ bfw_per_sym, [real((W_ul(:, ant).'))*iPrb; imag((W_ul(:, ant).'))*iPrb]];
+ end
+
+ bfw_all_slots = [];
+ %reuse channel for all symbols
+ for (slot_idx=1:1:nSlots*14)
+ bfw_all_slots = [bfw_all_slots, bfw_per_sym];
+ end
+
+ bfw_all_slots_int = int16(bfw_all_slots./max(max(abs((bfw_all_slots.')))).*2^15);
+
+ %write files for IQ samples
+ antX_16=bfw_all_slots_int.';
+ file_name = strcat(path_to_usecase,"ul_bfw_ue_", num2str(ant-1),".bin");
+ disp(file_name)
+ fileID = fopen(file_name,'w');
+ fwrite(fileID,antX_16, 'int16');
+ fclose(fileID);
+ end
+ end
+end