This code is realized by C programming language, which transformed into the mex function to be called by matlab script.
The Polar encoder and Polad decoder function follows the standard of the 3GPP latest TSG version "3GPP TS 38.212 V15.3.0 (2018-09), Multiplexing and channel coding (Release 15)"
https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=3214
Copyright: Zhipeng Pan, National University of Defense Technology
codewords = polar_encoder(a,A,E,CRC_size);
a --> binary information bits, row vector;
A --> length of the binary information bits, scalar number;
E --> length of the binary codeword bits, scalar number;
CRC_size -->
Value | crc_polynomial_pattern |
---|---|
0 | No CRC |
6 | D^6 + D^5 + 1 |
11 | D^11 + D^10 + D^9 + D^5 + 1 |
16 | D^16 + D^12 + D^5 + 1 |
24 | D^24 + D^23 + D^21 + D^20 + D^17 + D^15 + D^13 + D^12 |
~ | + D^8 + D^4 + D^2 + D + 1 |
codewords --> returned codewords whose length is E;
Note: A + CRC_size <= E
a_hat = polar_decoder(LLR, A, E, L, min_sum,CRC_size);
LLR --> soft information Logarithmic Likelihood Ratios (LLRS), each having a value obtained as LLR = ln(P(bit=0)/P(bit=1)
A --> the length of the decoded information bits;
E --> the length of the codeword bits;
L --> List size of the SCL decoding algorithm
CRC_size -->
Value | crc_polynomial_pattern |
---|---|
0 | No CRC |
6 | D^6 + D^5 + 1 |
11 | D^11 + D^10 + D^9 + D^5 + 1 |
16 | D^16 + D^12 + D^5 + 1 |
24 | D^24 + D^23 + D^21 + D^20 + D^17 + D^15 + D^13 + D^12 |
~ | + D^8 + D^4 + D^2 + D + 1 |
a_hat --> returned decoded information bits whose length is A;
Zhipeng Pan
Changsha, Hunan