📄 test_ber_cap_new.m
字号:
%****************************************************************
% 内容概述:AWGN信道测试
% 每个SNR采样点的测试帧数是随snr指数上升的,
% 这样不仅减少了计算量而且可以保证精度。
% 每帧的输入是相同的,(不是每帧都不一样,这样可以大幅降低计算量)
% 在帧比特足够多的情况下,应该可以保证随机性(未理论证实)
% 创 建 人:朱殿荣/QQ:235347/MSN:njzdr@msn.com
% 单 位:南京邮电大学,通信工程系
% 创建时间:2005年7月24日
% 修改时间:
% 参考文献:
% 版权声明:任何人均可复制、传播、修改此文件,同时需保留原始版权信息。
%****************************************************************
clear;
clc;
rate=1/3; %码率
wear=1; %损耗系数
time_begin=datestr(now);
snr=0:0.5:3; %snr的采样点
EbNo=10.^(snr.*0.1);
num_frame=round(10.^(snr+1)); %测试的帧数;
num_block_size=1024; %测试的块尺寸,指包含尾比特的软输入系统系列长度
err_counter(3,1:length(snr))=0; %初始化错误比特计数器
guage=0; %初始化计算量
counter_guage=0; %初始化计算量计数器
for num_it=1:1:3
for ii=1:length(snr)
guage=guage+num_frame(ii); %统计计算量
end
end
random_in=round(rand(1,num_block_size-3)); %随机数
[turbod_out,alphain]=turbo(random_in); %编码
for num_it=1:1:3
for ii=1:length(snr)
L_c=4*wear*EbNo(ii)*rate;
sigma=1/sqrt(2*rate*EbNo(ii));
for frame=1:num_frame(ii)
noice=randn(3,num_block_size); %噪声
soft_in=turbod_out+sigma*noice; %信息噪声叠加
soft_in=L_c*soft_in;
%soft_in=awgn(turbod_out,snr(ii),'measured'); %通过AWGN信道,加入噪声
counter_guage=counter_guage+1;
fprintf('总帧数:%6.0f;完成帧数:%6.0f;当前snr点总帧数:%4.0f;当前snr点完成帧数:%4.0f;计算进度:%2.1f%% \n',...
guage,counter_guage,num_frame(ii),frame,counter_guage*100/guage);
[hard_out,soft_out]=deturbo_cap(soft_in,alphain,num_it);
err_counter(num_it,ii)=err_counter(num_it,ii)+...
length(find(hard_out(1:num_block_size-3)~=random_in));
end
ber(num_it,ii)=err_counter(num_it,ii)/((num_block_size-3)*num_frame(ii));
end
end
semilogy(snr,ber(1,:),snr,ber(2,:),snr,ber(3,:));
xlabel('SNR(dB)');
ylabel('BER');
title('3GPP标准 max-log-map译码算法 译码性能图,1024交织长度,楚宛琴噪声加法');
legend('1次迭代','2次迭代','3次迭代');
save cap算法06_楚宛琴噪声加法.mat snr ber soft_out;
time_end=datestr(now);
disp(time_begin);
disp(time_end);
%plot(snr,ber);
%counter_ber
%soft_in(1,1:10);
%hard_out(1:10);
%soft_out(1:10);
%--------------------------
%soft_in2(1,:)=soft_in(1,alphain);
%soft_in2(2,:)=soft_in(3,:);
%soft_out=decoder_3GPP_MAX_new(soft_in2);
%soft_out(alphain)=soft_out;
%----------------------------
%soft_out=decoder_3GPP_MAX_new(soft_in);
%for ii=1:num_block_size
% if soft_out(ii)>0
% hard_out(ii)=1;
% else
% hard_out(ii)=-1;
% end
%end
%----------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -