接收机算法#
此模块包含 cuPHY 中实现的多种接收机算法,因此使用了 GPU 加速。
- class aerial.phy5g.algorithms.channel_estimator.ChannelEstimator#
信道估计器类。
此类在接收到的时隙信号的 DMRS 符号上实现基于传统 MMSE 的信道估计。它输出 DMRS 符号中所有资源元素的信道估计。与 pyAerial 中的许多其他类类似,此类在一个调用中处理共享相同时频资源的 UE 组,即它支持 MU-MIMO。
- __init__(
- num_rx_ant,
- ch_est_algo=1,
- enable_per_prg_chest=0,
- enable_ul_rx_bf=0,
- cuda_stream=None,
- chest_filter_h5=None,
- w_freq_array=None,
- w_freq4_array=None,
- w_freq_small_array=None,
- shift_seq_array=None,
- unshift_seq_array=None,
- shift_seq4_array=None,
- unshift_seq4_array=None,
初始化 ChannelEstimator。
信道估计滤波器可以作为 H5 文件给出,也可以直接作为 Numpy 数组给出。如果两者都没有给出,则信道估计器将使用默认滤波器。
- 参数:
num_rx_ant (int) – 接收天线数量。
ch_est_algo (int) – 信道估计算法。
MMSE (- 0 -)
estimation (- 1 - 带延迟的多阶段 MMSE)
yet (- 2 - pyAerial 不支持 RKHS)
only (- 3 - LS 信道估计)
enable_per_prg_chest (int) – 启用/禁用 PUSCH 每 PRG 信道估计。
0 (-) – 禁用(默认)。
1 (-) – 启用。
enable_ul_rx_bf (int) – 启用/禁用 PUSCH 的波束赋形。
0 – 禁用(默认)。
1 – 启用。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
chest_filter_h5 (str) – 包含信道估计滤波器的 HDF5 文件的文件名。
w_freq_array (np.ndarray)
w_freq4_array (np.ndarray)
w_freq_small_array (np.ndarray)
shift_seq_array (np.ndarray)
unshift_seq_array (np.ndarray)
shift_seq4_array (np.ndarray)
unshift_seq4_array (np.ndarray)
- 返回类型:
None
- estimate(
- *,
- rx_slot,
- slot,
- pusch_configs=None,
- num_ues=None,
- num_dmrs_cdm_grps_no_data=None,
- dmrs_scrm_id=None,
- start_prb=None,
- num_prbs=None,
- prg_size=None,
- num_ul_streams=None,
- dmrs_syms=None,
- dmrs_max_len=None,
- dmrs_add_ln_pos=None,
- start_sym=None,
- num_symbols=None,
- scids=None,
- layers=None,
- dmrs_ports=None,
为多个 UE 组运行信道估计。
这为 pusch_configs 中包含的所有 UE 组运行 cuPHY 信道估计。如果未给出此参数,则需要给出所有其他参数,并且 cuPHY 信道估计仅针对共享相同时频资源的单个 UE 组运行,即具有相同的 PRB 分配以及相同的起始符号和分配的符号数。此单个 UE 组由所有其他参数参数化。
可以使用 Numpy 或 CuPy 数组调用该方法。如果输入数组位于 GPU (CuPy) 上,则输出将在 GPU (CuPy) 上。因此,返回类型应与调用该方法时用于 rx_slot 的类型相同。
- 参数:
rx_slot (Array) – 输入接收数据,类型为 complex64 条目的频率 x 时间 x Rx 天线 Numpy 或 CuPy 数组。
slot (int) – 时隙号。
pusch_configs (List[PuschConfig]) – PUSCH 配置对象列表,每个 UE 组一个。如果给出此参数,则其余参数将被忽略。如果未给出,则需要给出所有其他参数(在这种情况下仅支持一个 UE 组)。
num_ues (int) – 单个 UE 组中的 UE 数量。
num_dmrs_cdm_grps_no_data (int) – 没有数据的 DMRS CDM 组的数量 [3GPP TS 38.212, sec 7.3.1.1]。值:1->3。
dmrs_scrm_id (int) – DMRS 加扰 ID。
start_prb (int) – UE 分配的起始 PRB 索引。
num_prbs (int) – UE 组分配的 PRB 数量。
prg_size (int) – PUSCH 每 PRG 信道估计的 PRG 大小(以 PRB 为单位)。
num_ul_streams (int) – 此 PUSCH 的活动流数量。
dmrs_syms (List[int]) – 对于 UE 组,二进制数列表,每个二进制数指示相应的符号是否为 DMRS 符号。列表的长度等于时隙中符号的数量。0 表示符号中没有 DMRS,1 表示符号是 DMRS 符号。
dmrs_max_len (int) – maxLength 参数,值为 1 或 2,表示 DMRS 是单符号 DMRS 还是单符号或双符号 DMRS。
dmrs_add_ln_pos (int) – 额外的 DMRS 位置的数量。
start_sym (int) – UE 组分配的起始符号索引。
num_symbols (int) – UE 组分配中的符号数量。
scids (List[int]) – UE 组中每个 UE 的 DMRS 序列初始化 SCID [TS38.211, sec 7.4.1.1.2]。值为 0 或 1。
layers (List[int]) – UE 组中每个 UE 的层数。列表的长度等于 UE 的数量。
dmrs_ports (List[int]) – UE 组中每个 UE 的 DMRS 端口。每个条目的格式均为 SCF FAPI 格式,如下所示:从 LSB 开始的位图(掩码),其中每个位指示是否使用相应的 DMRS 端口索引。
- 返回值:
信道估计,作为每个 UE 组的 Rx 天线 x 层 x 频率 x 时间 Numpy 或 CuPy 数组。
- 返回类型:
List[Array]
- class aerial.phy5g.algorithms.noise_intf_estimator.NoiseIntfEstimator#
噪声和干扰估计器类。
此类实现用于噪声和干扰估计的算法。它调用相应的 cuPHY 算法,并提供 cuPHY 均衡和软解映射所需的估计值。
它需要信道估计以及接收到的数据符号作为输入。
- __init__(
- num_rx_ant,
- eq_coeff_algo,
- cuda_stream=None,
初始化 NoiseIntfEstimator。
- 参数:
num_rx_ant (int) – 接收天线数量。
eq_coeff_algo (int) –
用于计算均衡器系数的算法。
0:迫零均衡器。
1:仅使用噪声方差的 MMSE。
2:MMSE-IRC。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- estimate(
- *,
- rx_slot,
- channel_est,
- slot,
- pusch_configs=None,
- num_ues=None,
- num_dmrs_cdm_grps_no_data=None,
- dmrs_scrm_id=None,
- start_prb=None,
- num_prbs=None,
- dmrs_syms=None,
- dmrs_max_len=None,
- dmrs_add_ln_pos=None,
- start_sym=None,
- num_symbols=None,
- scids=None,
- layers=None,
- dmrs_ports=None,
估计噪声和干扰。
这为 pusch_configs 中包含的所有 UE 组运行 cuPHY 噪声和干扰估计。如果未给出此参数,则需要给出所有其他参数,并且 cuPHY 噪声和干扰估计仅针对共享相同时频资源的单个 UE 组运行,即具有相同的 PRB 分配以及相同的起始符号和分配的符号数。
可以使用 Numpy 或 CuPy 数组调用该方法。如果输入数组位于 GPU (CuPy) 上,则输出将在 GPU (CuPy) 上。因此,返回类型应与调用该方法时用于 rx_slot 的类型相同。
- 参数:
rx_slot (Array) – 输入接收数据,类型为 complex64 条目的频率 x 时间 x Rx 天线 Numpy 或 CuPy 数组。
channel_est (List[Array]) – 信道估计,作为每个 UE 组的 Rx 天线 x 层 x 频率 x 时间 Numpy 或 CuPy 数组。
slot (int) – 时隙号。
pusch_configs (List[PuschConfig]) – PUSCH 配置对象列表,每个 UE 组一个。如果给出此参数,则其余参数将被忽略。如果未给出,则需要给出所有其他参数(在这种情况下仅支持一个 UE 组)。
num_ues (int) – UE 组中的 UE 数量。
num_dmrs_cdm_grps_no_data (int) – 没有数据的 DMRS CDM 组的数量 [3GPP TS 38.212, sec 7.3.1.1]。值:1->3。
dmrs_scrm_id (int) – DMRS 加扰 ID。
start_prb (int) – UE 分配的起始 PRB 索引。
num_prbs (int) – UE 组分配的 PRB 数量。
dmrs_syms (List[int]) – 对于 UE 组,二进制数列表,每个二进制数指示相应的符号是否为 DMRS 符号。列表的长度等于时隙中符号的数量。0 表示符号中没有 DMRS,1 表示符号是 DMRS 符号。
dmrs_max_len (int) – maxLength 参数,值为 1 或 2,表示 DMRS 是单符号 DMRS 还是单符号或双符号 DMRS。
dmrs_add_ln_pos (int) – 额外的 DMRS 位置的数量。
start_sym (int) – UE 组分配的起始符号索引。
num_symbols (int) – UE 组分配中的符号数量。
scids (List[int]) – 每个 UE 的 DMRS 序列初始化 SCID [TS38.211, sec 7.4.1.1.2]。值为 0 或 1。
layers (List[int]) – 每个 UE 的层数。列表的长度等于 UE 的数量。
dmrs_ports (List[int]) – 每个 UE 的 DMRS 端口。每个条目的格式均为 SCF FAPI 格式,如下所示:从 LSB 开始的位图(掩码),其中每个位指示是否使用相应的 DMRS 端口索引。
- 返回值:
包含以下内容的元组
List[Array]:每个 PRB、每个 UE 组的噪声/干扰协方差矩阵的 Cholesky 分解的逆矩阵。此列表中的每个条目的大小为接收天线数量 x 接收天线数量 x PRB 数量。
Array:每个 UE 的预均衡宽带噪声方差估计,即每个 UE 一个值,在整个频率分配上取平均值。此值的单位为 dB。
- 返回类型:
List[Array], Array
- class aerial.phy5g.algorithms.channel_equalizer.ChannelEqualizer#
信道均衡器类。
此类实现基于 MMSE 的信道均衡以及软解映射,以获得用于信道解码的对数似然比。
它需要信道估计和噪声及干扰估计作为输入,以及接收到的数据符号。
- __init__(
- num_rx_ant,
- eq_coeff_algo,
- enable_pusch_tdi,
- cuda_stream=None,
初始化 ChannelEqualizer。
- 参数:
num_rx_ant (int) – 接收天线数量。
eq_coeff_algo (int) –
用于计算均衡器系数的算法。
0:迫零均衡器。
1:仅使用噪声方差的 MMSE。
2:MMSE-IRC。
enable_pusch_tdi (int) – 是否使用时域插值。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- equalize(
- *,
- rx_slot,
- channel_est,
- lw_inv,
- noise_var_pre_eq,
- pusch_configs=None,
- num_ues=None,
- num_dmrs_cdm_grps_no_data=None,
- start_prb=None,
- num_prbs=None,
- dmrs_syms=None,
- dmrs_max_len=None,
- dmrs_add_ln_pos=None,
- start_sym=None,
- num_symbols=None,
- layers=None,
- mod_orders=None,
运行均衡和软解映射。
这为 pusch_configs 中包含的所有 UE 组运行 cuPHY 均衡。如果未给出此参数,则需要给出所有其他参数,并且 cuPHY 均衡仅针对共享相同时频资源的单个 UE 组运行,即具有相同的 PRB 分配以及相同的起始符号和分配的符号数。
可以使用 Numpy 或 CuPy 数组调用该方法。如果输入数组位于 GPU (CuPy) 上,则输出将在 GPU (CuPy) 上。因此,返回类型应与调用该方法时用于 rx_slot 的类型相同。
- 参数:
rx_slot (Array) – 输入接收数据,类型为 np.complex64 条目的频率 x 时间 x Rx 天线 Numpy 或 CuPy 数组。
channel_est (List[Array]) – 信道估计,作为每个 UE 组的 Rx 天线 x 层 x 频率 x 时间 Numpy 或 Cupy 数组。
lw_inv (List[Array]) – 每个 PRB、每个 UE 组的噪声/干扰协方差矩阵的 Cholesky 分解的逆矩阵。此列表中的每个条目的大小为接收天线数量 x 接收天线数量 x PRB 数量。
noise_var_pre_eq (Array) – 平均预均衡器噪声方差,单位为 dB。每个 UE 组一个值。
pusch_configs (List[PuschConfig]) – PUSCH 配置对象列表,每个 UE 组一个。如果给出此参数,则其余参数将被忽略。如果未给出,则需要给出所有其他参数(在这种情况下仅支持一个 UE 组)。
num_ues (int) – UE 组中的 UE 数量。
num_dmrs_cdm_grps_no_data (int) – 没有数据的 DMRS CDM 组的数量 [3GPP TS 38.212, sec 7.3.1.1]。值:1->3。
start_prb (int) – UE 分配的起始 PRB 索引。
num_prbs (int) – UE 组分配的 PRB 数量。
dmrs_syms (List[int]) – 对于 UE 组,二进制数列表,每个二进制数指示相应的符号是否为 DMRS 符号。列表的长度等于时隙中符号的数量。0 表示符号中没有 DMRS,1 表示符号是 DMRS 符号。
dmrs_max_len (int) – maxLength 参数,值为 1 或 2,表示 DMRS 是单符号 DMRS 还是单符号或双符号 DMRS。
dmrs_add_ln_pos (int) – 额外的 DMRS 位置的数量。
start_sym (int) – UE 组分配的起始符号索引。
num_symbols (int) – UE 组分配中的符号数量。
layers (List[int]) – 每个 UE 的层数。
mod_orders (List[int]) – 每个 UE 的 QAM 调制阶数。
- 返回值:
包含以下内容的元组
List[Array]:要馈送到解码(速率匹配)的接收比特的对数似然比。每个 UE 组一个 Numpy 数组,每个 Numpy 数组的大小为 8 x 层数 x 子载波数 x 数据符号数。第一维的大小固定为 8,因为支持高达 256QAM 的调制,并且 cuPHY 返回的大小与调制无关。仅使用与实际比特数对应的第一个条目。
List[Array]:均衡后的符号,每个 UE 组一个 Numpy 数组。每个 Numpy 数组的大小等于层数 x 子载波数 x 数据符号数。
- 返回类型:
List[Array], List[Array]
- class aerial.phy5g.algorithms.rsrp_estimator.RsrpEstimator#
RSRP、后均衡器和预均衡器 SINR 估计器类。
此类实现 RSRP 估计以及 PUSCH 接收机管道的后均衡器和预均衡器 SINR 估计。
- __init__(num_rx_ant, enable_pusch_tdi, cuda_stream=None)#
初始化 RsrpEstimator。
- 参数:
num_rx_ant (int) – 接收天线数量。
enable_pusch_tdi (int) – 均衡器系数计算中是否使用时间插值。这会影响后均衡器 SINR。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- estimate(
- channel_est,
- ree_diag_inv,
- noise_var_pre_eq,
- pusch_configs=None,
- num_ues=None,
- num_prbs=None,
- dmrs_add_ln_pos=None,
- layers=None,
运行 RSRP 以及后均衡器和预均衡器 SINR 估计。
可以使用 Numpy 或 CuPy 数组调用该方法。如果输入数组位于 GPU (CuPy) 上,则输出将在 GPU (CuPy) 上。因此,返回类型应与调用该方法时用于 rx_slot 的类型相同。
- 参数:
channel_est (List[Array]) – 信道估计,作为每个 UE 组的 Rx 天线 x 层 x 频率 x 时间 Numpy 或 CuPy 数组。
ree_diag_inv (List[Array]) – 每个 UE 组的后均衡器残余误差协方差对角线的逆矩阵。
noise_var_pre_eq (Array) – 平均预均衡器噪声方差,单位为 dB。每个 UE 组一个值。
pusch_configs (List[PuschConfig]) – PUSCH 配置对象列表,每个 UE 组一个。如果给出此参数,则其余参数将被忽略。如果未给出,则需要给出所有其他参数(在这种情况下仅支持一个 UE 组)。
num_ues (int) – UE 组中的 UE 数量。
num_prbs (int) – UE 组分配的 PRB 数量。
dmrs_add_ln_pos (int) – 额外的 DMRS 位置的数量。这用于导出 DMRS 符号的总数。
layers (List[int]) – 每个 UE 的层数。
- 返回值:
包含以下内容的元组
Array:每个 UE 的 RSRP 值。
Array:每个 UE 的预均衡 SINR 值。
Array:每个 UE 的后均衡 SINR 值。
- 返回类型:
Array, Array, Array
- class aerial.phy5g.algorithms.cfo_ta_estimator.CfoTaEstimator#
CFO 和 TA 估计器类。
此类实现用于载波频率偏移和定时提前估计的算法。它调用相应的 cuPHY 算法,并提供其他 cuPHY 算法所需的估计值。
它需要信道估计作为输入。
- __init__(
- num_rx_ant,
- mu=1,
- enable_cfo_correction=True,
- enable_to_estimation=True,
- cuda_stream=None,
初始化 CfoTaEstimator。
- 参数:
num_rx_ant (int) – 接收天线数量。
mu (int) – 数值。值在 [0, 3] 中。默认值:1。
enable_cfo_correction (int) –
启用/禁用 CFO 校正
0:禁用。
1:启用(默认)。
enable_to_estimation (int) –
启用/禁用时间偏移估计
0:禁用。
1:启用(默认)。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- estimate(
- channel_est,
- pusch_configs=None,
- num_ues=None,
- num_prbs=None,
- dmrs_syms=None,
- dmrs_max_len=None,
- dmrs_add_ln_pos=None,
- layers=None,
估计载波频率偏移和定时提前。
- 参数:
channel_est (List[Array]) – 信道估计,作为每个 UE 组的 Rx 天线 x 层 x 频率 x 时间 Numpy 或 CuPy 数组。
pusch_configs (List[PuschConfig]) – PUSCH 配置对象列表,每个 UE 组一个。如果给出此参数,则其余参数将被忽略。如果未给出,则需要给出所有其他参数(在这种情况下仅支持一个 UE 组)。
num_ues (int) – UE 组中的 UE 数量。
num_prbs (int) – UE 组分配的 PRB 数量。
dmrs_syms (List[int]) – 对于 UE 组,二进制数列表,每个二进制数指示相应的符号是否为 DMRS 符号。列表的长度等于时隙中符号的数量。0 表示符号中没有 DMRS,1 表示符号是 DMRS 符号。
dmrs_max_len (int) – maxLength 参数,值为 1 或 2,表示 DMRS 是单符号 DMRS 还是单符号或双符号 DMRS。
dmrs_add_ln_pos (int) – 额外的 DMRS 位置的数量。
layers (List[int]) – 每个 UE 的层数。列表的长度等于 UE 的数量。
- 返回值:
包含以下内容的元组
Array:每个 UE 的载波频率偏移,单位为 Hz。
Array:每个 UE 的定时偏移,单位为微秒。
- 返回类型:
Array, Array
- class aerial.phy5g.algorithms.demapper.Demapper#
此类提供符号到对数似然比的解映射。
使用的算法是精确的对数 MAP 映射,它在计算上是密集型的。另请注意,这目前纯粹是在 Python 中实现的,因此可能很慢。
- __init__(mod_order)#
初始化解映射器。
- 参数:
mod_order (int) – 调制阶数。支持的值:2、4、6、8。
- 返回类型:
None
- demap(syms, noise_var_inv)#
运行解映射。
- 参数:
syms (np.ndarray) – 调制符号数组。
noise_var_inv (np.ndarray) – 每个子载波的噪声方差的倒数。此数组的大小必须与 syms 广播。
- 返回值:
对数似然比。第一维是调制阶数,否则维度与 syms 的维度相同。
- 返回类型:
np.ndarray
- class aerial.phy5g.algorithms.trt_engine.TrtTensorPrms#
用于保存 TRT 输入和输出张量参数的类。
- property cuphy_data_type: aerial.pycuphy.DataType#
将数据类型转换为 cuPHY 数据类型格式。
- __init__(name, dims, data_type=numpy.float32)#
- 参数:
name (str)
dims (List[int])
data_type (type)
- 返回类型:
None
- class aerial.phy5g.algorithms.trt_engine.TrtEngine#
TensorRT 引擎类。
此类在 NVIDIA 的 TensorRT 及其 cuPHY API 周围实现了一个简单的包装器。它以 TRT 引擎文件作为输入,以及输入和输出张量的名称和维度。TRT 引擎文件可以使用 trtexec 工具从 .onnx 文件离线生成。
- __init__(
- trt_model_file,
- max_batch_size,
- input_tensors,
- output_tensors,
- cuda_stream=None,
初始化 TrtEngine。
- 参数:
trt_model_file (str) – 这是 TRT 引擎(模型)文件。
max_batch_size (int) – 最大批次大小。
input_tensors (List[TrtTensorPrms]) – 从张量名称到输入张量维度的映射。名称是字符串,必须与 TRT 模型文件中找到的名称匹配,形状是整数的可迭代对象。批次维度被跳过。
output_tensors (List[TrtTensorPrms]) – 从张量名称到输出张量维度的映射。名称是字符串,必须与 TRT 模型文件中找到的名称匹配,形状是整数的可迭代对象。批次维度被跳过。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- run(input_tensors)#
运行 TensorRT 模型。
这将使用 NVIDIA TensorRT 引擎运行模型。
- 参数:
input_tensors (dict) – 从输入张量名称到实际输入张量的映射。张量名称必须与初始化中给出的名称以及 TRT 模型中找到的名称匹配。实际批次大小从张量大小中读取。张量可以是 Numpy 或 CuPy 数组。
- 返回值:
从输出张量名称到实际输出张量的映射。
- 返回类型:
dict
- class aerial.phy5g.algorithms.srs_channel_estimator.SrsCellPrms#
SRS 小区参数。
SRS 小区参数列表作为输入提供给 SRS 信道估计器,每个小区一个条目。
- 参数:
slot_num (np.uint16) – 时隙号。
frame_num (np.uint16) – 帧号。
srs_start_sym (np.uint8) – SRS 起始符号。
num_srs_sym (np.uint8) – SRS 符号数。
num_rx_ant_srs (np.uint16) – SRS Rx 天线数量。
mu (np.uint8) – 子载波间隔参数,请参阅 TS 38.211。
- class aerial.phy5g.algorithms.srs_channel_estimator.UeSrsPrms#
UE SRS 参数。
UE SRS 参数列表作为输入提供给 SRS 信道估计器,每个 UE 一个条目。
- 参数:
cell_idx (np.uint16) – 用户所属小区索引。
num_ant_ports (np.uint8) – SRS 天线端口数。1、2 或 4。
num_syms (np.uint8) – SRS 符号数。1、2 或 4。
num_repetitions (np.uint8) – 重复次数。1、2 或 4。
comb_size (np.uint8) – SRS 梳状大小。2 或 4。
start_sym (np.uint8) – 起始 SRS 符号。0 - 13。
sequence_id (np.uint16) – SRS 序列 ID。0 - 1023。
config_idx (np.uint8) – SRS 带宽配置索引。0 - 63。
bandwidth_idx (np.uint8) – SRS 带宽索引。0 - 3。
comb_offset (np.uint8) – SRS 梳状偏移。0 - 3。
cyclic_shift (np.uint8) – 循环移位。0 - 11。
frequency_position (np.uint8) – 频域位置。0 - 67。
frequency_shift (np.uint16) – 频域偏移。0 - 268。
frequency_hopping (np.uint8) – 频率跳频选项。0 - 3。
resource_type (np.uint8) – SRS 分配类型。0:非周期性。1:半持久性。2:周期性。
periodicity (np.uint16) – SRS 周期性(以时隙为单位)。0、2、3、5、8、10、16、20、32、40、64、80、160、320、640、1280、2560。
offset (np.uint16) – 时隙偏移值。0 - 2569。
group_or_sequence_hopping (np.uint8) – 跳频配置。 0: 无跳频。 1: 组跳频。 2: 序列跳频。
ch_est_buff_idx (np.uint16) – 存储SRS估计值的缓冲区索引。
srs_ant_port_to_ue_ant_map (np.ndarray) – SRS天线端口与UE天线在信道估计缓冲区中的映射:将SRS天线端口 i 的估计值存储在 srs_ant_port_to_ue_ant_map[i] 中。
prg_size (np.uint8) – 每个PRG的PRB数量。
- class aerial.phy5g.algorithms.srs_channel_estimator.SrsReport#
SRS 输出报告。
此报告由 SRS 信道估计器返回。
- 参数:
to_est_micro_sec (np.float32) – 时间偏移估计,单位为微秒。
wideband_snr (np.float3) – 宽带 SNR。
wideband_noise_energy (np.float32) – 宽带噪声能量。
wideband_signal_energy (np.float32) – 宽带信号能量。
wideband_sc_corr (np.complex64) – 宽带子载波相关性。
wideband_cs_corr_ratio_db (np.float32)
wideband_cs_corr_use (np.float32)
wideband_cs_corr_not_use (np.float32)
- class aerial.phy5g.algorithms.srs_channel_estimator.SrsChannelEstimator#
SrsChannelEstimator 类。
此类为 5G NR 实现 SRS 信道探测。
- __init__(chest_params=None, cuda_stream=None)#
初始化 SrsChannelEstimator。
- 参数:
chest_params (dict) – 信道估计滤波器和参数字典。设置为 None 以使用默认值。
cuda_stream (int) – CUDA 流。如果未给出,将创建一个。
- 返回类型:
None
- estimate(
- rx_data,
- num_srs_ues,
- num_srs_cells,
- num_prb_grps,
- start_prb_grp,
- srs_cell_prms,
- srs_ue_prms,
运行 SRS 信道估计。
- 参数:
rx_data (Array) – 输入 RX 数据,大小为 子载波数量 x num_srs_sym x 接收天线数量。
num_srs_ues (int) – UE 数量。
num_srs_cells (int) – SRS 小区数量。
num_prb_grps (int) – PRB 组数量。
start_prb_grp (int) – 起始 PRB 组。
srs_cell_prms (List[SrsCellPrms]) – SRS 小区参数列表,每个小区一个。
srs_ue_prms (List[UeSrsPrms]) – UE SRS 参数列表,每个 UE 一个。
- 返回值:
包含以下内容的元组
List[Array]: 信道估计列表,每个 UE 一个。信道估计是一个 PRB 组数量 x 接收天线数量 x 发射天线数量 的 numpy 数组。
Array: 每个 UE 每个 RB 的 SNR。
List[SrsReport]: SRS 宽带统计报告列表,每个 UE 一个。注意:这总是被复制到主机内存。
- 返回类型:
List[Array], Array, List[SrsReport]