Skip to main content

No project description provided

Project description

Phy_Detect_EP

This detection method is proposed in Expectation Propagation Detection for High-Order High-Dimensional MIMO Systems by Javier Céspedes. It has three process: cavity distribution, Bayesian estimation and iterative update.

Cespedes, J., Olmos, P. M., Sánchez-Fernández, M., & Perez-Cruz, F. (2014). Expectation propagation detection for high-order high-dimensional MIMO systems. IEEE Transactions on Communications, 62(8), 2840-2849.

Also, the initial version of this code is from Alva Kosasih.

How to use

All EP codes are uniform in matlab and python as a class of EP. This class contains the whole process. This section will illustrate the methods of this class following the process of detection.

  • EP(the parameter names follow the notations in Expectation Propagation Detection for High-Order High-Dimensional MIMO Systems)
    @constellation: the constellation, a vector
    @beta: the percentage for taking values from the previous iteration
    @epsilon: the default minimal variance
    @l: the maximal iteration
    @early_stop: whether stop early
    @early_stop_min_diff: the elemental minimal (element-wise) difference in mean and variance
    @batch_size(optional) : the batch size (only used in python).
    % matlab
    M = 16;
    constellation = qammod([0: M - 1], M, "UnitAveragePower", true);
    ep = EP(constellation, "beta", 0.1, "epsilon", 1e-13, "early_stop_min_diff", 1e-4);
    
    # python
    ep = EP(constellation, beta=0.1, epsilon=1e-13, early_stop_min_diff=1e-4); # no batch
    ep = EP(constellation, beta=0.1, epsilon=1e-13, early_stop_min_diff=1e-4, batch_size=10); # using batch
    
  • detect
    @y: the received signal, a vector of [(batch_size), rx_num], [(batch_size), rx_num, 1] or [(batch_size), 1, rx_num]
    @H: the channel matrix, a matrix of [(batch_size), rx_num, tx_num]
    @No: the noise (linear) power
    @sym_map: false by default. If true, the output will be mapped to the constellation
    # matlab
    syms = ep.detect(y, H, No); # no hard mapping
    syms = ep.detect(y, H, No, sym_map=True); # hard mapping
    
    # python
    syms = ep.detect(y, H, No); # no hard mapping
    syms = ep.detect(y, H, No, sym_map=True); # hard mapping
    

Samples

Before running any sample code, please make sure you are at the root path of this repository. Also, Matlab codes require running init in the command window first to load directories.

  • Alva: this is the original code from Alva Kosasih.
  • Tests
    • Tests/test_case_01: test the difference between the mature code from and newly proposed EP object (no early stop).
    • Tests/test_case_02: draw the SER vs SNR between the mature code from and newly proposed EP object (early stop).

Further Reading

The division of two Gaussian distribution

latex

latex

latex

Now we set latex and we are going to calculate X to see the distribution

latex

latex

Therefore, we can conclude that the the new mean and new variance is given as below (ignoring the constant part because this is just the likelihood of two Xs are same).

latex

latex

Cavity distribution

latex

Cavity Marginal

Now we are going to use the 2 Gaussian Distribution Division knowledge to calculatelatex

Now, we follow the Math symbols in the paper, suppose latex ( latex is the diagonal of the matrix latex ) and latex

Here, we need pay attention that the mean of p(x) is latex instead of latex. The proof is give below where we follow the exponential family.

latex

Here, we can see that the mean is latex

Now, we are going to find out latex in Lth iteration

latex

latex

latex

The Pair Update latex

From the step computing the mean latex and the variance latex of prediction latex, we can use those 2 results to calculate latex; that is, for (L+1)th iteration,

latex

Using 2 Gaussian Distribution Division knowledge, for the variance,

latex

latex For the mean,

latex

latex

latex

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whatshow_phy_detect_ep-1.0.5.tar.gz (9.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whatshow_phy_detect_ep-1.0.5-py3-none-any.whl (7.6 kB view details)

Uploaded Python 3

File details

Details for the file whatshow_phy_detect_ep-1.0.5.tar.gz.

File metadata

  • Download URL: whatshow_phy_detect_ep-1.0.5.tar.gz
  • Upload date:
  • Size: 9.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.17

File hashes

Hashes for whatshow_phy_detect_ep-1.0.5.tar.gz
Algorithm Hash digest
SHA256 48ff29a0834f077193838ee37bd1a504ea9612ac2552610a873f2963d6736bdd
MD5 5da838e40ade60a5f88ea60184df3915
BLAKE2b-256 47c60be18a45c6ee215ed8eefb190daf7522a9be8bded1badbf565171487c7a3

See more details on using hashes here.

File details

Details for the file whatshow_phy_detect_ep-1.0.5-py3-none-any.whl.

File metadata

File hashes

Hashes for whatshow_phy_detect_ep-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 b791e32b90be422edeac3d4e7c82e007ed7f14127e6ac5d3d88dd7c5b5704f33
MD5 2325332b7941065d4df4474dd444a14d
BLAKE2b-256 4a1b990cb67f4e5d83b57f047b083aba1dea25e212c0d2f49c311a086fbb6604

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page