Agora  1.2.0
Agora project
inspect_single_ul_frame.m File Reference

Functions

function inspect_single_ul_frame (dataset_filename, inspect_frame, verbose) %%Load data from the input file and inspect evm and snr %dataset_filename
 
id Data ()
 
 figure ('Name', ['Ant ' num2str(u) ', Frame ' num2str(inspect_frame) ' Receive WaveForm'])
 
 tiledlayout (2, 1) %Top(Real) nexttile
 
 plot (real(combined_rx))
 
 axis ([0 inf -1 1])
 
 title ('Rx Real(I)')
 
 Bottom (Q) nexttile
 
 plot (imag(combined_rx))
 

Variables

 inspect_frame = 5
 
 verbose = "true"
 
end 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_ul_symbols = double(h5readatt(dataset_filename, group_id, 'UL_SLOTS'))
 
 ul_pilot_symbols = double(h5readatt(dataset_filename, group_id, 'UL_PILOT_SLOTS'))
 
 total_users = double(h5readatt(dataset_filename, group_id, 'CL_NUM'))
 
 bs_antennas = double(h5readatt(dataset_filename, group_id, 'ANT_NUM'))
 
 pilot_symbols = double(h5readatt(dataset_filename, group_id, 'PILOT_SLOTS'))
 
Choose the downlink data dataset_id = '/UplinkData'
 
end Dimensions[Samples, Ant, Symbol, Cells, Frame] start = [1 1 1 1 inspect_frame]
 
 count = [(samples_per_slot * 2) bs_antennas total_ul_symbols 1 1]
 
Generate a int16 array rx_syms_hdf5 = h5read(dataset_filename, strcat(group_id, dataset_id), start, count)
 
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 rx_syms_cxdouble = complex(rx_syms_scaled_double(1:2:end, :, :), rx_syms_scaled_double(2:2:end, :, :))
 
Split off pilots and data rx_pilot_cxdouble = rx_syms_cxdouble(:,:,1:ul_pilot_symbols)
 
 rx_data_cxdouble = rx_syms_cxdouble(:,:,1+ul_pilot_symbols:end)
 
end Generate a int16 array rx_pilot_hdf5 = h5read(dataset_filename, strcat(group_id,dataset_id), start, count)
 
Convert to double and scale rx_pilot_scaled_double = double(rx_pilot_hdf5) ./ double(intmax('int16'))
 
Plot Rx waveform for u
 

Function Documentation

◆ axis()

axis ( )

◆ Bottom()

Bottom ( )

◆ Data()

id Data ( )
virtual

◆ figure()

figure ( 'Name'  )

◆ inspect_single_ul_frame()

function inspect_single_ul_frame ( dataset_filename  ,
inspect_frame  ,
verbose   
)

◆ plot() [1/2]

plot ( imag(combined_rx )

◆ plot() [2/2]

plot ( real(combined_rx )

◆ tiledlayout()

tiledlayout ( ,
 
)

◆ title()

title ( 'Rx Real(I)'  )

Variable Documentation

◆ bs_antennas

bs_antennas = double(h5readatt(dataset_filename, group_id, 'ANT_NUM'))

◆ count

◆ cp_len

cp_len = double(h5readatt(dataset_filename, group_id, 'CP_LEN'))

◆ data_size

data_size = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_NUM'))

◆ data_start

data_start = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_START'))

◆ data_stop

data_stop = double(h5readatt(dataset_filename, group_id, 'OFDM_DATA_STOP'))

◆ dataset_id

Choose the pilot data dataset_id = '/UplinkData'

◆ fft_size

fft_size = double(h5readatt(dataset_filename, group_id, 'OFDM_CA_NUM'))

◆ inspect_frame

inspect_frame = 5

◆ pilot_symbols

pilot_symbols = double(h5readatt(dataset_filename, group_id, 'PILOT_SLOTS'))

◆ rx_data_cxdouble

rx_data_cxdouble = rx_syms_cxdouble(:,:,1+ul_pilot_symbols:end)

◆ rx_pilot_cxdouble

Convert to complex double Samples x User x Symbol rx_pilot_cxdouble = rx_syms_cxdouble(:,:,1:ul_pilot_symbols)

◆ rx_pilot_hdf5

clear rx_pilot_hdf5 = h5read(dataset_filename, strcat(group_id,dataset_id), start, count)

◆ rx_pilot_scaled_double

clear rx_pilot_scaled_double = double(rx_pilot_hdf5) ./ double(intmax('int16'))

◆ rx_syms_cxdouble

Convert to complex double Samples x User x Symbol rx_syms_cxdouble = complex(rx_syms_scaled_double(1:2:end, :, :), rx_syms_scaled_double(2:2:end, :, :))

◆ rx_syms_hdf5

clear rx_syms_hdf5 = h5read(dataset_filename, strcat(group_id, dataset_id), start, count)

◆ rx_syms_scaled_double

clear rx_syms_scaled_double = double(rx_syms_hdf5) ./ double(intmax('int16'))

◆ samples_per_slot

end samples_per_slot = double(h5readatt(dataset_filename, group_id, 'SLOT_SAMP_LEN'))

◆ start

Dimensions [Samples, Ant, Symbol, Cells, Frame] start = [1 1 1 1 inspect_frame]

◆ total_ul_symbols

total_ul_symbols = double(h5readatt(dataset_filename, group_id, 'UL_SLOTS'))

◆ total_users

total_users = double(h5readatt(dataset_filename, group_id, 'CL_NUM'))

◆ tx_zero_prefix_len

tx_zero_prefix_len = double(h5readatt(dataset_filename, group_id, 'TX_ZERO_PREFIX_LEN'))

◆ u

end clear u
Initial value:
combined_rx = reshape(squeeze(rx_syms_cxdouble(:, u, :)), [], 1)

◆ ul_pilot_symbols

ul_pilot_symbols = double(h5readatt(dataset_filename, group_id, 'UL_PILOT_SLOTS'))

◆ verbose

Display Info if verbose = "true"
rx_syms_cxdouble
Convert to complex double Samples x User x Symbol rx_syms_cxdouble
Definition: inspect_single_ul_frame.m:43
bs_antennas
bs_antennas
Definition: inspect_single_ul_frame.m:23
u
Plot Rx waveform for u
Definition: inspect_single_ul_frame.m:72
combined_rx
end clear total_users tx_data_cxdouble rx_beacon_cxdouble rx_syms_cxdouble tx_syms_cxdouble combined_rx
Definition: inspect_single_frame.m:148