RKHSChannelEstimator#
Note
Estimator constructor defaults mirror the settings used during benchmarking.
- class sionna.bench.mimo_ofdm_chest.papers.delfeld2025.RKHSChannelEstimator(resource_grid: sionna.phy.ofdm.resource_grid.ResourceGrid, *, num_rows: int, num_cols: int, rank: int = 4, sparse_num_iter: int = 19, debias_num_iter: int = 15, step_size: float = 1.57, lambda_scale: float = 58.3, debias_scale: float = 0.00115, err_var_scale: float = 0.00102, time_avg: bool = True, precision: Literal['single', 'double'] | None = None, device: str | None = None)[source]#
Bases:
sionna.phy.ofdm.channel_estimation.BaseChannelEstimator,sionna.phy.ofdm.channel_estimation._PilotGroupMixinChannel estimator that leverages sparsity through RKHS regularization.
This implementation follows Algorithm 1 proposed in:
James Delfeld, Gian Marti, and Chris Dick. Sparse MIMO-OFDM channel estimation via RKHS regularization. arXiv preprint arXiv:2511.20082, 2025.
TL;DR
The estimator solves a low-dimensional surrogate of an optimization problem derived through Reproducing Kernel Hilbert Space (RKHS) theory. The solver uses forward-backward splitting with two stages: a regularized stage that identifies the channel’s support, and a debiasing stage that reconstructs the channel within the support using Tikhonov regularization.
The channel estimator exploits sparsity in the beamspace and the delay domain. The channel is estimated independently for each pilot-bearing OFDM symbol, and a
TimeDomainInterpolatoris used to complete the channel estimate across OFDM symbols.Supported System Geometry
The estimator supports different FFT sizes, UE counts, pilot-bearing OFDM symbol positions, and rectangular receive antenna arrays, provided that the following hold:
Each pilot group is a uniform comb over subcarriers with at least two non-zero pilots.
All pilot groups have the same length.
Every stream has the same number of active pilot-bearing OFDM symbols.
num_rows * num_colsmatches the receive-antenna dimension.
Deviations from the Paper
The default number of iterations and the regularization weights were selected using Optuna, rather than following the paper’s specified values.
The paper does not specify detector-facing error variances, so the implementation returns
err_var_scale * no, where the default value oferr_var_scalewas selected using Optuna.
- Parameters:
resource_grid (ResourceGrid) – Sionna resource grid defining the pilot pattern.
num_rows (int) – Number of rows in the base-station antenna grid.
num_rows*num_colsmust match the receive-antenna dimension.num_cols (int) – Number of columns in the base-station antenna grid.
rank (int) – Low-rank RKHS approximation rank per frequency/row/column dimension. The rank is clipped independently to each available dimension size.
sparse_num_iter (int) – Number of sparse optimization iterations using gradient steps and group soft-thresholding.
debias_num_iter (int) – Number of support-constrained debiasing iterations after sparse support extraction.
step_size (float) – Forward-backward splitting step size.
lambda_scale (float) – Scale applied to the paper’s
sqrt(noise variance)sparse regularization weight.debias_scale (float) – Scale applied to the debiasing Tikhonov weight.
err_var_scale (float) – Nonnegative multiplicative scale applied to the LS pilot error variances before interpolation.
time_avg (bool) – If True, average estimates from all pilot-bearing OFDM symbols and repeat the mean over every OFDM symbol. If False, interpolate linearly across OFDM symbols and extrapolate outside the first and last pilot-bearing symbols.
precision (Optional[Precision]) – Optional Sionna precision setting.
device (Optional[str]) – Optional torch device for Sionna buffers.
Methods
- call(y: torch.Tensor, no: torch.Tensor) tuple[torch.Tensor, torch.Tensor][source]#
Estimate the full effective resource-grid channel.
- Inputs:
y – [batch, num_rx, num_rx_ant, num_ofdm_symbols, fft_size], torch.complex. Received OFDM resource grid.
no – torch.float. Noise variance with a Sionna-compatible broadcast shape.
- Outputs:
h_hat – [batch, num_rx, num_rx_ant, num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers], torch.complex. Channel estimates.
err_var – Same shape as
h_hat, torch.float. Detector-facing channel-estimation error variances.
Hyperparameter Tuning#
- sionna.bench.mimo_ofdm_chest.papers.delfeld2025.tuning.run_tuning(*, study: str = 'rkhs', n_trials: int | None = None, num_mc_batches: int | None = None, batch_size: int | None = None, output_dir: str | pathlib.Path | None = None, algorithm_output_dir: str | pathlib.Path | None = None)[source]#
Algorithmic Tuning
The
"rkhs"stage minimizes weighted NMSE at -10, -5, 0, 5, and 10 dB. It runs 50 seeded TPE trials. Every trial evaluates three batches of four channels at each SNR.Parameter
Search space
rankinteger from 1 through 4
sparse_num_iterinteger from 5 through 20
debias_num_iterinteger from 0 through 20
step_sizelogarithmic from 0.05 through 2
lambda_scalelogarithmic from 1 through 300
debias_scalelogarithmic from 1e-4 through 1
The
"rkhs-validation"stage compares the rounded winner with the existing estimator defaults using 63 batches of four channels per SNR.Error-Variance Calibration
The
"variance"stage tuneserr_var_scalelogarithmically from 1e-3 through 1 using 10 TPE trials. Codeword BLER is evaluated at 10 dB over 63 batches of four channels. TThe
"variance-validation"stage compares the rounded winner with the existing scale.- Parameters:
study (str) – Stage to execute:
"rkhs","rkhs-validation","variance", or"variance-validation".n_trials (int | None) – Trial-count override. If None, use 50 for RKHS tuning and 10 for variance calibration. Validation stages do not run Optuna trials.
num_mc_batches (int | None) – Monte Carlo budget override. If None, use three batches per SNR for RKHS tuning and 63 for validation and variance calibration.
batch_size (int | None) – Channels per batch. If None, use the canonical configuration value of four.
output_dir (str | pathlib.Path | None) – Output directory override for the selected stage.
algorithm_output_dir (str | pathlib.Path | None) – Directory containing the RKHS tuning and validation evidence required by variance calibration.
- Returns:
An Optuna study for tuning stages or a dictionary containing paired-validation results for validation stages.