巴氏参数、GA算法以及matlab仿真

  • 1、内容目录
  • 2、极化码编码
    • 2.1、引言
    • 2.2、极化码编码原理
      • 2.2.1、陪集码
      • 2.2.2、极化码的构造
        • 巴氏参数构造算法
        • 高斯近似构造(GA)算法
    • 2.3、极化码编码
  • 3、总结

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=2n2^n2n,n≥0,对于所有长度的陪集码,采用同一种编码规则进行编码

上式中GNG_NGN​就是上一节中定义的极化码生成矩阵。这里我们设集合A是集合 {1,2,…,N} 的任意一个子集,则可以将上式写为

在上式中,uAu_AuA​表示以集合A中的元素为序号的比特信息,AcA^cAc表示以集合 {1,2,…,N} 为定义域,集合A在该定义域中的补集。矩阵GN(A)G_N(A)GN​(A)是取生成矩阵GNG_NGN​相应的的行向量,组成一个子矩阵,上述行向量由集合A的元素一 一确定。

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

例如,定义一个参数集为(4,2,{2,4},(1,0)),其编码情况如下:

当输入信息序列为(u2u_2u2​,u4u_4u4​)=(1,1) 时,生成的码字序列为x14x_1^4x14​=(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(WNiW_N^iWNi​)}可以通过以下递归方式计算:
上述递归的初始条件是
Z(WNjW_N^jWNj​)表示信道WNW_NWN​分裂后的第 j 个子信道对应的巴氏参数。有上述可知,每一个子信道的巴氏参数都可以有上述递归算式进行精确计算得出。信道容量与巴氏参数之间的换算关系为:I(W1(1))=1- Z(WNjW_N^jWNj​) 。

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

  1. 输入极化码长度N和BEC信道删除概率。
  2. 信道巴氏参数初始化:
  3. 利用下列公式,计算出每一个子信道WNiW_N^iWNi​的巴氏参数:
  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:nk=2^(i-1);for j=1:ktmp=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,sis_isi​=1-2xix_ixi​ ,经过高斯信道加噪后,在接收端收到码字序列Y。则该高斯信道的信道容量为

其中信道转移概率W(y | x)为

其中π是圆周率,e是自然底数,x∈X是发送端信源码字的一个比特信息,y∈Y是接收端接收序列的一个比特信息,δ2δ^2δ2是 AWGN信道的噪声方差,它的值可以根据定义的高斯信道信噪比来计算,计算方程为:
其中R是码率,SNR为信噪比,其单位为分贝(dB)。
在 AWGN 信道中,接收端根据接收的yi进行译码,信息比特的对数似然比(Log Likelihood Ratio,LLR)为

该对数似然比为服从高斯分布的随机变量,因为 yiy_iyi​ 服从参数为 N(1,δ2δ^2δ2) 的高斯分布,所以 2y/δ2δ^2δ2 服从高斯分布
由此可知该对数自然比满足方差为均值的二倍关系,即LLR(y)~N(2/σ2σ^2σ2,4/σ2σ^2σ2)。在SC译码过程中,信息比特的对数似然比为:将上式中的简写成LLRNiLLR_N^iLLRNi​,由前面的叙述可知LLRNiLLR_N^iLLRNi​是服从高斯分布的随机变量,其高斯分布参数满足方差为均值二倍。下面我们将计算对数似然比的均值,该均值可以很好的近似上述所求的对数似然比,以此来代表等效比特信道的可靠性。下面是该均值的计算方法:

其中:

由于上述公式中含有太多的复杂运算,使得计算起来代价很大,复杂度很高,因此需要有一个近似的简单算式来表示上述结果的值。因此后来科学家Chung定义了一种近似方程,可比较好的近似表示上述方程的值。即AGA-chung公式,如下所示:

上述递归计算的初始条件是E(LLR11LLR_1^1LLR11​)=2/δ2δ^2δ2。在所有的信道中,选取具有最大LLR均值的极化信道作为传输信息比特的信道。下列给出了在高斯信道下进行高斯近似构造极化码的算法。

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

  2. 初始化:E(LLR11LLR_1^1LLR11​)=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:jtmp = 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);
elsey = 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);
elsex0 = 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过大,放宽epsilonif x1 > 1e2epsilon = 10;end       delta = abs(x1 - x0);endx = x1;
end
end

2.3、极化码编码

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

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

3、总结

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

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

  1. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  2. 【自适应盲均衡12】判决引导(DD)+判决反馈(DFE)+双模式切换的盲均衡算法在双绞线基带通信中的应用MATLAB仿真(采用三电平PAM信号模型)

    重要声明:为防止爬虫和盗版贩卖,文章中的核心代码和数据集可凭[CSDN订阅截图或公众号付费截图]私信免费领取,一律不认其他渠道付费截图! 引言 为克服数字基带信号在通过非屏蔽五类双绞线时产生的严重码间 ...

  3. 寻优算法(1)-------遗传算法(GA)附Matlab代码(copy可用)

    总的来说就是广撒网,选择性捕捞(代码在最下方,理论知识到处都有,代码才是最实在的) 遗传算法用途 主要用于寻找目标函数最优解(最大,最小值) 相对退火法,遗传算法更有可能跳出局部最优解,得到全局最优解 ...

  4. 【EM+GMM】基于EM和GMM算法的目标轨迹跟踪和异常行为识别matlab仿真

    1.软件版本 matlab2013b 2.系统概述 3.部分源码 clc; clear; close all; warning off; addpath 'func\'%训练数据 Is = imrea ...

  5. 转载-极化码系列(4)-编码之极化信道可靠性估计

    前言 由Arikan发明的Polar Code的经典编码算法已经在第二节基本阐述完毕,第三节则是对前文的举例.在编码实例中,有两个前提假设: 1.假设采用二进制删除信道 2.假设采用巴氏参数来评估各分 ...

  6. 商汤科技通用视觉部门招聘算法研究类岗位(校招/社招/实习生)

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 商汤科技通用视觉部门校招/社招/实习生算法研究类岗位招聘 1.通用视觉部门介绍 商汤通用视觉部门是商汤超大规 ...

  7. 极化码的matlab仿真(2)——编码

    第二篇我们来介绍一下极化码的编码. 首先为了方便进行编码,我们需要进行数组的定义 signal = randi([0,1],1,ST); %信息位比特,随机二进制数 frozen = zeros(1, ...

  8. 关联规则挖掘算法研究

    文章目录 一. 问题背景与意义: 二. 问题定义 三. 经典的关联规则挖掘算法 3.1 层次算法 3.1.1 Apriori算法描述 3.1.2 FP-Growth算法 3.2 图挖掘算法 3.3 并 ...

  9. 机器人曲线插值拟合算法研究现状简述

    混沌无形 混沌系统是世界本质,无形之中存在规律.机器人智能化发展从线性过渡到混沌,本号将分享机器人全栈技术(感知.规划.控制:软件.机械.硬件等). 38篇原创内容 公众号 [文末提供原文PDF免费下 ...

  10. 计算机网络量化噪音是怎么消除的,数字图像噪声消除算法研究(可编辑).doc

    数字图像噪声消除算法研究(可编辑) 数字图像噪声消除算法研究 曲阜师范大学 硕士学位论文 数字图像噪声消除算法研究 姓名:李波 申请学位级别:硕士 专业:计算机应用技术 指导教师:赵景秀字图像噪声消除 ...

最新文章

  1. java 获取泛型的type,如何获取泛型的Type类型
  2. Windows服务BAT命令-安装、卸载、启动、停止
  3. winform TopMost
  4. linux xmind无法运行,linux安装xmind的方法步骤
  5. python读取多个文件夹_如何从python中的文件夹中读取多个NetCDF文件
  6. SploitFun Linux x86 Exploit 开发系列教程
  7. Kali Linux 无线渗透测试入门指南 第八章 攻击企业级 WPA 和 RADIUS
  8. Kubernetes学习总结(11)—— Kubernetes Pod 到底是什么?
  9. 拓端tecdat荣获腾讯云+社区年度最佳作者奖
  10. 【数学建模】基于matlab GUI停车场仿真系统【含Matlab源码 1046期】
  11. 30+本MySQL经典书籍
  12. 飞轮效应中的复利:相信时间的力量
  13. App的开发成本是多少?
  14. 电脑公司Windows7_X86旗舰版V0911
  15. Linux实用命令杂集
  16. linux u盘格式化失败怎么办,u盘无法完成格式化怎么办
  17. java 创建meta inf_java – 在Eclipse中创建META-INF / services文件夹
  18. 免费视频直播、点播H5播放器SkeyeWebPlayer适配移动端
  19. NVDIMM介绍与应用
  20. Python格式化新年祝福语

热门文章

  1. java进出口食品安全信息管理系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
  2. c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...
  3. KVM虚拟化技术(一)之环境部署
  4. 【小家java】java8新特性(简述十大新特性) 饱受赞誉
  5. androidtabhost缓存_Android TabHost用法详解
  6. Ubuntu下WPS 快捷键、使用方法总结
  7. Paxos 算法详解
  8. 使用Spring-data-jpa修改数据后,查询到脏数据
  9. linux桌面时间插件,Ubuntu gnome 桌面环境拓展插件介绍
  10. 电梯plc的io分配_用PLC构成液体混合控制系统IO分配及梯形图编程