精华内容
下载资源
问答
  • 极化码编码构造

    2018-01-17 17:45:55
    极化码编码构造,采用Arikan论文中的最简单的编码构造方法。
  • 基于FPGA的低硬件复杂度的极化码编码实现方案
  • 实验室的极化码编码译码仿真程序,在BSC、BEC、AWGN信道条件下都有。使用密度进化法和巴氏参数估计信道,仿真性能非常好。 在Matlab下应用非常方便,支持多组仿真。配有应用说明,非常好用。希望能给大家带来帮助。
  • 极化码解码算法程序

    2017-06-06 16:03:07
    极化码的解码算法
  • 极化码的编解码Matlab代码仿真。只有在平稳信道下的sc译码仿真结果。希望能够给你提供帮助。
  • 基于FPGA的低硬件复杂度的极化码编码实现方案.pdf
  • 信道编码方案中的极化码是5G通信领域中的研究热点。极化码在串行抵消译码下容易受到差错传播的影响,在中短码长上的性能并不理想。针对这些问题,在不同仿真情况下对系统极化码和非系统极化码的性能差异性进行了研究...
  • Polar Code是通过引入信道极化的概念而建立的。信道极化分两个阶段,分别是信道联合和信道分裂。通过信道的联合和分裂,各个子信道的对称容量将呈现两极分化的趋势:随着码长NNN的增加,一部分子信道的容量趋于1,而...

    前言

    《Polar Code(1)概述》中建立了PolarCode初步印象,本文将详细阐述Polar Code的编码原理。Polar Code是通过引入信道极化的概念而建立的。信道极化分两个阶段,分别是信道联合和信道分裂。通过信道的联合和分裂,各个子信道的对称容量将呈现两极分化的趋势:随着码长 N N N的增加,一部分子信道的容量趋于1,而其余子信道的容量趋于0。Polar Code正是利用这一信道极化现象,在容量趋于1的 K K K个子信道上传输信息比特,在其余子信道上传输冻结比特(即收发双方已知的固定比特,通常设置为全零)。由此构成的信道编码即为Polar Code,码率为 K N \frac{K}{N} NK

    预备知识

    一个二进制输入离散无记忆信道(B-DMC)可表示为 W : X → Y W:X\rightarrow Y W:XY X X X是输入符号集合, Y Y Y是输出符号集合,转移概率为 W ( y ∣ x ) , x ∈ X , y ∈ Y W(y \vert x),x \in X,y \in Y W(yx),xX,yY。由于信道是二进制输入,集合 X = { 0 , 1 } ; X=\{0,1\}; X={0,1}; Y Y Y W ( Y ∣ x ) W(Y\vert x) W(Yx)是任意值。对信道 W W W N N N次使用后的信道可以表示为 W N W^N WN,则信道 W N : X N → Y N W^N:X^N\rightarrow Y^N WN:XNYN的转移概率为 W N ( y 1 N ∣ x 1 N ) = ∏ i = 1 N W ( y ∣ x ) W ^N(y_{1}^{N}\vert x_{1}^{N})=\prod_{i=1}^NW(y\vert x) WN(y1Nx1N)=i=1NW(yx)
    对于一个B-DMC信道 W W W,有两个重要的参数:
    对称容量(Symmetric Capacity):
    I ( W ) ≜ ∑ y ∈ Y ∑ x ∈ X 1 2 W ( y ∣ x ) l o g W ( y ∣ x ) 1 2 W ( y ∣ 0 ) + 1 2 W ( y ∣ 1 ) I(W)\triangleq\sum\limits_{y\in Y}\sum\limits_{x\in X}\frac{1}{2}W(y\vert x)log\frac{W(y\vert x)}{\frac{1}{2}W(y\vert 0)+\frac{1}{2}W({y\vert 1})} I(W)yYxX21W(yx)log21W(y0)+21W(y1)W(yx)
    巴氏参数(Bhattacharyya Parameter):
    Z ( W ) ≜ ∑ y ∈ Y W ( y ∣ 0 ) W ( y ∣ 1 ) Z(W)\triangleq\sum\limits_{y\in Y}\sqrt{W(y\vert0)W(y\vert1)} Z(W)yYW(y0)W(y1)
    I ( W ) I(W) I(W)是对信道速率的度量, Z ( W ) Z(W) Z(W)是对信道可靠性的度量。 I ( W ) I(W) I(W)是信道 W W W等概率输入的情况下可靠传输时的最大速率。而 Z ( W ) Z(W) Z(W)是信道 W W W只传输0或1下最大似然判决错误概率的上限。
    I ( W ) I(W) I(W) Z ( W ) Z(W) Z(W)的取值范围均为 [ 0 , 1 ] [0,1] [0,1]。由于对数以2为底,因此码率和信道容量的单位为bit。 I ( W ) I(W) I(W) Z ( W ) Z(W) Z(W)满足这样的关系:当且仅当 Z ( W ) ≈ 0 Z(W)\approx0 Z(W)0时, I ( W ) ≈ 1 I(W)\approx1 I(W)1;当且仅当 Z ( W ) ≈ 1 Z(W)\approx1 Z(W)1时, I ( W ) ≈ 0 I(W)\approx0 I(W)0

    二进制对称信道BEC和二进制删除信道BSC

    W W W为对称信道时, I ( W ) 等 于 香 农 容 量 I(W)等于香农容量 I(W)。所谓信道对称,既满足:对于任意 y ∈ Y y\in Y yY,有 W ( y ∣ 0 ) = W ( − y ∣ 1 ) W(y\vert 0)=W(-y\vert1) W(y0)=W(y1)
    二进制对称信道(Binary Symmetric Channel,BSC)和二进制删除信道(Binary Erasure Channel,BEC)都是满足对称性的B-DMC。
    具体的说,对于 Y = { 0 , 1 } Y =\{0,1\} Y={0,1},满足 W ( 0 ∣ 0 ) = W ( 1 ∣ 1 ) W(0\vert0)=W(1\vert1) W(00)=W(11) W ( 1 ∣ 0 ) = W ( 0 ∣ 1 ) W(1\vert0)=W(0\vert1) W(10)=W(01)的B-DMC就是BSC。
    对于 y ∈ Y y\in Y yY,满足 W ( y ∣ 0 ) W ( y ∣ 1 ) = 0 W(y\vert0)W(y\vert1)=0 W(y0)W(y1)=0 W ( y ∣ 0 ) = W ( y ∣ 1 ) W(y\vert 0)=W(y\vert 1) W(y0)=W(y1)的B-DMC为BEC。对于BEC,符号 y y y称为删除符号(Erasure Symbol)。

    基本的数学表示说明

    行向量 ( a 1 , . . . , a N ) (a_1,...,a_N) (a1,...,aN)在这里简写为 a 1 N a_1^N a1N。对于给定的行向量 a 1 N a_1^N a1N,其子向量表示为 a i j , 1 ≤ i , j ≤ N a_i^j,1\leq i,j\leq N aij,1i,jN,且 i ≤ j i\leq j ij。对于给定的 a 1 N a_1^N a1N A ⊂ 1 , . . . , N A\subset{1,...,N} A1,...,N,记 a A a_A aA表示子向量 ( a i : i ∈ A ) (a_i:i\in A) (ai:iA)。记 a 1 , o j a_{1,o}^j a1,oj表示奇数索引的子向量 ( a k : 1 ≤ k ≤ j ; k ∈ o d d ) (a_k:1\leq k \leq j;k \in odd) (ak:1kj;kodd)。记 a 1 , e j a_{1,e}^j a1,ej表示偶数索引的子向量 ( a k : 1 ≤ k ≤ j ; k ∈ e v e n ) (a_k:1\leq k \leq j;k \in even) (ak:1kj;keven)
    举个栗子: a 1 5 = ( 5 , 4 , 6 , 2 , 1 ) a_1^5=(5,4,6,2,1) a15=(5,4,6,2,1),其中 a 2 4 = ( 4 , 6 , 2 ) a_2^4=(4,6,2) a24=(4,6,2) a 1 , e 5 = ( 4 , 2 ) a_{1,e}^5=(4,2) a1,e5=(4,2) a 1 , o 5 = ( 5 , 6 , 1 ) a_{1,o}^5=(5,6,1) a1,o5=(5,6,1),全零向量则记为 0 1 N 0_1^N 01N
    在此讨论的向量、矩阵的运算均是二元域上的运算,即 G F ( 2 ) GF(2) GF(2)。记 ⊕ \oplus 为模 2 2 2加,记 ⊗ \otimes K r o n e c k e r P o w e r Kronecker Power KroneckerPower
    A ⊗ n A^{\otimes n} An表示为A的n次 K r o n e c k e r P o w e r Kronecker Power KroneckerPower。A的n次 K r o n e c k e r P o w e r Kronecker Power KroneckerPower有递归表示 A ⊗ n = A ⊗ A ⊗ n − 1 A^{\otimes n}=A\otimes A^{\otimes {n-1}} An=AAn1,并且定义 A ⊗ 0 ≜ [ 1 ] A^{\otimes 0}\triangleq[1] A0[1]
    ∣ A ∣ |A| A表示集合 A A A中元素的个数,记 1 A 1_A 1A表示为集合A的指示函数。若 x ∈ A x\in A xA,则 1 A ( x ) = 1 1_{A(x)}=1 1A(x)=1,若 x ∉ A x\notin A x/A,则 1 A ( x ) = 0 1_{A(x)}=0 1A(x)=0

    信道极化

    信道极化分为两个阶段:信道联合(Channel Combining)和信道分裂(Channel Splitting)阶段。

    信道联合

    在这一阶段,联合B-DMC W W W的N个独立副本,通过递归的方式产生一个向量信道 W N : X N → Y N W^N:X^N\rightarrow Y^N WNXNYN,其中 N N N为2的幂次 N = 2 n , n ≥ 0 N=2^n,n\ge 0 N=2n,n0。递归开始于第0级( n = 0 n=0 n=0),只使用 W W W的1个副本,并定义 W 1 ≜ W W_1\triangleq W W1W。第1级( n = 1 n=1 n=1)递归联合了两个两个独立的副本,如图1所示,得到向量信道 W 2 : X 2 → Y 2 W_2:X^2\rightarrow Y^2 W2:X2Y2,其转移概率为:
    W 2 ( y 1 , y 2 ∣ u 1 , u 2 ) = W ( y 1 ∣ u 1 ⊕ u 2 ) W ( y 2 ∣ u 2 ) W_2(y_1,y_2|u_1,u_2)=W(y_1|u_1\oplus u_2)W(y_2|u_2) W2(y1,y2u1,u2)=W(y1u1u2)W(y2u2)
    在这里插入图片描述
    第二级( n = 2 n=2 n=2)递归如图2所示,联合信道 W 2 W_2 W2的2个独立副本得到信道 W 4 : X 4 → Y 4 W_4:X^4\rightarrow Y^4 W4:X4Y4,其转移概率为:
    W 4 ( y 1 4 ∣ u 1 4 ) = W ( y 1 2 ∣ u 1 ⊕ u 2 , u 3 ⊕ u 4 ) W 2 ( y 3 4 ∣ u 2 , u 4 ) W^4(y_1^4|u_1^4)=W(y_1^2|u_1\oplus u_2,u_3\oplus u_4)W_2(y_3^4|u_2,u_4) W4(y14u14)=W(y12u1u2,u3u4)W2(y34u2,u4)
    在这里插入图片描述
    在图2中, R 4 R_4 R4是完成从 ( s 1 , s 2 , s 3 , s 4 ) (s_1,s_2,s_3,s_4) (s1,s2,s3,s4) v 1 4 = ( s 1 , s 3 , s 2 , s 4 ) v_1^4=(s_1,s_3,s_2,s_4) v14=(s1,s3,s2,s4)的置换操作(排序)。从信道 W 4 的 输 入 W 4 W_4的输入W^4 W4W4的输入的映射 u 1 4 → x 1 4 u_1^4\rightarrow x_1^4 u14x14可用公式表示为 x 1 4 = u 1 4 G 4 x_1^4=u_1^4G_4 x14=u14G4 G 4 = [ 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 ] G_4=\left [ \begin{matrix} 1 & 0 & 0 & 0 \\ 1 & 0 & 1 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 1 \end{matrix} \right] G4=1111001101010001。 因此 W 4 W_4 W4 W 4 W^4 W4的转移概率有关系式 W 4 ( y 1 4 ∣ u 1 4 ) = W 4 ( y 1 4 ∣ u 1 4 G 4 ) W_4(y_1^4|u_1^4)=W^4(y_1^4|u_1^4G_4) W4(y14u14)=W4(y14u14G4)。值得注意地是,这个所说的所有的加全部是模二加( ⊕ \oplus )。
    图3所示的是递归结构的一般形式。 W N / 2 W_{N/2} WN/2的两个独立副本联合产生信道 W N W_N WN。输入向量 u 1 N u_1^N u1N进入信道 W N W_N WN,首先被转换为 s 1 N : s 2 i − 1 = u 2 i − 1 ⊕ u 2 i , 1 ≤ i ≤ N / 2 s_1^N:s_{2i-1}=u_{2i-1}\oplus u_{2i},1\leq i \leq N/2 s1N:s2i1=u2i1u2i,1iN/2 R N R_N RN表示比特反转排序操作,输入记为 s 1 N s_1^N s1N,输出记为 v 1 N = ( s 1 , s 3 , . . . , s N − 1 , s 2 , s 4 , . . . , s N ) v_1^N=(s^1,s^3,...,s^N-1,s^2,s^4,...,s^N) v1N=(s1,s3,...,sN1,s2,s4,...,sN) v 1 N v_1^N v1N则成为2个 W N / 2 W_{N/2} WN/2独立副本输入。
    在这里插入图片描述
    映射 u 1 N → v 1 N u_1^N\rightarrow v_1^N u1Nv1N是二元域 G F ( 2 ) GF(2) GF(2)上的线性变换。 u 1 N → x 1 N u_1^N\rightarrow x_1^N u1Nx1N是由复合信道 W N W_N WN到原始信道 W N W^N WN的输入映射,其映射也是线性变换。因此有 x 1 N = u 1 N G N x_1^N=u_1^NG_N x1N=u1NGN。称 G N G_N GN为N维生成矩阵。信道 W N W_N WN和信道 W N W^N WN的转移概率有如下关系:
    W N ( y 1 N ∣ u 1 N ) = W N ( y 1 N ∣ u 1 N G N ) W_N(y_1^N|u_1^N)=W^N(y_1^N|u_1^NG_N) WN(y1Nu1N)=WN(y1Nu1NGN)
    其中 y 1 N ∈ Y N y_1^N \in Y^N y1NYN u 1 N ∈ X N u_1^N \in X^N u1NXN

    信道分裂

    这是信道极化的第二阶段。将信道联合构成的复合信道 W N W_N WN分裂成 N N N个二进制输入的坐标信道(Coordinate Channels) W N ( i ) : X → Y N × X i − 1 , 1 ≤ i ≤ N W_N^{(i)}:X\rightarrow Y^N\times X^{i-1},1\leq i \leq N WN(i):XYN×Xi11iN,定义其转移概率为:
    W N ( i ) ( y 1 N , u 1 i − 1 ) ≜ ∑ u i + 1 ∈ X N − i 1 2 N − 1 W N ( y 1 N ∣ u 1 N ) W_N^{(i)}(y_1^N,u_1^{i-1})\triangleq \sum \limits_{u_{i+1}\in X^{N-i}}\frac{1}{2^{N-1}}W_N(y_1^N|u_1^N) WN(i)(y1N,u1i1)ui+1XNi2N11WN(y1Nu1N)
    其中 ( y 1 N , u 1 i − 1 ) (y_1^N,u_1^{i-1}) (y1N,u1i1)表示 W N ( i ) W_N^{(i)} WN(i)的输入,而 u i u_i ui表示 W N ( i ) W_N^{(i)} WN(i)的输入。
    奇序分裂子信道和偶序分裂子信道的转移概率由两个递归式可以得到。对任何 n ≥ 0 , N = 2 n , 1 ≤ i ≤ N / 2 n\ge 0,N=2^n,1\le i \le N/2 n0,N=2n,1iN/2,有:
    W N ( 2 i − 1 ) ( y 1 N , u 1 2 i − 2 ∣ u 2 i − 1 ) = ∑ u 2 i 1 2 W N / 2 ( i ) ( y 1 N / 2 , u 1 , o 2 i − 2 ⊕ u 1 , e 2 i − 2 ∣ u 2 i − 1 ⊕ u 2 i ) ⋅ W N / 2 ( i ) ( y N / 2 + 1 N , u 1 , e 2 i − 2 ∣ u 2 i ) W_N^{(2i-1)}(y_1^N,u_1^{2i-2}|u_{2i-1})=\sum \limits_{u_{2i}} \frac{1}{2}W_{N/2}^{(i)}(y_1^{N/2},u_{1,o}^{2i-2}\oplus u_{1,e}^{2i-2}|u_{2i-1}\oplus u_{2i}) \cdot W_{N/2}^{(i)}(y_{N/2+1}^{N},u_{1,e}^{2i-2}|u_{2i}) WN(2i1)(y1N,u12i2u2i1)=u2i21WN/2(i)(y1N/2,u1,o2i2u1,e2i2u2i1u2i)WN/2(i)(yN/2+1N,u1,e2i2u2i)
    W N ( 2 i ) ( y 1 N , u 1 2 i − 1 ∣ u 2 i ) = 1 2 W N / 2 ( i ) ( y 1 N / 2 , u 1 , o 2 i − 2 ⊕ u 1 , e 2 i − 2 ∣ u 2 i − 1 ⊕ u 2 i ) ⋅ W N / 2 ( i ) ( y N / 2 + 1 N , u 1 , e 2 i − 2 ∣ u 2 i ) W_N^{(2i)}(y_1^N,u_1^{2i-1}|u_{2i})=\frac{1}{2}W_{N/2}^{(i)}(y_1^{N/2},u_{1,o}^{2i-2}\oplus u_{1,e}^{2i-2}|u_{2i-1}\oplus u_{2i}) \cdot W_{N/2}^{(i)}(y_{N/2+1}^{N},u_{1,e}^{2i-2}|u_{2i}) WN(2i)(y1N,u12i1u2i)=21WN/2(i)(y1N/2,u1,o2i2u1,e2i2u2i1u2i)WN/2(i)(yN/2+1N,u1,e2i2u2i)

    信道极化定理

    定理1:对于任意B-DMC W W W与任意 δ ∈ ( 0 , 1 ) \delta\in(0,1) δ(0,1),当 N N N以2的幂次趋近于无穷大时,极化信道 W N ( i ) W_N^{(i)} WN(i)中,满足 I ( W N ( i ) ) ∈ ( 1 − δ , 1 ] I(W_N^{(i)})\in (1-\delta,1] I(WN(i))(1δ,1]的信道数占总的信道数 N N N的比例趋于 I ( W ) I(W) I(W)
    满足 I ( W N ( i ) ) ∈ ( 0 , δ ] I(W_N^{(i)})\in (0,\delta] I(WN(i))(0,δ]的信道所占的比例趋于 1 − I ( W ) 1-I(W) 1I(W)
    定理2:对于任意的B-DMC W W W I ( W ) > 0 I(W)>0 I(W)>0,且对于任意的 R < I ( W ) R<I(W) R<I(W),存在一个序列集合 A N ⊂ 1 , . . . , N , N ∈ 1 , 2 , . . . , 2 n , . . . A_N\subset{1,...,N},N\in{1,2,...,2^n,...} AN1,...,N,N1,2,...,2n,...,对于所有的 i ∈ A N i\in A_N iAN,有 ∣ A N ∣ ≥ N R |A_N|\ge NR ANNR Z ( W N ( i ) ) ≤ O ( N − 5 / 4 ) Z(W_N^{(i)})\leq O(N^{-5/4}) Z(WN(i))O(N5/4)
    标注:这两个定理在Arikan的论文的最后有详细的证明。

    极化编码

    利用极化现象构建的编码可以达到对称容量 I ( W ) I(W) I(W),称为极化编码(Polar Coding)。

    极化编码的基本思想(基于线性分组码)

    只在 Z ( W N ( i ) ) Z(W_N^{(i)}) Z(WN(i))趋近于0的坐标信道 W N ( i ) W_N^{(i)} WN(i)上发送信息比特。极化码具有一般的二元xianxing分组码的基本编码要素,因而可以显示地写出其生成矩阵来完成编码:
    x 1 N = u 1 N G N x_1^N=u_1^NG_N x1N=u1NGN
    其中 u 1 N u_1^N u1N为原始比特序列, x 1 N x_1^N x1N为编码以后的比特序列, G N G_N GN为生成矩阵,码长为 N = 2 n N=2^n N=2n
    极化码的编码步骤:
    1.极化信道的可靠估计
    2.比特混合
    3.构造生成矩阵

    极化信道可靠估计(巴氏参数)

    对于BEC,Arikan给出的方法是计算巴氏参数
    Z ( W N ( i ) ) = ∑ y 1 N ∈ Y N ∑ u 1 i − 1 ∈ X i − 1 W N ( i ) ( y 1 N , u 1 i − 1 ∣ 0 ) W N ( i ) ( y 1 N , u 1 i − 1 ∣ 1 ) Z(W_N^{(i)})=\sum \limits_{y_1^N\in Y^N}\sum \limits_{u_1^{i-1}\in X^{i-1}}\sqrt {W_N^{(i)}(y_1^N,u_1^{i-1}|0)W_N^{(i)}(y_1^N,u_1^{i-1}|1)} Z(WN(i))=y1NYNu1i1Xi1WN(i)(y1N,u1i10)WN(i)(y1N,u1i11)
    Z ( W N ( i ) ) Z(W_N^{(i)}) Z(WN(i))越小,相应的信道的对称容量也就越大;反之, Z ( W N ( i ) ) Z(W_N^{(i)}) Z(WN(i))说明该信道不可靠。
    对于非BEC,如BSC信道或AWGNC,不能得到精确的巴氏参数,需要进行密度进化或高斯近似法估计信道的可靠性,详见《Polar Code(4)编码之极化信道可靠性估计》。

    比特混合

    在这一步的规则是:选择可靠性最大的 K K K个分裂子信道传输信息比特,其他分裂子信道传输冻结比特。这一步的输出即为原始比特 u 1 N u_1^N u1N

    构造生成矩阵

    生成矩阵表示为
    G N = B N F ⊗ n G_N=B_NF^{\otimes n} GN=BNFn
    其中 F ⊗ n F^{\otimes n} Fn表示对矩阵 F = [ 1 0 1 1 ] F=\left [ \begin{matrix} 1 & 0\\ 1 & 1 \end{matrix} \right] F=[1101] n n n次克罗内克积,有递归式 F ⊗ n = F ⊗ F ⊗ ( n − 1 ) F^{\otimes n}=F\otimes F^{\otimes (n-1)} Fn=FF(n1) B N B_N BN是排序矩阵,用于完成比特反序重排的操作。所谓的比特反序重排,就是将每个原序列的十进制序号 i ∈ { 1 , 2 , . . . , N } i \in \{1,2,...,N\} i{1,2,...,N}按二进制表示为 ( i − 1 ) → ( b n , b n − 1 , . . . , b 1 ) (i-1)\rightarrow(b_n,b_n-1,...,b_1) (i1)(bn,bn1,...,b1),其中 b n b_n bn为最高有效位;再将该二进制序列反序,得到 { b 1 , b 2 , . . . , b n } \{b_1,b_2,...,b_n\} {b1,b2,...,bn}。最后以 b 1 b_1 b1为最高有效位重新按十进制表示成 { b 1 , b 2 , . . . , b n } → ( j − 1 ) \{b_1,b_2,...,b_n\}\rightarrow (j-1) {b1,b2,...,bn}(j1),令输出序列的第 j j j个元素取值为原序列的第 i i i个元素。 B N B_N BN的递归定义式为:
    B N = R N ( I 2 ⊗ B N / 2 ) B_N=R_N(I_2\otimes B_{N/2}) BN=RN(I2BN/2)
    其中 I 2 I_2 I2为2维单位阵, B 2 = I 2 B_2=I_2 B2=I2;矩阵 R N R_N RN为置换矩阵,对输入序列完成奇序元素和偶序元素的分离,即先排奇序元素,再排偶序元素,其作用效果如下:
    ( u 1 , u 2 , u 3 , u 4 , . . . , u N ) × R N = ( u 1 , u 3 , u 5 , . . . , u N − 1 , u 2 , u 4 , u 6 , . . . , u N ) (u1,u2,u3,u4,...,uN)\times R_N=(u_1,u_3,u_5,...,u_{N-1},u_2,u_4,u_6,...,u_N) (u1,u2,u3,u4,...,uN)×RN=(u1,u3,u5,...,uN1,u2,u4,u6,...,uN)

    总结

    本节首先介绍了Polar Code的预备知识,如对称容量、巴氏参数以及所涉及的数学符号的表示。其次介绍了信道极化的两个阶段:信道联合和信道分裂。最后阐述了Polar Code的编码过程:通过构造生成矩阵 G N G_N GN,通过计算各个分裂子信道的错误概率得出信道可靠度用以判断信息比特位置从而获得 u 1 N u_1^N u1N;两者相乘得到 u 1 N G N u_1^NG_N u1NGN即为Polar Code。

    另外

    极化码是一种线性分组码,通过构造生成矩阵而获得编码。只要给定码长 N N N,编译码结构就唯一确定了。极化码基于信道极化做到了扬长避短。在最可靠的子信道上传输信息比特是扬长,在最不可靠的子信道的传输冻结比特是避短。

    参考文献

    [1] Arikan E. Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels[J]. IEEE Transactions on Information Theory, 2008, 55(7):3051-3073.

    最后

    CSDN上的基本为全文摘录,修改部分主要是基于自己的理解,仅供读者参考
    本文作者: Marshall
    本文链接: https://marshallcomm.cn/2017/03/04/polar-code-2-encoding-principle/

    展开全文
  • 极化码是目前唯一可以从数学角度证明达到香农极限的纠错编码技术。但是传统的译码算法、连续删除(SC)译码和连续删除列表(SCL)译码算法复杂度较高,使得译码过程有较大译码延时。经过研究译码算法的原理和特点,...
  • 为解决系统极化码编码过程中因分步计算造成的时延和由循环迭代“异或”计算造成的计算复杂度,提出并定义了降维裂解策略,并由此提出了基于降维裂解策略的系统极化码并行编码算法,然后在 AWGN 信道下进行了仿真...
  • 极化码sc译码matlab代码 Polar-code-under-BEC-channel #MATLAB simulation for Polar code under BEC #参数设置: #N:码长 #K:信息码码长 #Rate:码率 #A:信息码位置集合 #Ac:冻结比特位置集合 #u_a:冻结比特 ...
  • 极化码编译码

    2017-11-02 16:57:16
    极化码的编译码仿真程序,利用sc译码,性能很好,可以下载使用
  • 为了实现极化码在LTE系统中的应用,提出了两类LTE系统中的极化码编码调制方案:联合极化编码调制(MLC-PCM)方案和比特交织极化编码调制(BIPCM)方案。其中,MLC-PCM方案凸显了通信系统中联合极化设计对系统性能...
  • 有关极化码编码与译码原理,以及matlab仿真,一篇毕设论文,有需要的可以拿去参考
  • 使用该源代码可搭配我发布的极化码系列的博客使用,内容包含极化码构造算法巴氏参数算法和GA高斯构造算法,极化码译码算法SC算法,SCL算法,CA-SCL算法。该matlab仿真代码模拟了从信源信号的构造,到编码,到发送,...
  • 目录 (如要找其他内容,欢迎访问我的主页寻找) #前言 #极化码概述 ...#极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 极化码编码 ...

    1、内容目录

    1. 开篇1-内容介绍&参考文献
    2. 概述2-什么是极化码?
    3. 原理3-Arikan原版论文学习总结
    4. 编码算法4-巴氏参数、GA算法以及matlab仿真
    5. 译码算法5-SC算法及matlab仿真
    6. 译码算法6-SCL、CA-SCL及matlab仿真

    2、极化码编码

    通过对上一节内容的学习,我们初步认识了极化码和极化效应,在本节中,我将对极化码的编码原理、方式和对应的MATLAB仿真代码进行介绍,希望会对大家有帮助。

    2.1、引言

    所谓极化码编码,就是利用极化效应来进行信道编码,使其能够达到对称信道容量I(W)的编码方法。极化码编码的基本思想就是针对N个极化信道,建立一种信息位的选择方式,使每一个信息比特都可以独立地通过一个并行的极化信道,并且仅在信道对称容量I(W) ≈1 或者巴氏参数Z(W)≈0 的信道上发送我们实际要传输的信息比特;在剩下的极化信道上,可传输一些收发双方都已知的比特,这个集合被称为冻结集,冻结集传输的比特称为冻结位。
    在进行实际编码的过程中,首先对信息序列进行预处理,得到长度为K的输入信息比特,K是小于等于N的;然后根据已经选出的信息集,将输入信息比特在长度为N的极化码序列 (N位极化码序列就是上节中通过信道极化效应所得到的,而信息比特只映射到了信道I(W)值排名前K位的极化码序列序号对应的位置上 )上进行一 一映射,而剩余的N-K位冻结位按照预定义的值统一为“0”或者“1”,冻结位的值对于信道传输效果并没有影响。之后再将信源序列送入我们所设计的极化码编码器,完成编码工作。

    2.2、极化码编码原理

    2.2.1、陪集码

    在学习极化码编码之前,先引入陪集码的概念,极化码是陪集码的一种特例。定义陪集码的长度为N,N= 2 n 2^n 2n,n≥0,对于所有长度的陪集码,采用同一种编码规则进行编码
    在这里插入图片描述
    上式中 G N G_N GN就是上一节中定义的极化码生成矩阵。这里我们设集合A是集合 {1,2,…,N} 的任意一个子集,则可以将上式写为
    在这里插入图片描述
    在上式中, u A u_A uA表示以集合A中的元素为序号的比特信息, A c A^c Ac表示以集合 {1,2,…,N} 为定义域,集合A在该定义域中的补集。矩阵 G N ( A ) G_N(A) GN(A)是取生成矩阵 G N G_N GN相应的的行向量,组成一个子矩阵,上述行向量由集合A的元素一 一确定。

    若已知集合A,向量 u A c u_A^c uAc已经进行预定义,需要传送的信息向量 u A u_A uA也已知,我们可以建立一个从信息序列 u A u_A uA到码字序列 x 1 N x_1^N x1N的映射关系,我们将这个映射关系称为陪集码。陪集码以 G N ( A ) G_N(A) GN(A)为生成矩阵,由固定的向量所决定,把这一类码都称为 G N G_N GN陪集码。 一个陪集码 G N G_N GN(N,K,A, u A c u_A^c uAc)中,N是极化码长度,K是信息位的长度,也表示集合A的大小,码率表示为R=K/N,集合A称为是信息位集合, u A c u_A^c uAc称为冻结比特集合。

    例如,定义一个参数集为(4,2,{2,4},(1,0)),其编码情况如下:
    在这里插入图片描述
    当输入信息序列为( u 2 u_2 u2, u 4 u_4 u4)=(1,1) 时,生成的码字序列为 x 1 4 x_1^4 x14=(1,1,0,1)。
    (注:上式中的加号都表示模2加法运算)

    2.2.2、极化码的构造

    陪集码的编码过程是对极化码的编码过程的一种简单预演,在后面的介绍中,你会发现极化码的编码过程与陪集码的编码过程有异曲同工之妙。接下来为大家介绍如何构造极化码,即如何通过数学计算,得到我们所需要的信息位集合A。
    为了得到信息位集合A,我们需要用到前面介绍过的两个信道参数,信道容量I(W)与巴氏参数Z(W),通过对N个极化信道的信道参数进行计算,我们选取“前K个最可靠极化信道”来传输需要传输的信息,其余位都作为冻结位。
    目前比较常见的构造方法有:都有巴氏参数(Bhattacharyya parameter)法、蒙特卡洛(Monte Carlo)构造方法、密度进化(DE)构造方法、高斯近似(Gaussian
    approximation, GA)构造方法、极化重量(PW)构造方法等。在目前存在的算法中,一般不计算I(W)的值,因为它非常难算;大部分构造算法都是利用计算参数Z(W)来进行判决 ,但除了二进制删除信道(BEC)以外,只能计算Z(W)的近似值。
    在本节的介绍中,我选取了代表性的两种构造算法,来进行详细分析和算法设计。第一种是针对BEC信道,计算精确的Z(W)值来进行极化码构造;第二种是针对高斯信道(AWGN),采用高斯近似构造方法,近似求取信道参数。

    巴氏参数构造算法

    巴氏参数构造方法是E.Arikan在他的论文[1]中,针对二进制删除信道(BEC)所提出的一种构造方式。已知巴氏参数
    在这里插入图片描述
    它表示最大似然译码的错误概率上界。Arikan在他的论文[1]中证明,对一个二进制删除信道来说,假设其删除概率为epsilon,信道分裂后得到的虚拟比特信道的巴氏参数
    { Z( W N i W_N^i WNi)}可以通过以下递归方式计算:在这里插入图片描述
    上述递归的初始条件是 在这里插入图片描述
    Z( W N j W_N^j WNj)表示信道 W N W_N WN分裂后的第 j 个子信道对应的巴氏参数。有上述可知,每一个子信道的巴氏参数都可以有上述递归算式进行精确计算得出。信道容量与巴氏参数之间的换算关系为:I(W1(1))=1- Z( W N j W_N^j WNj) 。

    下列算法给出了BEC信道下求K个最可靠子信道的步骤 :

    1. 输入极化码长度N和BEC信道删除概率。
    2. 信道巴氏参数初始化:在这里插入图片描述
    3. 利用下列公式,计算出每一个子信道 W N i W_N^i WNi的巴氏参数:在这里插入图片描述
    4. 将计算后的N个子信道的巴氏参数进行排序,将巴氏参数值最小的K个信道序号选择为信息位。

    基于上述算法,在matlab进行仿真,下图两张图分别给出不同码长下的BEC信道的极化现象。
    在这里插入图片描述

                                                  码长N=512的极化码的信道极化现象
    

    在这里插入图片描述

                                                   码长N=1024的极化码的信道极化现象
    

    由以上两图中可以发现,当信道索引在0-0.5N之间时,对应的大部分子信道的信道容量趋于“0”;当信道索引在0.5N-N之间时,对应的大部分子信道的信道容量趋于“1”;当信道索引在0.5N附近时,对应子信道的信道容量取值是不确定的。因此我们选择该种方式构造极化码时,可以按照码率,从下标索引比较大的地方开始排序选择,可以节省构造时间。
    代码如下:

    % 二进制删除信道的极化码构造(以信道容量为衡量标准)
    % function IWi=BEC(N,epsilon)
    N=256;
    epsilon=0.5;  % 删除概率
    n=log2(N);
    IWi=zeros(n+1,N);
    IWi(1,1)=1-epsilon;
    for i=1:n
        k=2^(i-1);
        for j=1:k
            tmp=IWi(i,j);
            IWi(i+1,2*j-1)=tmp^2;
            IWi(i+1,2*j)=2*tmp-tmp^2;  
        end 
    end
    scatter((1:N),IWi(n+1,1:N),'.b');
    axis([0 N 0 1]);
    xlabel('Channel index');
    ylabel('Symmetric capacity');
    

    高斯近似构造(GA)算法

    GA算法是针对AWGN信道所采取的一种极化码构造算法。在AWGN信道下,由于Z(W)参数不能直接算出,只能得到近似的结果,再选择出性能比较好的信道来。假设我们在发送端发送码字序列X,将该码字进行二进制相移键控(BPSK)调制得到码字序列S, s i s_i si=1-2 x i x_i xi ,经过高斯信道加噪后,在接收端收到码字序列Y。则该高斯信道的信道容量为
    在这里插入图片描述
    其中信道转移概率W(y | x)为
    在这里插入图片描述
    其中π是圆周率,e是自然底数,x∈X是发送端信源码字的一个比特信息,y∈Y是接收端接收序列的一个比特信息, δ 2 δ^2 δ2是 AWGN信道的噪声方差,它的值可以根据定义的高斯信道信噪比来计算,计算方程为:在这里插入图片描述
    其中R是码率,SNR为信噪比,其单位为分贝(dB)。
    在 AWGN 信道中,接收端根据接收的yi进行译码,信息比特的对数似然比(Log Likelihood Ratio,LLR)为
    在这里插入图片描述
    该对数似然比为服从高斯分布的随机变量,因为 y i y_i yi 服从参数为 N(1, δ 2 δ^2 δ2) 的高斯分布,所以 2y/ δ 2 δ^2 δ2 服从高斯分布在这里插入图片描述
    由此可知该对数自然比满足方差为均值的二倍关系,即LLR(y)~N(2/ σ 2 σ^2 σ2,4/ σ 2 σ^2 σ2)。在SC译码过程中,信息比特的对数似然比为:在这里插入图片描述将上式中的在这里插入图片描述简写成 L L R N i LLR_N^i LLRNi,由前面的叙述可知 L L R N i LLR_N^i LLRNi是服从高斯分布的随机变量,其高斯分布参数满足方差为均值二倍。下面我们将计算对数似然比的均值,该均值可以很好的近似上述所求的对数似然比,以此来代表等效比特信道的可靠性。下面是该均值的计算方法:
    在这里插入图片描述
    其中:在这里插入图片描述在这里插入图片描述

    由于上述公式中含有太多的复杂运算,使得计算起来代价很大,复杂度很高,因此需要有一个近似的简单算式来表示上述结果的值。因此后来科学家Chung定义了一种近似方程,可比较好的近似表示上述方程的值。即AGA-chung公式,如下所示:
    在这里插入图片描述
    上述递归计算的初始条件是E( L L R 1 1 LLR_1^1 LLR11)=2/ δ 2 δ^2 δ2。在所有的信道中,选取具有最大LLR均值的极化信道作为传输信息比特的信道。下列给出了在高斯信道下进行高斯近似构造极化码的算法。

    1. 输入:高斯信道的噪声方差σ2,信源序列的长度N。

    2. 初始化:E( L L R 1 1 LLR_1^1 LLR11)=2/ δ 2 δ^2 δ2

    3. 利用上述公式计算N个子信道的对数似然值LLR的期望值

    4. 输出N个对数似然值LLR的期望

    5. 选取期望值最大的K个作为信息位集合,剩余N-K个位作为冻结位集合。

    基于上述算法,在matlab进行仿真,下列两张图像为不同码长下的AWGN信道极化现象。

    在这里插入图片描述

                                                 码长N=512,sigma=0.5,AWGN信道极化现象
    

    在这里插入图片描述

                                                码长N=1024,sigma=0.5,AWGN信道极化现象
    

    由以上两图可发现,当信道索引比较小时,其对应的信道对数似然比的期望值也比较小;当信道索引比较大时,其对应的信道对数似然比的期望值也比较大;当信道索引处于中间值时,其对应的信道对数似然比的期望值呈阶梯式上升趋势。因为,当我们在选择信息位时,可以按对数似然比的期望按降序排序,去前K位信道索引为信息位。
    代码如下

    %GA构造算法主函数
    N=512;
    sigma=0.5;
    u = zeros(1, N);
    u(1) = 2/sigma^2;
    for i = 1:log2(N)
        j = 2^(i - 1);
        for k = 1:j
            tmp = u(k);
            u(k) = phi_inverse(1 - (1 - phi(tmp))^2);
            u(k + j) = 2 * tmp;
        end
    end
    u = bitrevorder(u);
    scatter((1:N),u(1:N),'.b');
    axis([0 1.1*N 0 4*N]);
    xlabel('Channel index');
    ylabel('E(LLRi)');
    
    %phi函数
    function y = phi(x)
    if (x >= 0)&&(x <= 10)
        y = exp(-0.4527*x^0.859 + 0.0218);
    else
        y = sqrt(pi/x) * exp(-x/4) * (1 - 10/7/x);
    end
    
    %phi的反函数
    function x = phi_inverse(y)
    %部分用闭合表达式,部分用数值解法,速度进一步提升!
    if (y <= 1.0221) && (y >= 0.0388)
        x = ((0.0218 - log(y))/0.4527)^(1/0.86);
    else
        x0 = 0.0388;
        x1 = x0 - (phi(x0) - y)/derivative_phi(x0);
        delta = abs(x1 - x0);
        epsilon = 1e-3;
        
        while(delta >= epsilon)
            x0 = x1;
            x1 = x1 - (phi(x1) - y)/derivative_phi(x1);
            %当x1过大,放宽epsilon
            if x1 > 1e2
                epsilon = 10;
            end       
            delta = abs(x1 - x0);
        end
        x = x1;
    end
    end
    

    2.3、极化码编码

    极化码编码过程采用非系统极化码编码。非系统编码的意思是码字序列中不直接包含信息比特,其编码的渐进复杂度为O(N l o g 2 log_2 log2N)。在这个编码方案下,取消了比特奇偶置换操作,即在计算时取消BN,只研究了在这里插入图片描述

    设A是通过任意一个码构造算法得到的可靠极化信道的集合,此时码长为N,信息比特数为K=|A|。在长度为N的信源序列 u 1 N u_1^N u1N=(u1,u2,…,uN)中,把K个信息比特放在i∈A的元素上,其余N-K个元素叫冻结比特,在本次仿真中,我们总是令冻结比特为1。在这里插入图片描述 u 1 N u_1^N u1N对应的码字,计算 x 1 N x_1^N x1N的过程就是极化码的非系统编码过程。在计算的过程中,矩阵之间的相乘,具体到行列相乘,采用的是模2加法运算,最后得到的矩阵中只有0/1两个参数。

    3、总结

    本节主要叙述了极化码的编码原理,过程,算法和对应的代码,针对两种不同的信道条件,我们选择了两种经典的极化码的构造算法来进行描述。其实极化码的编码算法的难度主要就集中在如何构造极化码,从极化信道中选择出信息位集合来,剩下的步骤就很容易理解和实现。相信通过本节的学习,大家可以对极化码的编码过程有一个很直观的理解和认识,在下一节中,我会为大家介绍常见的极化码译码算法。如果有不懂或者错误的地方,欢迎大家批评指正。
    最后,新人博主写帖子不易,如果你觉得对你有帮助,多多点赞分享关注打赏,给我更多创作动力。祝大家都能有所学,有所获,加油!

    展开全文
  • #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 极化码概述 要问在2019年的通信领域什么最火,当然要数第五代移动通信技术5G了。随着美国对华为的打压和...

    什么是极化码?

    1、内容目录

    1. 开篇1-内容介绍&参考文献
    2. 概述2-什么是极化码?
    3. 原理3-Arikan原版论文学习总结
    4. 编码算法4-巴氏参数、GA算法以及matlab仿真
    5. 译码算法5-SC算法及matlab仿真
    6. 译码算法6-SCL、CA-SCL及matlab仿真

    2、极化码介绍

    要问在2019年,通信领域什么最火,当然要数第五代移动通信技术5G了。随着美国对华为的打压和制裁,华为-5G这两个名词紧紧绑定在了一起,并传播到了全世界。随着5G商用的不断普及,更多的人接触到了5G,体验到了5G技术。但是作为一个通信专业的学生,绝不会仅仅局限于此,我们要对5G技术进行研究和学习。在大四上学期一门无线局域网的课程上,以同学为主体,分享了大量关于5G的理论内容,其中我就了解到极化码是5G信道编码的技术之一。我怀着对5G技术浓烈的兴趣,在毕业设计课题选择时,很坚定的选择了“5G标准极化码研究”这一课题,希望可以深入学习和了解这一门新的技术。
    极化码其实问世时间并不是很长。E.Arikan 教授在他2008年的一篇论文[1]中首次提出了信道极化的概念,针对信道极化码原理提出了对应的编码方式——极化码(Polar codes),并证明在这种信道编码方式下,信道的传输容量可以达到香农极限。在之后,A.rikan又发表了数篇论文对极化码理论进行补充,我主要阅读了论文[2]。这篇论文包含了大部分极化码基础理论,比较详细,十分具有参考性(我把参考论文的题目分享到最后,如果大家有需要可以自行上IEEE网站下载学习,或者私信我发给你)。
    由于极化码被证明是目前唯一可以达到香农极限的编码方式,并且其编译码算法都具有较低的复杂度,性能在一定的码长下也十分出色,所以在它问世以后,就吸引学术界和业界的广泛关注。这其中就包含华为公司。华为在极化码问世以后就看到了它的应用价值,在2009年寻求与A.rikan的合作,投重金一起研究极化码的应用。经过数年的不断努力与尝试,终于在2016年,极化码成功入选 5G 增强型移动宽带(eMBB)应用场景下的控制信道编码方案。并在2018年,华为首次发布了全球第一个符合3GPP标准的、支持Polar码的5G系统,极化码终于从理论进入了现实应用。
    因此对于极化码的研究有助于我们去理解5G背后的原理。于此同时,由于5G一共有三大应用场景eMBB、URLLC、mMTC。其他两大应用场景的标准依旧悬而未决,极化码能否依然发挥它的作用,这一切还需要实践去检验。所以对于极化码的研究具有十分深远的价值和意义。
    当然,对于初学者来说,我们不需要去研究的特别深入。所以下面的内容,我先从极化码的源头开始写起,让大家理解基础的编码和译码算法。在最后,再提出在5G标准中极化码是如何发挥它的作用的。读者们可以按照自己的需求和能力,进行阅读和学习。
    本人只是一个本科毕业生,对极化码的研究和理解有限,该系列文章也是基于我的毕业课题设计以及后期的一些拓展学习来展开的,所以如果有什么问题或者错误的内容,欢迎大家批评指正,大家一起进步。
    下一篇文章将正式开始理论内容的介绍!

    [1] E.Arikan.Channel Polarization: A Method for Constructing Capacity-Achieving Codes[J],2008.
    [2] E.Arikan.Channel Polarization: A Method for Constructing Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels[J],2009.

    展开全文
  • BCH码,汉明码,极化码,卷积码,循环码
  • 极化码编码及其BP译码算法研究
  • 极化码的matlab仿真(2)——编码

    千次阅读 2017-07-05 12:17:00
    第二篇我们来介绍一下极化码编码。 首先为了方便进行编码,我们需要进行数组的定义 signal = randi([0,1],1,ST); %信息位比特,随机二进制数 frozen = zeros(1,FT); %固定位比特,规定全为0 encode = zeros...

    第二篇我们来介绍一下极化码的编码。

    首先为了方便进行编码,我们需要进行数组的定义

    signal = randi([0,1],1,ST);       %信息位比特,随机二进制数
    frozen = zeros(1,FT);             %固定位比特,规定全为0
    encode = zeros(1,N * block);      %编码后的比特
    noise = snr(i) ^ 1/2 * randn(1,N * block);  %加性高斯白噪声
    

    极化码的编码重点在于生成矩阵的产生,以及信息位、冻结位的选取。

    • 我们先来看生成矩阵的产生。

    这是Arikan论文中的编码示意图,好像挺复杂,不过看不懂也没关系。我们来看一下编码过程中都做了哪些事。

    首先是向量元素的翻转,通过翻转矩阵RN来实现,然后是信道的联合和信道的分裂。

    什么?你问我为什么要这样做?我也不知道,极化码本身就建立在信道极化的现象之上,信道极化就是信道以特定方式联合和分裂所产生的现象。要想问为什么这么做,到土耳其找Arikan教授喝茶去吧。

    论文中将这个翻转过程简化为矩阵运算,这就为我们进行程序仿真提供了方便:

    其中:

    BN 为排序矩阵,以N=8为例,解释它的作用:

    传化过程为:%将向量下标减一后,转化为二进制数%----%将得到的二进制数反序排列%----%将反序后的二进制数转化为十进制数,加一%

    例:

    我们通过 BN 的递推式可以求得 BN再将其与 F n 次克劳尼克积相乘,就能够得到生成矩阵。

    这样说你明白了吗?什么?没有???

    不错,说明你是个正常人。实际编码的时候,如果真的在matlab中将上述过程模拟一遍来求生成矩阵的话,是非常耗时耗力的。我们还有另外一条路可以走——找规律。

    上式为 GN 的原始求解方法,其中 I 为单位矩阵,F 定义为[1 0; 1 1],RN 为翻转矩阵,对于 ,有:

    N=4:

    N=8:

    可以发现 A 的元素排列十分有规律。前 N/2 列元素总是奇偶成对出现“1”,后 N/2 元素仅出现在偶数位,且与同处在一行的前一个“1”保持固定距离。根据此规律编写程序如下:

    for i = 1 : N/2
        A(2 * i - 1, i) = 1;
        A(2 * i, i) = 1;
        A(2 * i, N / 2 + i) = 1;
    end
    

    递归部分:

    G = A * kron(eye(2),Gpre);    %Gpre即上一层递归所得生成矩阵
    Gpre = G;
    

    如果将生成矩阵的产生编写为一个函数,则代码如下:

    function GN = G(n)
        N = 2 ^ n;    
        Gpre = 1;
        for i=1:n       %每一层递归都相当于计算一个新的生成矩阵
            Ni = 2 ^ i;    %这个新的生成矩阵的维度为 Ni/2
            G = zeros(Ni);
            %Fn = zeros(Ni);
            A = zeros(Ni);
            for j = 1 : Ni / 2
                A(2 * j - 1 , j) = 1;
                A(2 * j , j) = 1;
                A(2 * j , Ni / 2 + j) = 1;
            end
            G = A*kron(eye(2),Gpre);
            Gpre = G;
        end
        GN = G;
    end
    
    •  其次,来看信息位与冻结位的选取

    信道极化过程中,有一部分信道的信道容量 I(W) 可以到达1,另一部分则趋近于0。信道容量反映了信道无失真传输的最大信息率,我们可以通过计算联合、分裂后各信道的信道容量并对它们进行排序,然后根据码率,选择排序靠前的信道作为信息传输的信道,剩余的信道用来传输冻结位。

    另一种方法是计算巴氏参数Z(W),对于一个给定信道,巴氏参数越大说明该信道越不可靠。因此我们只需计算出联合、分裂后信道的巴氏参数,并对它们进行排序,然后根据码率选择巴氏参数较小的信道作为信息位,剩余信道作为冻结位。Arikan论文中给出了巴氏参数的递归求解办法,这使得我们能够很方便的通过matlab实现信息位的选取。

    % 将巴氏参数计算过程封装在函数B_para之中方便调用,Z为数组,作为实参传递进来。数组中只有第一个元素。
    % Z第一个元素可以通过计算得到,计算公式为Z(1) = 2*(p*(1-p))^0.5;
    function y = B_para(Z)
    for i = 1 : log2(N)         %迭代次数,N为码长
        Z_pre = Z;              %z_pre为上一层信道巴氏参数
        for j = 1 : 2^(i-1)     %本层运算使用的下标
            Z(2*j-1) = 2*Z_pre(j) - Z_pre(j)^2;
            Z(2*j) = Z_pre(j)^2;    %递推公式
        end
    end  
    y = z;    % y作为实参从函数中传递出去,y就是最终的巴氏参数
    

     

     得到巴氏参数序列后,下面的操作就是将此序列进行排序,并根据码率确定信息位和固定位。

    [Z_in_order,index] = sort( y );            %将巴氏参数从小到大排列
    signal_index = sort( index( 1:S ) );      %前S位作为信息位
    frozen_index = sort( index( s+1:end ) );    %后面的作为冻结位
    

     得到了生成矩阵,确定了信息位冻结位,下面要做的就是进行编码。

    for j=1:block    %对每一个码块都要进行编码处理
        encoded(1,((j-1)*N+1):(j*N)) = signal(((j-1)*S+1):(j*S))*G(signal_index,:) + frozen(((j-1)*F+1):(j*F))*G(frozen_index,:);
    end                  %进行编码
    encode = mod(encode,2);		 %对2取模
    encode = 2 * encode - 1;       %符号化
    encode = encode + noise;	  %叠加噪声
    

    数组 encode 就是我们得到的编码矩阵。

     编码matlab实现就是这样,为了照顾和知识点讲解同步,各个部分代码并未进行完整、严谨的书写。本系列最后我会整合与各章节中分散的代码,为大家带来可运行的代码,并将M文件附在文后。敬请期待。

    下一节我们要探讨的是polar code中非常重要的译码部分——连续消除译码(SC译码)。

    转载于:https://www.cnblogs.com/Mr-Tiger/p/7120590.html

    展开全文
  • 基于极化码的信源信道联合编码研究
  • 实验室资源,matlab仿真极化码编码译码过程,内容详细,包含使用说明及代码介绍。
  • 极化码的matlab仿真(3)——SC译码(2)

    千次阅读 2017-08-26 16:25:23
     【关于指数项计算的专业内容,读者可参考论文《极化码编码与译码算法研究》...王继伟...第3.3.1.3节】   这个指数项在随着迭代N-->N/2-->N/4-->...将发生变化。由于博主水平有限,无法很好的表述推导过程,...
  • 极化码编译码,通过SL译码算法进行的极化码 编码 测试过还算有效
  • 极化码理论及算法研究5-SC算法及matlab仿真

    千次阅读 多人点赞 2021-03-15 21:01:54
    #极化码编码 #极化码译码 #5G标准中极化码的编译码概述 #5G标准中极化码的编码 #5G标准中极化码的译码 #总结 1、引言 上一章叙述了极化码的编码过程和针对不同信道的经典构造算法,本章对极化码的几种不同的译码算法...
  • 作为第一种达到信道容量的高性能编码极化码是未来6G数据传输的重要候选方案。为此提出了面向6G的极化处理框架。在此框架下,设计高性能的级联极化编码方案,可以逼近有限码长信道容量极限,符合6G超高可靠传输要求...
  • Polar编码matlab程序

    2021-03-26 09:30:19
    matlab实现的Polar codes源程序
  • x+y=zx+y=zx+y=z 重大时间节点 2016年11月18日,在美国内华达州里诺召开的3GPP RAN1...2009年在“IEEE Transaction on Information Theory”期刊上发表了一篇长达23页的论文更加详细地阐述了信道极化,并基于信道极化
  • 极化码是第一种被理论证明可以达到信道容量的信道编码方法,具有可实用的线性编译码复杂度以及优良的检纠错性能。得益于极化码在复杂度与性能方面的独特优势,极化码在新一代移动通信、卫星通信、深空探测等领域具有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,315
精华内容 23,726
关键字:

极化码编码