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