RS+BCH级联编译码误码率性能matlab仿真

简介: RS+BCH级联编译码误码率性能matlab仿真

1.算法描述

    在实际情况中,在光通信信道中出现的错误有单独随机出现的误码,也有突发出现的无码,为了更好的提升光通信的性能,需要使用级联码。

    级联码在进行编码的时候,将k1k2个二进制bit数据分为k2个部分,每个部分由k1个bit信息,然后按照非二进制分组码编成(n2,k2)的外码C2,最小距离为d2,码率为R2= k2/n2。然后将每一个部分中的k1个信息按照二进制分组码编码成(n1,k1)的内码C1,最小距离为d1,码率为R1=k1/n1。因此,级联码的码率为R = R1R2。

    级联码根据结构的不同,可以分为内外型级联码,并行型级联码以及交织连续型级联码三种类型,根据文献[50]的研究成果,我们选择一种结构较为简单的内外型级联码作为本文的一个研究对象。

    在本课题中,本文选择内外型级联码的内码分别为BCH(15,7)和BCH(255,207),外码使用RS(31,15)两种类型进行仿真性能分析。级联码的基本结构框图如下图所示:

1.png

2.仿真效果预览
matlab2013b仿真结果如下:

2.png

   从上面的仿真分析可知,RS(31,15)+BCH(15,7)这种内外型级联码具有良好的纠错性能,当SNR = 5的时候,其误码率性能达到了10^-5。 

3.MATLAB部分代码预览

k            = 15;       
n            = 31;   
 
N            = 15; 
K            = 7; 
 
Len          = log2(n+1);
Simu_Len     = k;  %仿真的时间长度
Simu_time    = 1;
SNR          = [0:1:5];
TJL          = [200,150,100,50];
 
 
Rs_Encoder   = fec.rsenc(n,k);
Rs_Decoder   = fec.rsdec(Rs_Encoder);
 
%主体代码
for i = 1:length(SNR)
    i
    Bit_err(i)    = 0; %设置误码率参数
    Num_err       = 0; %蒙特卡洛模拟次数
    Numbers       = 0; %误码率累加器
    while Num_err <= TJL 
          fprintf('Eb/N0 = %f\n', SNR(i));
          Num_err 
          %产生信号
          msg2     = (double(rand(1,Simu_Len)>0.5))';
          %编码
          Msg_Enc  = encode(Rs_Encoder,msg2);
          %转换为二进制
          Msg_Enc2 = func_dec2bin(Msg_Enc,Len);
 
          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
          
          message    = [Msg_Enc2,(rand(1,55)>=0.5)];
          Rec        = [];
          for jj = 1:length(message)/K
              tmps       = message((jj-1)*K+1:jj*K);
              msg        = gf(tmps);
              BCHcode_gf = bchenc(msg,N,K);
              %BCH编码
              BCHcode_double=-1*ones(1,N);
              for code_j=1:N
                  if BCHcode_gf(1,code_j)==1
                     BCHcode_double(1,code_j)=1;
                  end
              end         
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              %通过信道
              BCH_receive = awgn(BCHcode_double,SNR(i),'measured');
 
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              hard_coded  = zeros(1,N);
              for hard_j=1:N
                  if BCH_receive(hard_j)>0
                     hard_coded(hard_j)=1;
                  end
              end
              %BCH解码 
              BCHdecode = gf(zeros(1,K));
              hard_BCH  = hard_coded;
              [BCHdecode_i,error_num]=bchdec(gf(hard_BCH),N, K);
              BCHdecode = BCHdecode_i;
              BCHdecode_double = zeros(1,K);
 
              for gf_to_double_j=1:K
                  if BCHdecode(gf_to_double_j)==1
                     BCHdecode_double(gf_to_double_j)=1;
                  end
              end
              Msg_Enc4 = BCHdecode_double;
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
              Rec = [Rec,Msg_Enc4];
          end
          Rec(end-55+1:end) = [];
          
          %二进制转换为十进制
          Msg_Enc5 = Rec; 
          Msg_Enc6 = func_bin2dec(Msg_Enc5,Len);
        
          %译码
          [Msg_Dec,cnumerr,ccode] = decode(Rs_Decoder,Msg_Enc6');
          %计算误码率
          Err                     = biterr(Msg_Dec,msg2);
          Num_err                 = Num_err+Err;
          Num_err
          Numbers                 = Numbers+1;
    end  
    Bit_err(i) = Num_err/(Simu_Len*Numbers);  
end
 
%曲线仿真
figure;
semilogy(SNR,Bit_err,'b-o');
xlabel('SNR');
ylabel('BER');
grid on;
save data.mat SNR Bit_err
A_046
相关文章
|
2天前
|
算法
基于小波变换和峰值搜索的光谱检测matlab仿真,带GUI界面
本程序基于小波变换和峰值搜索技术,实现光谱检测的MATLAB仿真,带有GUI界面。它能够对CO2、SO2、CO和CH4四种成分的比例进行分析和提取。程序在MATLAB 2022A版本下运行,通过小波分解、特征提取和峰值检测等步骤,有效识别光谱中的关键特征点。核心代码展示了光谱数据的处理流程,包括绘制原始光谱、导数光谱及标注峰值位置,并保存结果。该方法结合了小波变换的时频分析能力和峰值检测的敏锐性,适用于复杂信号的非平稳特性分析。
|
1天前
|
传感器 算法
基于GA遗传算法的多机无源定位系统GDOP优化matlab仿真
本项目基于遗传算法(GA)优化多机无源定位系统的GDOP,使用MATLAB2022A进行仿真。通过遗传算法的选择、交叉和变异操作,迭代优化传感器配置,最小化GDOP值,提高定位精度。仿真输出包括GDOP优化结果、遗传算法收敛曲线及三维空间坐标点分布图。核心程序实现了染色体编码、适应度评估、遗传操作等关键步骤,最终展示优化后的传感器布局及其性能。
|
1天前
|
监控 算法 数据安全/隐私保护
基于扩频解扩+turbo译码的QPSK图传通信系统matlab误码率仿真,扩频参数可设置
本项目基于MATLAB 2022a实现图像传输通信系统的仿真,涵盖QPSK调制解调、扩频技术和Turbo译码。系统适用于无人机图像传输等高要求场景,确保图像质量和传输稳定性。通过仿真,验证了系统在不同信噪比下的性能,展示了图像的接收与恢复效果。核心代码实现了二进制数据到RGB图像的转换与显示,并保存不同条件下的结果。
16 6
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
272 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
162 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
138 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
9月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
|
9月前
|
Serverless
基于Logistic函数的负荷需求响应(matlab代码)
基于Logistic函数的负荷需求响应(matlab代码)

热门文章

最新文章