当前位置:网站首页>【MATLAB项目实战】LDPC-BP信道编码
【MATLAB项目实战】LDPC-BP信道编码
2022-07-31 23:24:00 【大桃子技术】
除了Turbo码之外, Gallger于 1960年提出的低密度校验(Low Density ParityCheck,LDPC)码也能逼近香农界。本节介绍二进制LDPC码的仿真实现
不同码元长度WER变化情况:
从图中可以看出,码长是影响LDPC码性能的一个重要因素,LDPC码译码性能随着码长的增长有显著的改善。码长为1024的编码比码长为512的编码在性能上约有0.5dB的提高
主程序:
clc;clear all;
SNRdB=0:0.25:3; %SNR in dB
k=512/4;
n=1024/4; % 码长
niter= 60;% 最大迭代此时
nb_err = zeros(1,length(SNRdB));
nb_code = zeros(1,length(SNRdB));
nb_err_max= 100 ;
nb_code_max= 1e4;
H= gen_h(n,6,3);% 产生H
[Hs,H]=gen_Hs(H); % 化为系统码
Q= Hs(:,1:k)'; % 生成矩阵的Q
for s= 1:length(SNRdB)
sigma = 10^(-SNRdB(s)/20);% 其平方是噪声功率
while nb_err(s)<nb_err_max && nb_code(s)<nb_code_max
nb_code(s) = nb_code(s)+1;
b = rand(1,k)<0.5;
c=[b,rem(b*Q,2)];% 系统码编码
x=(-1).^c;% BPSK modulation
noise = sigma * randn(1,length(x));
y = x+noise;
lam_ch= 2*y/sigma^2;%软解调
hat_c= msa(lam_ch,niter,H);
err = any(hat_c~=c); %c是发送码字,hat_c是硬判决
if err
nb_err(s)= nb_err(s)+err;
disp([nb_err;nb_code])
end
end
end
WER= nb_err./nb_code;
EbN0dB= SNRdB+10*log10(n/k/2);%化成Eb/N0,参考式(1)
figure(1)
semilogy(EbN0dB, WER,'o-','LineWidth',2)
xlabel('Eb/N0')
ylabel('WER')
grid on;
hold on
SNRdB=0:0.25:3; %SNR in dB
k=512/2;
n=1024/2; % 码长
niter= 60;% 最大迭代此时
nb_err = zeros(1,length(SNRdB));
nb_code = zeros(1,length(SNRdB));
nb_err_max= 100 ;
nb_code_max= 1e4;
H= gen_h(n,6,3);% 产生H
[Hs,H]=gen_Hs(H); % 化为系统码
Q= Hs(:,1:k)'; % 生成矩阵的Q
for s= 1:length(SNRdB)
sigma = 10^(-SNRdB(s)/20);% 其平方是噪声功率
while nb_err(s)<nb_err_max && nb_code(s)<nb_code_max
nb_code(s) = nb_code(s)+1;
b = rand(1,k)<0.5;
c=[b,rem(b*Q,2)];% 系统码编码
x=(-1).^c;% BPSK modulation
noise = sigma * randn(1,length(x));
y = x+noise;
lam_ch= 2*y/sigma^2;%软解调
hat_c= msa(lam_ch,niter,H);
err = any(hat_c~=c); %c是发送码字,hat_c是硬判决
if err
nb_err(s)= nb_err(s)+err;
disp([nb_err;nb_code])
end
end
end
WER= nb_err./nb_code;
EbN0dB= SNRdB+10*log10(n/k/2);%化成Eb/N0,参考式(1)
figure(1)
semilogy(EbN0dB, WER,'s-','LineWidth',2)
xlabel('Eb/N0')
ylabel('WER')
grid on;
hold on
SNRdB=0:0.25:3; %SNR in dB
k=512;
n=1024; % 码长
niter= 60;%最大迭代此时
nb_err = zeros(1,length(SNRdB));
nb_code = zeros(1,length(SNRdB));
nb_err_max= 100 ;
nb_code_max= 1e4;
H= gen_h(n,6,3);%产生H
[Hs,H]=gen_Hs(H); %化为系统码
Q= Hs(:,1:k)'; %生成矩阵的Q
for s= 1:length(SNRdB)
sigma = 10^(-SNRdB(s)/20);%其平方是噪声功率
while nb_err(s)<nb_err_max && nb_code(s)<nb_code_max
nb_code(s) = nb_code(s)+1;
b = rand(1,k)<0.5;
c=[b,rem(b*Q,2)];%系统码编码
x=(-1).^c;%BPSK modulation
noise = sigma * randn(1,length(x));
y = x+noise;
lam_ch= 2*y/sigma^2;%软解调
hat_c= msa(lam_ch,niter,H);
err = any(hat_c~=c); %c是发送码字,hat_c是硬判决
if err
nb_err(s)= nb_err(s)+err;
disp([nb_err;nb_code])
end
end
end
WER= nb_err./nb_code;
EbN0dB= SNRdB+10*log10(n/k/2);%化成Eb/N0,参考式(1)
figure(1)
semilogy(EbN0dB, WER,'^-','LineWidth',2)
xlabel('Eb/N0')
ylabel('WER')
grid on;
legend('n=256','n=512','n=1024')
代码链接(包括word文档):https://download.csdn.net/download/qq_45047246/86268695
边栏推荐
- 2022年CSP-J1 CSP-S1 第1轮初赛 报名指南
- lua入门案例实战123DIY
- 新产品如何进行网络推广?
- The latest masterpiece!Alibaba just released the interview reference guide (Taishan version), I just brushed it for 29 days
- leetcode:126. 单词接龙 II
- 一文带你了解 Grafana 最新开源项目 Mimir 的前世今生
- 【ACM】2022.7.31训练赛
- Mysql environment installation under Linux (centos)
- How to import a Golang external package and use it?
- [QNX Hypervisor 2.2用户手册]9.16 system
猜你喜欢
基于simulink的Passive anti-islanding-UVP/OVP and UFP/OFP被动反孤岛模型仿真
一文带你了解 Grafana 最新开源项目 Mimir 的前世今生
日常--Kali开启SSH(详细教程)
2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
Shell常用脚本:Nexus批量上传本地仓库脚本
Handwritten a simple web server (B/S architecture)
消息队列存储消息数据的MySQL表格
[Cloud Residency Co-Creation] [HCSD Big Celebrity Live Broadcast] Personally teach the secrets of interviews in big factories
面试突击69:TCP 可靠吗?为什么?
编译型语言和解释型语言的区别
随机推荐
游戏安全03:缓冲区溢出攻击简单解释
Unity-通过预制件和克隆方法动态实现各个UGUI下控件的创建和显示
程序进程和线程(线程的并发与并行)以及线程的基本创建和使用
Shell common script: Nexus batch upload local warehouse script
IPD process terminology
NgRx 里 first 和 take(1) 操作符的区别
SQL injection Less46 (injection after order by + rand() Boolean blind injection)
/etc/sysconfig/network-scripts 配置网卡
leetcode:126. 单词接龙 II
周总结
什么是客户画像管理?
基于simulink的Active anti-islanding-AFD主动反孤岛模型仿真
#yyds dry goods inventory# Interview must brush TOP101: the entry node of the ring in the linked list
[QNX Hypervisor 2.2用户手册]9.15 suppress
"APIO2010" Patrol Problem Solution
Input and output optimization
I don't know what to do with sync issues
Shell常用脚本:Nexus批量上传本地仓库增强版脚本(强烈推荐)
Advanced Algebra _ Proof _ Any matrix is similar to an upper triangular matrix
[QNX Hypervisor 2.2用户手册]9.14 set