資源簡介
詳細說明LDPC碼的BP譯碼算法!用matlab進行仿真計算!
代碼片段和文件信息
function?[yoiter]?=?BP_decodenewc(yN0Hmnmax_iter)
if?m>n
???H=H‘;?
??[mn]?=?size(H);?
end
if?~issparse(H)???????????????
???[iijjsH]?=?find(H);
???H?=?sparse(iijjsHmn);??
end
p0=1./(1+exp(-2.*y./(N0/2)));??
p1=1-p0;
[iijj]?=?find(H);????????????
indx?=?sub2ind(size(H)iijj);
q0?=?H?*?spdiags(p0(:)0nn);?
sq0?=?full(q0(indx));?
sff0?=?sq0;
q1?=?H?*?spdiags(p1(:)0nn);?
sq1?=?full(q1(indx));??
sff1?=?sq1;
for?iter=1:max_iter???
????????wsq1=1-2.*sq1;?
????????wsq1(find(wsq1==0))=1e-20;
????????dq?=?sparse(iijjwsq1mn);
????????Pdq_v?=?full(real(exp(sum(spfun(‘log‘dq)2))));
???Pdq?=?spdiags(Pdq_v(:)0mm)?*?H;?
???sPdq?=?full(Pdq(indx));????
???????sr0?=?(1+sPdq./wsq1)./2;?sr0(f
評論
共有 條評論