赞
踩
获取代码方式1:
完整代码已上传我的资源:【信道编码】基于matlab LDPC-BP信道编码【含Matlab源码 2340期】
点击上面蓝色字体,直接付费下载,即可。
获取代码方式2:
付费专栏Matlab信号处理(初级版)
备注:
点击上面蓝色字体付费专栏Matlab信号处理(初级版),扫描上面二维码,付费29.9元订阅海神之光博客付费专栏Matlab信号处理(初级版),凭支付凭证,私信博主,可免费获得1份本博客上传CSDN资源代码(有效期为订阅日起,三天内有效);
点击CSDN资源下载链接:1份本博客上传CSDN资源代码
BP算法又称为和积算法(SPA),Log-BP算法是基于对数域的BP算法。其迭代译码过程就是校验节点和信息节点之间数据的传递和更新。
采用BPSK调制方式,Log-BP算法的译码过程:
输入数据:初始概率Pi0=P(xi=0)和Pi′=P(xi=1)=1-P0i,n=1,…,i;
初始化:对接收到的i个信息,计算初始信道信息:
式中,yi为接收到的混有噪声的信息,σ2为噪声平均功率。
迭代过程:
(1)校验节点计算
式中,ф(x)=-log(tanh(x/2));
(2)信息节点计算
Log-BP算法充分利用了信息节点和校验节点的性质以及接收序列的所有信息,从而可以得到逼近香农限的译码性能;该算法在二分图中没有环的条件下可等效为最大似然译码算法。在迭代过程中如果校验等式成立,译码过程立即结束,而不是进行固定次数的迭代,所以收敛也比较快;同时采用了并行的迭代算法,这种并行实现能够极大地提高译码速度,从而使复杂度和译码延时都很低。
clc;clear all;
SNRdB=0:0.25:3; %SNR in dB
k=512/4;
n=1024/4; % 码长
niter= 60;% 最大迭代此时
nb_err = zeros(1,length(SNRdB));
nb_code = zeros(1,length(SNRdB));
nb_err_max= 100 ;
nb_code_max= 1e4;
H= gen_h(n,6,3);% 产生H
[Hs,H]=gen_Hs(H); % 化为系统码
Q= Hs(:,1:k)'; % 生成矩阵的Q
for s= 1:length(SNRdB)
sigma = 10^(-SNRdB(s)/20);% 其平方是噪声功率
while nb_err(s)<nb_err_max && nb_code(s)<nb_code_max
nb_code(s) = nb_code(s)+1;
b = rand(1,k)<0.5;
c=[b,rem(bQ,2)];% 系统码编码
x=(-1).^c;% BPSK modulation
noise = sigma * randn(1,length(x));
y = x+noise;
lam_ch= 2y/sigma^2;%软解调
hat_c= msa(lam_ch,niter,H);
err = any(hat_c~=c); %c是发送码字,hat_c是硬判决
if err
nb_err(s)= nb_err(s)+err;
disp([nb_err;nb_code])
end
end
end
1 matlab版本
2014a
2 参考文献
[1]岳田,裴保臣.LDPC码的几种译码算法比较[J].无线电通信技术. 2006(04)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。