Skip to main content

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

Metadata

Release files for whatshow-phy-detect-ep 1.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for whatshow-phy-detect-ep 1.0.5
File Size Uploaded Provenance
whatshow_phy_detect_ep-1.0.5.tar.gz 9.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for whatshow-phy-detect-ep 1.0.5
File Interpreter ABI Platform
whatshow_phy_detect_ep-1.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 16.8 kB

Release files / whatshow_phy_detect_ep-1.0.5.tar.gz

Download URL whatshow_phy_detect_ep-1.0.5.tar.gz
Size 9.2 kB
Tags Source
SHA-256 checksum
How to use checksums
48ff29a0834f077193838ee37bd1a504ea9612ac2552610a873f2963d6736bdd
BLAKE2b-256 checksum
How to use checksums
47c60be18a45c6ee215ed8eefb190daf7522a9be8bded1badbf565171487c7a3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.17

Release files / whatshow_phy_detect_ep-1.0.5-py3-none-any.whl

Download URL whatshow_phy_detect_ep-1.0.5-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b791e32b90be422edeac3d4e7c82e007ed7f14127e6ac5d3d88dd7c5b5704f33
BLAKE2b-256 checksum
How to use checksums
4a1b990cb67f4e5d83b57f047b083aba1dea25e212c0d2f49c311a086fbb6604
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.17

Security for whatshow-phy-detect-ep 1.0.5

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page