您现在的位置:首页 >> 通信 >> 内容

m基于扩频解扩+turbo译码的通信链路matlab误码率仿真,调制对比QPSK,16QAM,64Q

时间:2023/7/14 22:08:46 点击:

  核心提示:0X_008m,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJuXmppx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

      基于扩频解扩和Turbo编译码的通信链路误码率仿真,并比较了不同调制方式下的性能。首先,我们详细讨论了实现步骤,包括扩频解扩、调制、编码和译码等。

4.部分源码

.....................................................................

N        = 512;%设置奇偶校验矩阵大小     

M        = 255; 

%得到扩频倍数,设置1,4,8

fp       = 8;

 

if fp==1

   SNR      = [-8:2:22];

   TJL      = 2*[6000,6000,5000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,4000,3000,2500,2000,1800,1500,1000,1000,1000,500,500,400,400,300,300,200,200,100,100,100];

end

if fp==4

   SNR      = [-8:2:12];

   TJL      = 2*[4000,3000,2500,2000,1800,1500,1000,1000,1000,500,500,400,400,300,300,200,200,100,100,100,100,100,100,100,100,100,100,100,100];

end

if fp==8

   SNR      = [-8:2:8];

   TJL      = 2*[3000,2500,2000,1800,1500,1000,1000,1000,500,500,400,400,300,300,200,200,100,100,100,100,100,100];

end

 

 

 

for i=1:length(SNR)

    Bit_err(i) = 0;

    Num_err    = 0;

    Numbers    = 0; %误码率累加器

    while Num_err <= TJL(2*i)

          Num_err

          fprintf('Eb/N0 = %f\n', SNR(i));

          %产生需要发送的随机数

          Trans_data = round(rand(1,N-M));  

          turbo_code = turbo_encode(Trans_data); 

          %DSSS   

          pseudoNumber          = round(rand(1,fp)');

          [dsss,converted,PN2]  = func_dsss(turbo_code,pseudoNumber,fp);

          Trans_BPSK            = QAM64_modulation(dsss);

          %通过高斯信道

          Rec_BPSK   = awgn(Trans_BPSK,SNR(i),'measured');   

 

          ReData     = QAM64_demodulation(Rec_BPSK);

          %DSSS

          dsss2      = func_dsss2(ReData,pseudoNumber,fp);

          %turbo译码 

          x_hat      = round(turbo_decode(dsss2));

          [nberr,rat]= biterr(x_hat,Trans_data);

          Num_err    = Num_err+nberr;

          Numbers    = Numbers+1;    

    end 

    Bit_err(i)=Num_err/(N*Numbers);

end

figure;

semilogy(SNR,Bit_err,'o-r');

xlabel('Eb/N0(dB)');

ylabel('BER');

grid on;

if fp==1

   save data_QAM641.mat SNR Bit_err

end

if fp==4

   save data_QAM644.mat SNR Bit_err

end

if fp==8

   save data_QAM648.mat SNR Bit_err

end

0X_008m

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168