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 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者更换。 适合人群:新手及有一定经验的开发人员
资源推荐
资源详情
资源评论
收起资源包目录
LDPC码_和积算法_码长可以任意_输出多项式即可_译码输出软信息_matlab.zip (2个子文件)
LDPC码_和积算法_码长可以任意_输出多项式即可_译码输出软信息_matlab
Matlab实现无约束条件下普列姆(Prim)算法.docx 14KB
SPA_log.m 2KB
共 2 条
- 1
资源评论
- youran442022-04-28用户下载后在一定时间内未进行评价,系统默认好评。
- 工控老马2022-05-23用户下载后在一定时间内未进行评价,系统默认好评。
阿里matlab建模师
- 粉丝: 3694
- 资源: 2812
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功