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

📄 main.asv

📁 ldpc编码
💻 ASV
字号:
%-----------------------------------------------
% 仿真参数设置

maxiter = 20;        % 最大迭代次数
block = 1000;          % 仿真码块数
num = 10;             % 信噪比个数

%-----------------------------------------------
% 译码预处理

[M K] = size(BakG);     % [校验式个数   信息比特长度]
N = K+M;                % 码子长度 
R = K/N;                % 码率
N
R
%-----------------------------------------------
%  产生随机数矩阵 1 X K*block

SourceData = randint(1,K*block);  

%-----------------------------------------------
%  编码          245X343_G_187X156.mat

for i = 1:block
    EncodeData((i-1)*N+1:i*N) = encode( SourceData( (i-1)*K+1:i*K ),BakG );       
end
clear SourceData;

%-----------------------------------------------
%  调制

ModulateData = modulate( EncodeData );     

%-----------------------------------------------
%  不同信噪比下的性能

for i=1:num 
    iter=i
    ITER_NUM = 0;
    SNR(i) = i;
    sigma = sqrt( 1/( 2 * R * 10^(SNR(i)/10) ) );     
    ChannelFactor = 2/(sigma^2);    
    
   %-----------------------------------------------
   %  经过信道

    ChannelData = channel( ModulateData, sigma );  
    
    %-----------------------------------------------
    %  译码

    for j=1:block                                          
        [DecodeData((j-1)*N+1:j*N),iter_num] = decode_log( ChannelData( (j-1)*N+1:j*N ), ChannelFactor, BakH,maxiter);
        ITER_NUM = ITER_NUM + iter_num;
    end
    
    %-----------------------------------------------
    %  计算误码率

    ErrorBit=0;                         % 统计错误比特数
    for j=1:N*block
        if(DecodeData(j)~=EncodeData(j))
            ErrorBit=ErrorBit+1;
        end
    end
    ErrorBit
    BER(i) = ErrorBit/(N*block);         % 计算误码率
    num_iter(i) = ITER_NUM/block;
end

%-----------------------------------------------
%  画图

clear  i j index_row index_col ;
clear ModulateData ChannelData;
semilogy(SNR,BER);
grid on;

⌨️ 快捷键说明

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