|
function | inspect_agora_results (dataset_filename, verbose) %%Load data from the input file and inspect evm and snr %dataset_filename |
|
id | Data () |
|
end | New (Beacon RSSI) figure('Name' |
|
| set (gca, 'FontSize', 18) |
|
| plot (rx_beacon_rssi.', 'LineWidth', 2) axis([0 total_frames -50 0]) |
|
| ylabel ('Beacon RSSI(dB)') xlabel('Frame') title(['Rx Beacon Power in ' experiment ' Experiment']) legend(cl_sdr_id) if total_dl_symbols |
|
*for complex | type (native float) total_samples |
|
| Samples (complex) x User Ant x Downlink Data Symbol Id tx_data_cxdouble |
|
Plot SNR &EVM Results | figure ('Name', ['File ' dataset_filename]) |
|
| tiledlayout (3, 1) % Top(SNR) nexttile |
|
| plot (rf_snr.', 'LineWidth', 2) |
|
| ylabel ('Pilot SNR(dB)') title([experiment ' Beamforming SNR &EVM plots']) legend(cl_sdr_id) nexttile |
|
| plot (snr.', 'LineWidth', 2) |
|
| ylabel ('EVM SNR(dB)') %Bottom(EVM) nexttile |
|
| plot (evm.', 'LineWidth', 2) |
|
| axis ([0 total_frames 0(4 *max(mean(evm, 2)))]) |
|
| ylabel ('EVM(%)') clear rx_beacon_cxdouble rx_syms_cxdouble tx_syms_cxdouble total_users |
|
|
| inspect_frame = 100 |
|
| verbose = "false" |
|
end | total_frames = double(h5readatt(dataset_filename, group_id, 'MAX_FRAME')) |
|
| samples_per_slot = double(h5readatt(dataset_filename, group_id, 'SLOT_SAMP_LEN')) |
|
| tx_zero_prefix_len = double(h5readatt(dataset_filename, group_id, 'TX_ZERO_PREFIX_LEN')) |
|
| data_size = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_NUM')) |
|
| data_start = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_START')) |
|
| data_stop = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_STOP')) |
|
| fft_size = double(h5readatt(dataset_filename, group_id, 'OFDM_CA_NUM')) |
|
| cp_len = double(h5readatt(dataset_filename, group_id, 'CP_LEN')) |
|
| total_dl_symbols = double(h5readatt(dataset_filename, group_id, 'DL_SLOTS')) |
|
| dl_pilot_symbols = double(h5readatt(dataset_filename, group_id, 'DL_PILOT_SLOTS')) |
|
| cl_sdr_id = h5readatt(dataset_filename, group_id, 'CL_SDR_ID') |
|
Choose the Beacon data | dataset_id = '/BeaconData' |
|
end Generate a int16 array | rx_beacon_hdf5 = h5read(dataset_filename, strcat(group_id,dataset_id)) |
|
Dimensions[Samples, Ant, Symbol, Cells, Frame] | total_users = size(rx_beacon_hdf5, 2) |
|
Convert to double and scale | rx_beacon_scaled_double = double(rx_beacon_hdf5) ./ double(intmax('int16')) |
|
Convert to complex double Samples x User x Symbol | rx_beacon_cxdouble = complex(rx_beacon_scaled_double(1:2:end, :, :, 1:total_frames), rx_beacon_scaled_double(2:2:end,:, :, 1:total_frames)) |
|
| rx_beacon_rssi = process_beacon(rx_beacon_cxdouble, tx_zero_prefix_len) |
|
| experiment = 'MU-MIMO' |
|
end | Beacon |
|
end Generate a int16 array | rx_syms_hdf5 = h5read(dataset_filename, strcat(group_id,dataset_id)) |
|
Convert to double and scale | rx_syms_scaled_double = double(rx_syms_hdf5) ./ double(intmax('int16')) |
|
Convert to complex double Samples x User x Symbol x Frame | rx_syms_cxdouble = complex(rx_syms_scaled_double(1:2:end, :, :, 1:total_frames), rx_syms_scaled_double(2:2:end,:, :, 1:total_frames)) |
|
Split off pilots and data | rx_pilot_cxdouble = rx_syms_cxdouble(:,:,1:dl_pilot_symbols, :) |
|
| rx_data_cxdouble = rx_syms_cxdouble(:,:,1+dl_pilot_symbols:end, :) |
|
| configs |
|
end | start = [1 1 1 1 1] |
|
| count = [total_samples total_users dl_pilot_symbols 1 1] |
|
| tx_pilot_hdf5 = double(h5read(dataset_filename, strcat(group_id,dataset_id), start, count)) |
|
Convert to complex | tx_pilot_cxdouble = complex(tx_pilot_hdf5(1:2:end,:,:), tx_pilot_hdf5(2:2:end,:,:)) |
|
| tx_data_hdf5 = double(h5read(dataset_filename, strcat(group_id,dataset_id), start, count)) |
|
Convert to complex type | tx_syms_cxdouble = complex(tx_data_hdf5(1:2:end,:,:), tx_data_hdf5(2:2:end,:,:)) |
|
| evm = zeros(total_users, total_frames) |
|
| snr = zeros(total_users, total_frames) |
|
| rf_snr = zeros(total_users, total_frames) |
|
for | i |
|