A Python implementation of the 3GPP TR 38.901 V17.0.0 channel model standard, covering path loss, LOS probability, fast fading, and optional modeling extensions for 5G NR and beyond.
Forked from AmbitiousWarrior/3GPP_Channel_Model. Original author: LuDaYong.
This repository simulates the wireless propagation channel as specified in 3GPP TR 38.901 — the foundational standard defining how radio signals travel between a Base Station (BS) and a User Terminal (UT) across different environments. It models everything from large-scale path loss to small-scale fast fading, including angle-of-departure/arrival, cluster delays, polarization, and Doppler effects.
| Scenario | Description | Typical BS Height |
|---|---|---|
| RMa | Rural Macro | 35 m |
| UMa | Urban Macro | 25 m |
| UMi | Urban Micro (Street Canyon) | 10 m |
| InH | Indoor Hotspot (Office) | 10 m |
| InF | Indoor Factory | 10 m |
| Doc | Description |
|---|---|
| ARCHITECTURE.md | Directory layout, module map, entry points |
| FAST_FADING_PIPELINE.md | The 12-step 3GPP channel simulation process |
| PATHLOSS_AND_LOS.md | Path loss formulas and LOS probability models |
| ADDITIONAL_COMPONENTS.md | Optional extensions: blockage, oxygen absorption, spatial consistency, dual mobility, CDL, Rician fading |
| PHYSICAL_TO_APPLICATION.md | Physical-layer-to-application-layer simulator (latency, PRR) |
The main entry point is Fast_fading_model_with_addtional_modeling_components.py:
# Configure scenario
Scenario = 'UMi_Street_canyon' # RMa | UMa | UMi_Street_canyon | InH_Office
d_2D_out = 50 * math.sqrt(2) # 2D distance in meters
f_c = 5.9 # center frequency in GHz
# The __main__ block runs a 10-iteration simulation
python 3GPP_38901_channelmodel/Fast_fading_model/Fast_fading_model_with_addtional_modeling_components.py3GPP_Channel_Model/
├── ChannelModel.py # V2I baseline models (Friis, two-ray, log-distance)
├── 3GPP_38901_channelmodel/
│ ├── LOS_probability/ # LOS probability per scenario
│ ├── Pathloss/ # Path loss models (RMa, UMa, UMi, InH, InF)
│ ├── Numerical_antenna_model/ # Angle calculation between BS and UT
│ ├── Fast_fading_model/ # Core 12-step simulation (with and without extensions)
│ ├── Additional_modelling_components/ # Optional: blockage, oxygen absorption, spatial consistency, etc.
│ ├── Channel_models_for_link-level_evaluations/ # CDL-A/B/C/D/E models
│ └── O2I_penetration_loss/ # Outdoor-to-indoor car penetration loss
├── PhysicalLayer2ApplicationLayer_channelmodel/ # Latency + PRR simulation
└── Rician-Fading-Python-main/ # Rician fading reference implementation
3GPP TR 38.901 V17.0.0 — "Study on channel model for frequencies from 0.5 to 100 GHz"
Contact original author: [email protected]