极化码理论及算法研究4-巴氏参数、GA算法以及matlab仿真

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、总结

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

评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

为城w

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值