总结对比一下多进制LDPC的译码算法
一、多进制 BP、SPA译码算法
这个是最基本的译码算法,可以从二进制直接扩展引用过来。在译码过程中传递的信息是码字符号取不同值的概率值(二进制是0和1,多进制是0到q-1个概率值),符号的几个概率值的叠加的运算就是累乘,复杂度高,但是性能好。
二、多进制Log—BP、Log—SPA
跟二进制Log-BP略有不同,主要不同点如下:
1.初始化 二进制的Log—BP初始化时的公式是:2*y/sigma^2 多进制的Log-BP初始化时的公式是:2*s_y/sigma^2
%接收后处理
f=reshape(zb,nbits,length(y)); % reshape for finding priors on symbols 将列向量重构成两行向量
PP=zeros(q-1,n);
for i=1:q-1
a=dec2bin(i,nbits);
for j=1:nbits
if(a(j)=='1')
PP(i,:)=PP(i,:)+f(j,:);
end
end
end
PP=2*PP/sigma^2; % likelihoods for bits 这里说的是第n个符号去值为a(0~q-1)的概率
2. 校验节点更新
多进制的校验节点更新采用的是前向-后向算法
如图,一个与5个变量节点相连的校验节点,进行的前向-后向运算,需要10个存储单元。前向-后向同时进行运算,每次运算结果跟下一个变量节点继续运算。如图第4步运算完后,再各个变量节点对应的上层(前向运算结果)和下层(后项运算结果)与本身节点进行运算。具体的前向-后向运算程序如下:
for i=1:m