资源简介
CCSDS标准深空通信LDPC编译码程序仿真,包括码率为2/3和4/5等常用LDPC码
代码片段和文件信息
function x_hat=bp_dec(rxHiterate) %应该可以使用稀疏矩阵实现
%Simplified log-BP decoder of LDPC
%rx is the received code which carries the soft information
%H is the LDPC matrix
%iterate is the iterating times
%Author:LEE Ming-yang100926
%Mail:wo.lmy@163.com QQ:905432530
lcj=-rx; %后验似然信息
[M N]=size(H);
lrij=zeros(MN); %初始化校验信息
lqij=H.*repmat(lcjM1); %关键,体现了校验节点和变量节点在H阵中的关系
alphaij=zeros(MN); %sign(lqij)
betaij=zeros(MN); %lqij
lqj=zeros(1N);
for it=1:iterate
alphaij=sign(lqij); %i行j列,迭代之前赋值
betaij =abs(lqij);
%水平处理,得到校验节点信息
for i=1:M %遍历行
cl=find(H(i:)); %从某行中找非0列
for j=1:length(cl) %j都遍历相关联的变量节点
min_beta=realmax; %每次使用之前初始化
temp_beta=betaij(icl); %只要有用的,无关量是0,会干扰判断
temp_beta(j)=realmax; %j个对应的那列不用于比较
min_beta=min(temp_beta);
%betaij(ij)=min_beta; %只是个标志,没什么用
temp_alpha=alphaij(icl);
temp_alpha(j)=1;
prod_alpha=prod(temp_alpha);
lrij(icl(j))=prod_alpha*min_beta;
end
end
%垂直处理,得到变量节点信息
for j=1:N
rl=find(H(:j));
for i=1:length(rl)
lqij(rl(i)j)=lcj(j)+sum(lrij(rlj))-lrij(rl(i)j);
end
%累加处理
lqj(j)=lcj(j)+sum(lrij(rlj));
if lqj(j)>0
x_hat(j)=0;
else
x_hat(j)=1;
end
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6722 2015-10-19 21:52 H4_5.mat
文件 1031 2010-09-24 13:02 inv_GF2.m
文件 868 2015-10-19 23:34 Test_CCSDS_Matrix.m
文件 1843 2010-10-12 10:30 bp_dec.m
文件 253 2015-10-19 21:54 G_gen.m
文件 14261 2013-03-11 14:53 H2_3.mat
----------- --------- ---------- ----- ----
24978 6
评论
共有 条评论