⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ldpc_demo.m

📁 LDPC码在TD-SCDMA系统中的应用仿真程序
💻 M
字号:
clear all; 
clc; 
%%%%%%%%%%%%define dimension of the parity check matrix%%%%%%%% 
rows=150; 
cols=300; 
h=gen_ldpc(rows,cols);%generates a 100 x 200 H matrix( the IG parity 
                      %check matrix) 
[newh,rearranged_cols]=rearrange_cols(h); 
% newh holds the rearranged version of H and rearranged_cols holds 
%the rearrangement order of columns 
%%%%%%%%%%%%Get A and B matrices %%%%%%%%%%%%%%%% 
for i=1:rows 
    for j=1:rows 
        A(i,j)=newh(i,j); 
    end 
end 
for i=1:rows 
    for j=rows+1:cols 
        B(i,j-rows)=newh(i,j); 
    end 
end 

%%%%%%%%%%%%%%message bits%%%%%%%%%%%%%%%%%%%%% 
cycle=1;
nerr=0;
%generate message bits randomly 
%for j=1:10%simulate 1000 flame
s=zeros(1,(cols-rows));
for i=1:cols-rows 
    s(i)=round(rand); 
end 
s=s';
% make it a row vector 
%%%%%%% or load s from file %%%%type "help load" at matlab prompt for details 

%%%%%%%%%%%%%%get check bits( Eqn.5)%%%%%%%%%%%%%%%% 

d=mul_GF2(inv_GF2(A),B); 
c=mul_GF2(d,s); 
%%%%%%%%%%%%%%%%%form u'%%%%%%%%%%%%% 
u1=c; 
for i=rows+1:cols 
    u1(i)=s(i-rows); 
end 
%%%%%%%%%%%%%%% reorder u?to get the CW u %%%%%%%%%%%%%%%%%%% 
u=reorder_bits(u1,rearranged_cols); 


 No=1.9;
   % assume the codeword c, the parity check matrix H and No are already loaded into the MATLAB memory 
  tx_waveform=bpsk(u,1);  %amp= 1 
  rx_waveform=awgn(tx_waveform,No); 
  scale(1:length(u))=1;  %No fading. 
  vhat=decode_ldpc(rx_waveform,No,1,h,scale) %since amp=1; 
  % assume we have the rearranged_cols array output by the rearrange_cols( ) function already loaded into MATLAB memory 
  uhat = extract_mesg(vhat,rearranged_cols); 
  uhat'
  
%%%%%%%%%%%%%%% u is the codeword to be transmitted %%%%%%%%%%%%%%%%%%% 
%%nerr=0;
errmax=mod((s+uhat'),2);
for i=1:rows
    if(errmax(i)==1)
 nerr=nerr+1;
end
end
%end
ber=nerr/((cols-rows)*cycle);
ber

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -