function [uhat,iteration]=SPA_log(Lc,Hrow,Hcol,H,max_Iter,thresh)
%% 参考 袁东风 p64 或王育民 p292
%associate this structure with all non zero elements of H
% Rate = 0.5;
% sigma2 = 1/(10^(SNR/10))/(2*Rate); % sigma^2 方差
[rows,cols]=size(H);
%Prior Probabilities
%先验概率
% Lc= 2*r/sigma^2;
% Lc= zeros(1,length(r));
%initialization
%初始化:对特定的信道预设信息比特的先验概率。
total_one=length(Hrow);% H中1的个数
Lq = sparse(Hrow,Hcol,0);
Lr = sparse(Hrow,Hcol,0);
for n=1:total_one
Lq(Hrow(n),Hcol(n)) = Lc(Hcol(n));
end
%迭代次数100
for iteration=1:max_Iter
%horizontal step
%横向步骤:由信息节点的先验概率按置信传播算法得出各校验节点的后验概率。
for i=1:rows
colind=find(Lq(i,:)~=0);
% colnum = length(colind);
temp = -tanh(0.5*(Lq(i,colind)));
Horizon_sum = prod(temp);
T1 = Horizon_sum./temp;
temp2 = log((1-T1)./(1+T1));
temp2(find(temp2>thresh))=thresh;
temp2(find(temp2<-thresh))=-thresh;
Lr(i,colind)=temp2;
end
%vertical step
%纵向步骤:由校验节点的后验概率推算出信息节点的后验概率。
for j=1:cols
rowind=find(Lr(:,j)~=0);
rownum=length(rowind);
LQ =sum(Lr(rowind,j))+Lc(j);
if(LQ>0) x_est(j)=1; else x_est(j)=0; end
for i=1:rownum
Lq(rowind(i),j)= LQ-Lr(rowind(i),j);
end
end
%如果判决条件满足,译码结束,否则继续迭代
err_test = sum(rem(x_est*H',2));
tempp = sum(x_est);
if(err_test==0)
break;
end
end
uhat = x_est;
LDPC码_和积算法_码长可以任意_输出多项式即可_译码输出软信息_matlab
版权申诉
5星 · 超过95%的资源 126 浏览量
2022-03-12
21:25:31
上传
评论
收藏 14KB ZIP 举报
阿里matlab建模师
- 粉丝: 3377
- 资源: 2786
最新资源
- labelImg安装指导书.docx
- 2023AI自有光-她经济消费新图鉴(2023)-百度营销.pdf
- 2022中国新能源汽车内容生态趋势洞察(1).pdf
- Docker技术:Docker安装与配置教程+运维技术+超融合+虚拟技术+云计算
- ZeRO Memory Optimizations Toward Training LLM.pdf
- 高效SQL语句编写(how-to-write-efficient-sql)
- ZeroTermux-release_sign.apk
- 非弹性斜碰撞物理课件模拟-HTML网页制作
- 软件测试学习日志-测试基础-day02
- 制作一个简单的进销存(库存管理)页面.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈