?? ldpc_test.m
字號:
clear all;
clc
M=100;
N=200;
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;
n=1;
% 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)
t0=0;
sigma_t=1/(2*r*EbN0_no_db);
sigma = sqrt(sigma_t);
%sigma = 1;
frame_num=100;
loops=0;
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*(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^2)); % likelihoods
f1 = (f1(:))'; % make it a row vector
f0=1-f1;
[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(n)=t0./(length(x)*frame_num);
n=n+1;
end
% 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 + -