This is the code for the results in the paper "Channel Charting in Real-World Coordinates with Distributed MIMO", S. Taner, V. Palhares, and C. Studer (c) 2025 Sueda Taner
email: taners@ethz.ch
If you are using this code (or parts of it) for a publication, then you must cite the following paper:
S. Taner, V. Palhares and C. Studer, "Channel Charting in Real-World Coordinates with Distributed MIMO," in IEEE Transactions on Wireless Communications, 2025.
- From dichasus-cf0x Dataset: Distributed Antenna Setup in Industrial Environment, Day 1, download the specifications file
spec.json, the channel filesdichasus-cf02,dichasus-cf03anddichasus-cf04(which should have the.tfrecordextension), and their offset estimates (which should bereftx-offsets-dichasus-cf0x.json) into a folder calleddata_raw. - Run
preprocess_dichasus.py. This will store.npversions of the CSI, timestamps, and ground-truth positions extracted from the.tfrecordfiles in a folder calleddataalong with AP positions and LoS bounding boxes for each AP.
- Set your training parameters as explained on top of
main.pyand run for the results in the paper. This code does the following:- We separate the complete dataset into training and testing samples.
- We train a neural network for channel charting or positioning according to the settings.
- We test the channel charting neural network on the test set.
Version 0.1: taners@ethz.ch - initial version for GitHub release.
This project makes use of the following external data and code:
- [dichasus-cf0x Dataset: Distributed Antenna Setup in Industrial Environment, Day 1](https://dichasus.inue.uni-stuttgart.de/datasets/data/dichasus-cf0x/, accessed on 1/3/2024: Our code uses the
cf02,cf03, andcf04datasets. - Dissimilarity Metric-Based Channel Charting by F. Euchner, accessed on 1/3/2024: We use this code for (i) pre-processing the data from
tfrecordsandjsonfiles, and (ii) finding an affine transform that maps a channel chart to real-world positions using ground-truth position labels for our baseline B2.