前言
上面几篇文章可以看到Polar码的优点,编码极其简洁,非常优雅
Polar 译码通过SC方式译码,在有限码长时,性能不理想,改进的串行抵消算法
SCL(Successive Cancellation List) 在译码过程中保留多个候选路径,可以用较少的复杂度
有效的提升有限码长下的Polar 码性能。
在吞吐量测试,游戏场景对数据量要求大的场景不太适用。同时它只适用于离散无记忆信道, 很多视频都有提到过(例如 台湾交通大学陈伯宁老师,以及原著里面的都有提到过),使得它的泛化性受到很大的影响
在控制信道,因为吞吐量小,比较试用。
在限制条件方面涉及到一些基础交叉学科,特别是信道容量涉及到凸优化。对信道的建模,对于有记忆信道,贝叶斯,HMM,RNN,LSTM这种模型如何处理,无记忆信道里面的高斯白噪声信道,又涉及到假设检验,大数定律。都需要深入去研究。
信道解码的时候,前向纠错码,前面一定要解码正确了,后面才能解码正确,否则会一直错下去,就涉及到K的取值,同时erase probality 如何选取,比如不同温度这个概率是不一样的,以及不同的场景下,太高了,影响速率,太低了就会解码出错。
关键字
串行抵消(Successive Cancellation,SC)译码算法
参考文档:
Polar SC的C语言实现之译码篇 - 灰信网(软件开发博客聚合)
目录
- SC Decoder 流程
- N=2 decoder
- N=4 decoder
- 补充只是
一 SC Decoder 流程
1.1 整体收发流程
通过polar 编码后的
再经过BPSK后,发送的实际数据或者接收方收到的数据
1.2 译码流程
1.2 目的:
根据接受到向量r,解码出发送方的向量u,
函数: u=L(r), 也称为belief for u
发送方 定义一个(N,K)的Polar 码
将K个消息Bit 放在N个子信道上,该子信道称为信息集合
将N-K个子信道放置固定比特,如全为0,该子信道称为冻结集合
: received vector
解码流程:
根据收到的, 解码出
根据,解码出
串行消码
根据,解码出
其中:
如果 传的是冻结bit,则,不需要解码
如果 传的是消息bit,需要通过SISO decoder 解码
二 N=2 decoder
2.1 SISO decode (SPC: single parity check )
因为
所以:
通过下面函数实现异或功能:
通过真值表很容易的看出来,只有 同符号(正负号相同)的时候,
,
2.2 解码
因为
其中:
综合得到:
, if ,
belief for 函数:
通过真值表也很容易看出:
发现belief for 幅度变大了(2),当跟threshold 比较的时候,更不容易出错。
2.3 二进制树解释:
step1: 收到信息r,通过F函数,在左分支传递过去
是关于 belief
step2 叶节点返回得到的 ,在右边分支传递g 函数信息,
起到硬判决作用 ,这也是为什么叫 g 函数的原因
(可以参照2.2)
step3 根节点得到code word :x
三 SC decoder(N=4) 解码左子树(split 过程)
send belief down to it's left child,and get decisions
原理:
这也是这篇文档中最难理解的一步:
简单的说r是关于X的函数
step1 解码:,获得belief for
因为
写成向量形式:
两个bit
step2 解码,获得belief for
这时为 N=2 decoder
得到
先解码出,再解码出,再把解码结果返回根节点
step3 根据,解码出,获得belief for
起一个gate 作用,得到一个关于的g 函数
为什么称为belief for ,因为得到的是预测值,跟真实值可能存在偏差
四 SC decoder(N=4) 解码右子树(split 过程)
step1: 解码,得到g 函数
因为
有2个bit ,分别基于,作为gate,得到关于的belief for函数
step2 得到N=2的子树,按照N=2解码出
step3 把解码结果返回到根节点
五 背景知识补充
: code word 为 4bits
其中:
2 bits
2bits
就是编码的结果