LDPC低密度奇偶校验码,BP译码

该博客介绍了LDPC低密度奇偶校验码的原理,并通过MATLAB实现BP译码算法,包括两种不同规则的LDPC码:非稀疏和稀疏矩阵。文中详细展示了代码过程,最后计算并分析了误比特率。
摘要由CSDN通过智能技术生成

clear;clc;
G = [1 0 0 1 0;0 1 0 1 1;0 0 1 0 1];    % 生成矩阵
H = [1 1 0 1 0;0 1 1 0 1];      % 监督矩阵   目前还不是稀疏的可以修改
x = round(rand(1,90000));    % 信源产生的比特
len = length(x)/3;
x = reshape(x,len,3);
c = x*G;    
c = m2j(c);     % 码字     m2j是模二加函数,matlab没找到,自己写的,很简单
c1 = c;
c1(c1==1) = -1;     % 这两个顺序不能乱
c1(c1==0) = 1;
c1 = c1+normrnd(0,1,size(c1));      % BPSK调制,码字通过信道到达接收端,带有方差为1的高斯白噪声

v_hat = zeros(1,150000);

for i = 1:len       % BP译码
    L = zeros(1,5);
    L_vc = zeros(5,2);      % 信息由变量节点到校验节点
    L_cv = zeros(5,2);      % 信息由校验节点到变量节点
    v = zeros(1,5);
%     init = zeros(1,5);
%     init(c1(i,:)>0) = 1;
%     init(c1(i,:)<0) = -1;

    for j = 1:10        % 最大迭代次数
        if j == 1
            L = c1(i,:)*2/1;    % LLR=2*x/σ^2   x为接收到的码字
            for k = 1:5
                loc = find(H(:,k)==1);      % find返回的是元素的位置
                if length(loc) == 1
                    L_vc(k,loc) = L(k);
                else
                    L_vc(k,loc(1)) = L(k);
                    L

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值