本程序只供学习交流使用,请勿用于商业目的。
注:本程序代码包含了 SC SCL BP SCAN和SSC译码算法
-
polar码基本原理v1.docx叙述了polar码的基本原理
-
本程序给出一个主函数示例main,用户输入选择译码算法,以及译码参数 常用参数:
- N: 码长,需为2的幂次
- K: 信息位长度
- 码字构造参数:
- design SNR: BA 构造方法的参数值
- sigma: GA构造方法的初始值
- SC译码时无参数
- SCL译码时要求输入List大小和CRC校验位数
- BP译码时要求输入迭代次数,一般为40;
- SCAN译码要求输入迭代次数,一般为1-4;
- SCL的CRC校验生成用了随机校验矩阵的方法,实验结果显示与标准CRC校验性能一致
- SSC算法为SC算法的简化算法,速度提升明显
-
initPC是polar码初始化程序,主要构建Polar的数据结构,包括了:
- N: 码长
- K: 信息位长(code rate
$R = \frac{K}{N}$ ) - n:
$\log_2(N)$ - FZlookup:
$N$ 长向量,为0表示为frozen bits位置,为-1表示信息比特位置 - L: 用于存储运算过程中的左信息值(算法中的L矩阵)
- B: 用于存储运算过程中的右信息值(算法中的B矩阵)
- bitreversedindices: 等效于$G= B\times F^{\otimes n}$中的$B$
- 其中FZlookup是Frozen Bits的位置构造的码字针对的是$G= B\times F^{\otimes n}$生成矩阵,而非$G= F^{\otimes n}$ (这两种形式都很常用,但一定要弄清楚)
注意这里没有考虑memory简化,因此大小都为$N\times(n+1)$
-
pencode是编码程序。引入crc校验时,需要将crc校验信息当成是信息的一部分进行编码
-
polar_SC_decode是SC译码算法
-
polar_BP_decode是BP译码算法
-
polar_SCAN_decode是SCAN译码算法
-
polar_SCL_decode是SCL译码算法
-
polar_SSC_decode是SC算法的简化算法
-
constructedCode文件夹下的construct_polar_code_GA函数为高斯近似polar码构造方法,construct_polar_code_Ba为巴氏参数界构造方法。
[1] Arikan E. Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels[J]. IEEE Transactions on Information Theory, 2009, 55(7):3051-3073.
[2] Massey J L. Capacity, Cutoff Rate, and Coding for a Direct-Detection Optical Channel[J]. IEEE Transactions on Communications, 1981, 29(11):1615-1621.
[3] Hassani S H, Urbanke R. On the scaling of polar codes: I. The behavior of polarized channels[C]// IEEE International Symposium on Information Theory Proceedings. IEEE, 2010:874-878.
[4] Mori R, Tanaka T. Performance of polar codes with the construction using density evolution[J]. IEEE Communications Letters, 2009, 13(7):519-521.
[5] Tal I, Vardy A. How to Construct Polar Codes[J]. IEEE Transactions on Information Theory, 2013, 59(10):6562-6582.
[6] Trifonov P. Efficient Design and Decoding of Polar Codes[J]. IEEE Transactions on Communications, 2012, 60(11):3221-3227.
[7] Vangala H, Viterbo E, Hong Y. A Comparative Study of Polar Code Constructions for the AWGN Channel[J]. Mathematics, 2015.
[8] Sun S, Zhang Z. Designing Practical Polar Codes Using Simulation-Based Bit Selection[J]. IEEE Journal on Emerging & Selected Topics in Circuits & Systems, 2017, PP(99):1-1.
[9] Korada S B, Şaşoǧlu E, Urbanke R. Polar Codes: Characterization of Exponent, Bounds, and Constructions[J]. Information Theory IEEE Transactions on, 2010, 56(12):6253-6264.
[10] Tal I, Vardy A. List Decoding of Polar Codes[J]. IEEE Transactions on Information Theory, 2015, 61(5):2213-2226.
[11] Balatsoukas-Stimming A, Parizi M B, Burg A. LLR-Based Successive Cancellation List Decoding of Polar Codes[J]. IEEE Transactions on Signal Processing, 2015, 63(19):5165-5179.
[12] Niu K, Chen K. CRC-Aided Decoding of Polar Codes[J]. IEEE Communications Letters, 2012, 16(10):1668-1671.
[13] Li B, Shen H, Tse D. An Adaptive Successive Cancellation List Decoder for Polar Codes with Cyclic Redundancy Check[J]. IEEE Communications Letters, 2012, 16(12):2044-2047.
[14] Niu K, Chen K. Stack decoding of polar codes[J]. Electronics Letters, 2012, 48(12):695-697.
[15] Fayyaz U U, Barry J R. Polar codes for partial response channels[C]// IEEE International Conference on Communications. IEEE, 2013:4337-4341.
[16] Fayyaz U U, Barry J R. Low-Complexity Soft-Output Decoding of Polar Codes[J]. IEEE Journal on Selected Areas in Communications, 2014, 32(5):958-966.
[17] Arikan E. A performance comparison of polar codes and Reed-Muller codes[J]. Communications Letters IEEE, 2008, 12(6):447-449.
潘志鹏
湖南,长沙