📄 main_test.asv
字号:
%-----------------------------------------------
% 仿真参数设置
maxiter = 20; % 最大迭代次数
block = 1000; % 仿真码块数
num = 10; % 信噪比个数
%-----------------------------------------------
% 译码预处理
load H1.mat;
% [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;
%-----------------------------------------------
% 调制
for
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 + -