This repository contains the source code for the results presented in the paper
presented at the 2025 IEEE Wireless Communications and Networking Conference (WCNC) in Milan, Italy.
- The presentation slides can be found in this repository.
- A preprint is available on arXiv.
Although it is considered an important advancement for next-generation wireless systems, distributed massive MIMO suffers from decreasing data rates in user mobility scenarios due to channel aging. Channel prediction aims to overcome this issue by predicting future channel state information (CSI) from past observations. In the paper, we present a novel channel prediction method based on Channel Charting, a self-supervised method for learning a physically meaningful latent representation of the radio environment (the "channel chart") from similarity relationships within the CSI, which enables the prediction of future CSI due to its inherent inertia. Demonstrated on a real-world distributed massive MIMO dataset measured with our DICHASUS channel sounder, Channel Charting-based channel prediction shows higher achievable sum rates for larger prediction horizons compared to a Wiener predictor and the outdated CSI.
Our code is based on Python, TensorFlow, NumPy, SciPy and Matplotlib. Source files are provided as Jupyter Notebooks, which can be opened directly here on GitHub or using e.g. JupyterLab.
We run our Channel Charting experiments on a JupyterHub server with NVMe storage, AMD EPYC 7262 8-Core Processor, 64GB RAM, and a NVIDIA GeForce RTX 4080 GPU for accelerating TensorFlow. All indications of computation times are measured on this system. It should also be possible to run our notebooks on less performant systems.
The Jupyter Notebooks in this repository are numbered. You must execute them in the right order.
0_DownloadDatasets.ipynb: Download parts of the dichasus-cf0x dataset that we use for training and prediction. Due to the large file size, this dataset is not included in this git repository.1_DataPreparation.ipynb: Determine actual indices of datapoints based on their timestamps, as well as the respective indices used for training and prediction. Split Training Set and Prediction Set, and save them as.npyfiles.2_ChannelCharting.ipynb: Compute the fused dissimilarity matrix (angle delay profile + timestamp-based, learn more about this in our tutorial) and train the neural network that implements the forward charting function. Training is based on a Siamese neural network. With GPU acceleration, this should take a few minutes. If you want to reproduce the results based on the same channel chart positions as in our paper, you can simply skip running this notebook, such that the channel chart positions that are stored in theresultsfolder are used in the following notebooks. By running this notebook, the existing channel chart positions will be overwritten.3_ChannelPrediction_ChannelCharting.ipynb: Our Method -> Predict future CSI based on channel charting. Evaluation of the method with fixed prediction horizon.4_ChannelPrediction_Wiener.ipynb: Baseline Method -> Predict future CSI based on a Wiener predictor. Evaluation of the method with fixed prediction horizon.
@inproceedings{10978279,
author={Stephan, Phillip and Euchner, Florian and ten Brink, Stephan},
title={{Channel Charting-Based Channel Prediction on Real-World Distributed Massive MIMO CSI}},
booktitle={2025 IEEE Wireless Communications and Networking Conference (WCNC)},
year={2025},
pages={1-6},
doi={10.1109/WCNC61545.2025.10978279}}
