Skip to content

[Fix] Correct SNR calculation logic#437

Open
JMZ-kk wants to merge 1 commit into
Agora-wireless:developfrom
JMZ-kk:develop
Open

[Fix] Correct SNR calculation logic#437
JMZ-kk wants to merge 1 commit into
Agora-wireless:developfrom
JMZ-kk:develop

Conversation

@JMZ-kk
Copy link
Copy Markdown

@JMZ-kk JMZ-kk commented Feb 28, 2026

Summary

This PR fixes an issue where the measured SNR values did not match the design targets and varied inconsistently across different MIMO configurations.

Specifically, it addresses the incorrect scaling of noise generation regarding Array Gain (total received signal power scaling with users) and Pilot Sparsity (frequency-orthogonal mode).

Problem Description

Previously, the noise generation logic did not account for the signal power scaling inherent in different MIMO configurations. For example, in files/config/examples/rp-sim-ul.json, a setting of "noise_level": 0.01 (targeted for ~40 dB SNR) resulted in inconsistent actual SNRs:

Configuration Uplink Data SNR Pilot SNR
64 UEs × 64 BS 53.3 dB 35.2 dB
16 UEs × 64 BS 47.1 dB 29.1 dB

Root Causes identified:

  1. Array Gain: Total received signal power scales with the number of users ($N_t$), but the noise generation was constant. This caused larger MIMO setups (e.g., 64x64) to artificially have better BER than smaller ones (e.g., 16x16), which is theoretically incorrect for our test cases.
  2. Pilot Sparsity: In frequency-orthogonal mode, pilots use fewer subcarriers. The previous calculation treated them as full-band. Consequently, the pilot symbol power was only $1 / \text{PilotScGroupSize}$ of the data symbol power, leading to severe SNR degradation on pilots and incorrect channel estimation ($H$).

Changes

We adjusted the noise generation to maintain a constant SNR regardless of the configuration:

  • Data Symbols: Scaled noise amplitude by $\sqrt{N_t}$ to offset array gain.
  • Pilot Symbols: Scaled pilot noise amplitude by $1 / \sqrt{\text{PilotScGroupSize}}$ to account for sparsity.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant