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 fromAlva Kosasih.TestsTests/test_case_01: test the difference between the mature code from and newly proposedEPobject (no early stop).Tests/test_case_02: draw the SER vs SNR between the mature code from and newly proposedEPobject (early stop).
Further Reading
The division of two Gaussian distribution
Now we set and we are going to calculate
X to see the distribution
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).
Cavity distribution
Cavity Marginal
Now we are going to use the 2 Gaussian Distribution Division knowledge to calculate
Now, we follow the Math symbols in the paper, suppose (
is the diagonal of the matrix
) and
Here, we need pay attention that the mean of p(x) is instead of
. The proof is give below where we follow the exponential family.
Here, we can see that the mean is
Now, we are going to find out in
Lth iteration
The Pair Update 
From the step computing the mean and the variance
of prediction
, we can use those 2 results to calculate
; that is, for
(L+1)th iteration,
Using 2 Gaussian Distribution Division knowledge, for the variance,
For the mean,
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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| whatshow_phy_detect_ep-1.0.5.tar.gz | 9.2 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.