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

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

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

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);  %加性高斯白噪声

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

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

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

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

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

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

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

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