Skip to content

Source code for paper "MIMO Channel Estimation using Score-Based Generative Models", published in IEEE Transactions on Wireless Communications.

License

Notifications You must be signed in to change notification settings

Awais-k/diffusional_wireless_channels_model

 
 

Repository files navigation

score-based-channels

Source code for estimating MIMO channels using score-based (diffusion) models. See citations for paper references.

Generic flow:

  1. Use matlab/main.m to generate training, validation and test channels. Alternatively, you can download a set of pre-generated train, validation and test channels (seeds 1234, 4321, and 9999 respectively) CDL-D channels from here: https://www.dropbox.com/sh/rcfyde3ccaf3jqd/AABWo7-2DUAhv4EdtWwD-J9Ga?dl=0. These were generated using the Matlab code in this repository. Place these channels in a newly created data directory.
  2. Use train.py to train a deep score-based model for channel estimation with the default parameters used in the paper.
  3. Use hyperparam_tuning.py to find beta and N, exactly like in the paper.

3.1. The script will contain a saved variable oracle_log, which contains the NMSE with respect to the ground truth channels, for all the hyper-parameters, noise levels, and each invididual sample.

3.2. Averaging the error across all samples (axis=-1) and using argmax over the corresponding axes will return the best hyper-parameters for each invididual SNR point (in a loop, assuming known SNR, or also averaged across SNR in the blind setting).

  1. Use inference.py to perform inference with the hyper-parameters found before.
  2. (Optional, incomplete) Use train_wgan.py to train a WGAN model.
  3. Use matlab/test_end_to_end.m with target_channels = 'ours_known' to simulate the end-to-end setup used in the paper: 4 streams of QPSK over 16 x 64 CDL-C channels. Make sure that target_file was generated by inference.py.

Data and pretrained models

The data used in all experiments can be found here: https://utexas.box.com/s/f7g7yqdw5w0fea0b59aym3xsvbvw1uch. We used train_seed = 1234 and test_seed = 4321.

Pretrained models on CDL-{A, B, C, D} and Mixed can be found here: https://utexas.box.com/s/m58udx6h0glwxua88zgdwrff87jvy3qw.

Citations

Full credits for the ncsnv2 repository go to: https://github.com/ermongroup/ncsnv2

Please include the following citation when using or referencing this codebase:

@ARTICLE{9957135,
  author={Arvinte, Marius and Tamir, Jonathan I.},
  journal={IEEE Transactions on Wireless Communications}, 
  title={MIMO Channel Estimation using Score-Based Generative Models}, 
  year={2022},
  volume={},
  number={},
  pages={1-1},
  doi={10.1109/TWC.2022.3220784}}

Other related publications you may be interested in:

@inproceedings{arvinte2022score1,
  title={Score-Based Generative Models for Wireless Channel Modeling and Estimation},
  author={Arvinte, Marius and Tamir, Jonathan},
  booktitle={ICLR Workshop on Deep Generative Models for Highly Structured Data},
  year={2022}
}

@inproceedings{arvinte2022score2,
  title={Score-Based Generative Models for Robust Channel Estimation},
  author={Arvinte, Marius and Tamir, Jonathan I},
  booktitle={2022 IEEE Wireless Communications and Networking Conference (WCNC)},
  pages={453--458},
  year={2022},
  organization={IEEE}
}

About

Source code for paper "MIMO Channel Estimation using Score-Based Generative Models", published in IEEE Transactions on Wireless Communications.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 83.0%
  • MATLAB 16.9%
  • Shell 0.1%