📄 ldpc_test_2.asv
字号:
clear all;
clc
M=500;
N=600;
t=3;
q=2;
seed=123;
r=1-(M/N);
[H]=ldpc_generate(M,N,t,q,seed);
[h,G]=ldpc_h2g(H);
%X=[sign(randn(1,size(G,1)))+1)/2;
nn=0;
t0=0;
% i=0; %add
% EbN0_db=[2];
% EbN0_no_db=10.^(EbN0_db./10);
% err=zeros(1,length(EbN0_no_db));%add
% err_awgn=zeros(1,length(EbN0_no_db));
% for kk=1:length(EbN0_db)
for SNR=-8:0.5:-4
fprintf('snr=%g\n',SNR);
% EbN0_no_db=10^(SNR/10);
sigma_t=1/(2.*10^(SNR/10));
sigma_awgn = sqrt(sigma_t);
%sigma = 1;
frame_num=50;
loops=0;
nn=nn+1;
while(loops<frame_num)%add
% AWGN noise deviation
x = (sign(randn(1,size(G,1)))+1)/2; % random bits
y = mod(x*G,2); % encoding
z_m=qpsk_modul(y);
% z = 2*y-1; % BPSK modulation
r=z_m + sigma_awgn*(randn(1,0.5*size(G,2))+i*randn(1,0.5*size(G,2))); % AWGN transmission
z=ydqpsk(r);
% zr=(sign(z)+1)/2;
% err_awgn(kk)=err_awgn(kk)+length(find(x~=zr(size(G,2)+1-size(G,1):size(G,2))))
f1=1./(1+exp(-2*z/sigma_awgn^2)); % likelihoods
f1 = (f1(:))'; % make it a row vector
f0=1-f1;
[QQ,z_hat, success, k] = ldpc_decode(f1,h,2);
x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));
x_hat = x_hat';
t0=t0+length(find(x~=x_hat));
loops=loops+1;
end%add
ber(nn)=t0./(length(x)*frame_num);
ber_snr=ber(nn);
fprintf('ber=%g\n',ber_snr);
t0=0;
end
x_line=[-8:0.5:-4];
semilogy(x_line,ber_snr,'-bo')
% berch=err_awgn/((frame_num)*(N-M))
% berldpc=err/((frame_num)*(N-M))%add
% semilogy(EbN0_db,berch,'-bo')
% hold on
% semilogy(EbN0_db,berldpc,'-bo')
% grid on
% xlabel('EbN0(dB)')
% ylabel('BER')
% legend('berchannel','berldpc')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -