ldpc译码讲解_LDPC 译码问题

最近开始学习LDPC,还是刚接触有点生疏,现在主要在看LDPC译码

网上有好多LDPC的译码例程,matlab的。

我看了大部分都是一个译码函数,有点看不懂。

求大家指教

问题一:参数f0,f1含义

问题二:这个使用的是什么译码方法 BP?

问题三:有人能讲清楚如何译码的就更好了,哈哈。

先谢谢大家了,和大家学习了。

LDPC译码程序如下

function [x_hat, success, k] = ldpc_decode(f0,f1,H)

[m,n] = size(H);

if m>n, H=H'; [m,n] = size(H);

end

if ~issparse(H) % make H sparse if it is not sparse yet

[ii,jj,sH] = find(H);

H = sparse(ii,jj,sH,m,n);

end

%initialization

[ii,jj] = find(H);             % subscript index to nonzero elements of H

indx = sub2ind(size(H),ii,jj); % linear index to nonzero elements of H

q0 = H * spdiags(f0(:),0,n,n);

sq0 = full(q0(indx));

sff0 = sq0;

q1 = H * spdiags(f1(:),0,n,n);

sq1 = full(q1(indx));

sff1 = sq1;

%iterations

k=0;

success = 0;

max_iter = 100;

while ((success == 0) & (k < max_iter)),

k = k+1;

%horizontal step

sdq = sq0 - sq1; sdq(find(sdq==0)) = 1e-20; % if   f0 = f1 = .5

dq = sparse(ii,jj,sdq,m,n);

Pdq_v = full(real(exp(sum(spfun('log',dq),2))));

Pdq = spdiags(Pdq_v(:),0,m,m) * H;

sPdq = full(Pdq(indx));

sr0 = (1+sPdq./sdq)./2; sr0(find(abs(sr0) < 1e-20)) = 1e-20;

sr1 = (1-sPdq./sdq)./2; sr1(find(abs(sr1) < 1e-20)) = 1e-20;

r0 = sparse(ii,jj,sr0,m,n);

r1 = sparse(ii,jj,sr1,m,n);

%vertical step

Pr0_v = full(real(exp(sum(spfun('log',r0),1))));

Pr0 = H * spdiags(Pr0_v(:),0,n,n);

sPr0 = full(Pr0(indx));

Q0 = full(sum(sparse(ii,jj,sPr0.*sff0,m,n),1))';

sq0 = sPr0.*sff0./sr0;

Pr1_v = full(real(exp(sum(spfun('log',r1),1))));

Pr1 = H * spdiags(Pr1_v(:),0,n,n);

sPr1 = full(Pr1(indx));

Q1 = full(sum(sparse(ii,jj,sPr1.*sff1,m,n),1))';

sq1 = sPr1.*sff1./sr1;

sqq = sq0+sq1;

sq0 = sq0./sqq;

sq1 = sq1./sqq;

%tentative decoding

QQ = Q0+Q1;

Q0 = Q0./QQ;

Q1 = Q1./QQ;

x_hat = (sign(Q1-Q0)+1)/2;

if rem(H*x_hat,2) == 0, success = 1; end

end

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值