The channel data generated by WiThRay is saved in CH. Types of UE positions determine the structure of CH.
Details of the structure of CH are explained here.
BS: base station
IRS: intelligent reflecting surface
UE: user equipment
RT: ray tracing
PG: propagation graph
OFDM: orthogonal frequency division multiplexing
Grid-type UE positions
simulset.x_range = [0 450]
simulset.y_range = [0 450]
simulset.num_grid = [49 49]
simulset.x_range = [150 200]
simulset.y_range = [150 200]
simulset.num_grid = [19 19]
simulset.x_range and simulset.y_range determine the grid map size of UE positions. simulset.num_grid(1) is the number of grid points on the x-axis, and simulset.num_grid(2) is the number of grid points on the y-axis.
Different positions of UE are indexed by idx_t1. The second index of CH.BS.time is fixed as idx_t2=1 for the grid-type channel data. The grid-type data does not consider the mobility of UE. Since channel taps do not change within a channel block, it is not necessary to generate channel taps for every channel snapshot. Thus, the size of CH.BS.time.ant.time is 1x(num_tap). If you want to convert the grid-type channel data into the OFDM domain, first make the circulant channel matrix based on CH.BS.time.ant.time and use discrete Fourier transformation.
Trajectory-type UE positions
The trajectory-type channel data deals with the UE mobility that causes the channel fading. Therefore, the channel taps can change even within the small sampling period. simulset.num_subcar+simulset.num_cycprf channel snapshots are converted to one OFDM block with simulset.num_subcar subcarriers, and consecutive simulset.num_blck OFDM blocks are created. Therefore, the sampling period for obtaining (simulset.num_subcar+simulset.num_cycprf) x simulset.num_subcar channel snapshots is fixed to 1/param.freq_band [sec]. (simulset.num_subcar+simulset.num_cycprf) x simulset.num_subcar channel snapshots construct one channel sample set, and there are simulset.num_samp sample sets, which means total number of channel snapshots is (simulset.num_subcar+simulset.num_cycprf) x simulset.num_blck x simulset.num_samp. The sampling period of sample sets is 1/simulset.period_samp [sec].
Sec2_UE_load.mlx creates (simulset.num_subcar+simulset.num_cycprf) x simulset.num_blck x simulset.num_samp UE positions for channel snapshots, where Sec2_UE_load.mlx randomly generates the trajectory of UE positions.