NR Polar Code 四 译码1(SC: N=2,N=4)

前言

       上面几篇文章可以看到Polar码的优点,编码极其简洁,非常优雅

      x=uG_n

       Polar 译码通过SC方式译码,在有限码长时,性能不理想,改进的串行抵消算法

SCL(Successive Cancellation List) 在译码过程中保留多个候选路径,可以用较少的复杂度

有效的提升有限码长下的Polar 码性能。

       在吞吐量测试,游戏场景对数据量要求大的场景不太适用。同时它只适用于离散无记忆信道, 很多视频都有提到过(例如 台湾交通大学陈伯宁老师,以及原著里面的都有提到过),使得它的泛化性受到很大的影响

        在控制信道,因为吞吐量小,比较试用。

      在限制条件方面涉及到一些基础交叉学科,特别是信道容量涉及到凸优化。对信道的建模,对于有记忆信道,贝叶斯,HMM,RNN,LSTM这种模型如何处理,无记忆信道里面的高斯白噪声信道,又涉及到假设检验,大数定律。都需要深入去研究。

       信道解码的时候,前向纠错码,前面一定要解码正确了,后面才能解码正确,否则会一直错下去,就涉及到K的取值,同时erase probality 如何选取,比如不同温度这个概率是不一样的,以及不同的场景下,太高了,影响速率,太低了就会解码出错。

关键字

   串行抵消(Successive Cancellation,SC)译码算法

参考文档:

CSDN


Polar SC的C语言实现之译码篇 - 灰信网(软件开发博客聚合)

目录

  1. SC Decoder 流程
  2. N=2  decoder
  3. N=4 decoder
  4. 补充只是

一 SC Decoder 流程

       1.1 整体收发流程

           

          通过polar 编码后的x\in[0,1]

          再经过BPSK后,发送的实际数据或者接收方收到的数据

           r(x)=\left\{\begin{matrix} 1, if :x=0\\ -1,if :x=1 \end{matrix}\right.

  

       1.2 译码流程

       

     1.2 目的:

     根据接受到向量r,解码出发送方的向量u,

      函数: u=L(r), 也称为belief for u

     发送方 定义一个(N,K)的Polar 码

      将K个消息Bit 放在N个子信道上,该子信道称为信息集合

      将N-K个子信道放置固定比特,如全为0,该子信道称为冻结集合

       r^N=\begin{bmatrix} r_1 & r_2 & r_3 & .... & r_N \end{bmatrix}: received vector

       解码流程:

                  根据收到的r^N, 解码出\hat{u_1}

                 根据r^N,\hat{u_1},解码出\hat{u_2}

                  串行消码

                  根据r^N,\hat{u_1},\hat{u_2},...,\hat{u_i},解码出\hat{u_{i+1}}

                   其中:

                  如果 u_i 传的是冻结bit,则\hat{u_i}=0,不需要解码

                  如果u_i 传的是消息bit,需要通过SISO decoder 解码

       


二 N=2  decoder

         

               2.1  SISO decode \hat{u_1} (SPC: single parity check )

                   

                   因为x_1=u_1+u_2

                   所以:u_1=x_1+x_2

                   通过下面函数实现异或功能:

                     L(u_1)=f(r_1,r_2)=sgn(r_1)sgn(r_2)min(|r_1|,|r_2|)

                      \hat{u_1}=\left\{\begin{matrix} 0,if L(u_1)\geq 0\\ 1, if L(u_1)<0 \end{matrix}\right.

                      通过真值表很容易的看出来,只有r_1,r_2 同符号(正负号相同)的时候,

                      sgn(r_1)sgn(r_2)\geq 0 , u_1=0

                       

                        

               2.2  解码\hat{u_2}

                      因为

                     u_2=\left\{\begin{matrix} x_2,...\\ x_1, if: \hat{u_1}=0 \\\bar{ x_1}, if: \hat{u_1}=1 \end{matrix}\right.

                       其中:

                               u_2=\bar{x_1}=\left\{\begin{matrix} 0,if x_1=1\\ 1, if x_1=0 \end{matrix}\right.

                      综合得到:

                      L(u_2)=r_2+r_1, if \hat{u_1}=0,x=[u_2,u_2]

                      L(u_2)=r_2-r_1, if \hat{u_1}=1,x=[\bar{u_2},u_2]

                     belief for 函数:

                     \hat{u}=\left\{\begin{matrix} 0,if L(u)>0\\ 1,if L(u)<0 \end{matrix}\right.

                    通过真值表也很容易看出:

                    发现belief for 幅度变大了(2),当跟threshold 比较的时候,更不容易出错。                     

                     

   2.3  二进制树解释:

          step1:  收到信息r,通过F函数,在左分支传递过去

                  r_1,r_2  是关于 x_1,x_2 belief

       

       

     step2  叶节点返回得到的 \hat{u_1},在右边分支传递g 函数信息,

\hat{u_1}起到硬判决作用 ,这也是为什么叫 g 函数的原因

 f(r_1,r_2)=sgn(r_1)sgn(r_2)min(|r_1|,|r_2|)

 g(r_1,r_2,\hat{u_1})=r_2+(1-2\hat{u_1})r_1(可以参照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  解码:\hat{v_1},获得belief for v_1

        因为 v_1=x_1+x_2 

                       =[x_{11},x_{12}]+[x_{21},x_{22}]=[x_{11}+x_{21},x_{12}+x_{22}]

                       =[f(r_1,r_3),f(r_2,r_4)]           

          写成向量形式:

              L=[L_1,L_2] 两个bit

              L_1=f(r_1,r_3),L_2=f(r_2,r_4)

          step2 解码\hat{u_1},获得belief for u_1

                   这时为 N=2 decoder

                    得到 \hat{u_1}=f(L_1,L_2)

         先解码出U_1,,再解码出U_2,再把解码结果返回根节点

         

       step3 根据\hat{u_1},解码出\hat{u_2},获得belief for u_2

                   

                  \hat{u_1}起一个gate 作用,得到一个关于u_2的g 函数

                  \hat{u_2}=g(r^4,\hat{u_1})

                 为什么称为belief for u_2,因为得到的\hat{u_2}是预测值,跟真实值可能存在偏差


四  SC decoder(N=4)    解码右子树(split 过程)

    step1: 解码v_2,得到g 函数

  因为 \hat{v_1}=[\hat{u_1}+\hat{u_2},\hat{u_2}]

  有2个bit ,分别基于\hat{u_1}+\hat{u_2}\hat{u_2}作为gate,得到关于v_2的belief for函数

  step2 得到N=2的子树,按照N=2解码出\hat{v_3},\hat{v_4}

 step3  把解码结果返回到根节点


五 背景知识补充

     

     

         x:  code word 为 4bits

         x=[x_1,x_2]

       其中:

         x_1=[x_{11},x_{12}],x_2=[x_{21},x_{22}]

         x_1=v_1+v_2

           2 bits

           x_2=v_2

                  2bits

          就是编码的结果

          

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值