Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/matlab-deep-learning/csinet-channel-compression-in-matlab-using-keras
This example shows how to co-execute MATLAB and Python to simulate the effect of channel estimate compression on precoding in a MIMO OFDM channel.
https://github.com/matlab-deep-learning/csinet-channel-compression-in-matlab-using-keras
communications csinet deep-learning keras matlab matlab-deep-learning tensorflow
Last synced: about 5 hours ago
JSON representation
This example shows how to co-execute MATLAB and Python to simulate the effect of channel estimate compression on precoding in a MIMO OFDM channel.
- Host: GitHub
- URL: https://github.com/matlab-deep-learning/csinet-channel-compression-in-matlab-using-keras
- Owner: matlab-deep-learning
- License: other
- Created: 2023-02-10T15:33:20.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-09-16T18:17:02.000Z (4 months ago)
- Last Synced: 2024-09-16T22:20:03.859Z (4 months ago)
- Topics: communications, csinet, deep-learning, keras, matlab, matlab-deep-learning, tensorflow
- Language: MATLAB
- Homepage: https://www.mathworks.com/products/communications.html
- Size: 1.05 MB
- Stars: 8
- Watchers: 5
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# Simulate Channel Compression Effect on Precoding Using MATLAB and Keras with CSINet
This example shows how to co-execute MATLAB® and Python® to simulate the effect of channel estimate compression on precoding in a MIMO OFDM channel. It shows how to:
* Generate CDL channel estimates in MATLAB using the [5G Toolbox™](https://www.mathworks.com/products/5g.html)
* Load and test a pre-trained CSINet Keras™ model using co-execution with Python
* Fine tune the model weights through transfer learning using co-execution with Python
* Simulate the effect of channel estimate compression on precoding in MATLAB using the [5G Toolbox](https://www.mathworks.com/products/5g.html) and [Communications Toolbox™](https://www.mathworks.com/products/communications.html)The following figure summarizes the operations executed in MATLAB (marked in blue) versus those executed in Keras (marked in grey).
![](images/Workflow_Coexecution.png)
## Overview
There are different options for accessing deep learning models within MATLAB, including:
1. Using models created in MATLAB using [Deep Learning Toolbox™](https://www.mathworks.com/products/deep-learning.html)
2. [Converting](https://www.mathworks.com/help/deeplearning/import-deep-neural-networks.html) models from other frameworks into MATLAB
3. Co-executing models from other frameworks with MATLABThis example provides an overview of the third approach. Co-execution is useful for leveraging [wireless products in MATLAB](https://www.mathworks.com/solutions/wireless-communications.html) to test existing deep learning models from other frameworks in an end-to-end link simulation.
This workflow also allows engineering teams working with MATLAB & Python deep learning frameworks to easily combine their work in one environment.
Approaches one & two are useful for building deep learning models from scratch or for using additional capabilities from the [Deep Learning Toolbox](https://www.mathworks.com/products/deep-learning.html) with pre-trained models, such as [Deep Learning Code Generation](https://www.mathworks.com/help/deeplearning/code-generation.html) or [deep learning models in Simulink®](https://www.mathworks.com/help/deeplearning/ug/classify-images-in-simulink-with-imported-tensorflow-network.html).### Requirements
To run this example, you need:
- [MATLAB](http://www.mathworks.com) R2022b or later
- [Communications Toolbox](https://www.mathworks.com/products/communications.html)
- [5G Toolbox](https://www.mathworks.com/products/5g.html)
- [Python](https://www.python.org/downloads/release/python-3104/) (tested with version 3.10.4)
- [TensorFlow™](https://www.tensorflow.org/) (tested with version 2.10.0)
- [Keras](https://keras.io/) (tested with version 2.10.0)
- [Numpy™](https://numpy.org/) (tested with version 1.23.4)For more information about installing Python, see [Install Supported Python Implementation](https://www.mathworks.com/help/matlab/matlab_external/install-supported-python-implementation.html).
## Running the Example
Open and run the live script `SimChanCompEffOnPrecodingUsingMATLABAndKerasWithCSINetExample.mlx`.
To generate a new CDL channel estimates dataset, use the live script `GenerateCSINetDataSet.mlx`.
The live scripts use the helper files `preprocessChannelEstimate.m` and `postprocessChannelEstimate.m` for pre/post-processing the training and testing data sets.### Visualize the channel compression effect
By the end of the example, you will be able to visualize the effect of channel feedback compression with CSINet [1] on the received constellation of an OFDM MIMO channel with zero-forcing precoding.
The following figure shows the effect of using CSINet for channel feedback with compression rate 1/4 and normalized mean square error -42 dB in a CDL channel with the following parameters:
* Tx Antennas: 32
* Rx Antennas: 2
* Delay Profile: CDL-B
* RMS delay spread: 100 ns
* Max delay after truncation: 32
* Max Doppler: 2 Hz
* Resource blocks: 48
* Subcarrier spacing: 30 KHz## References
[1] Wen, Chao-Kai, Wan-Ting Shih, and Shi Jin, "Deep learning for massive MIMO CSI feedback," IEEE Wireless Communications Letters, vol. 7, no. 5, pp. 748-751, Oct. 2018.Copyright 2023, The MathWorks, Inc.
[![View CSINet-Channel-Compression-in-MATLAB-Using-Keras on File Exchange](https://www.mathworks.com/matlabcentral/images/matlab-file-exchange.svg)](https://www.mathworks.com/matlabcentral/fileexchange/124575-csinet-channel-compression-in-matlab-using-keras)