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

m基于瑞丽多径信道的OFDM通信链路误码率matlab仿真,对比BPSK,QPSK,16QAM,64

时间:2023/6/1 3:08:48 点击:

  核心提示:12_085_m,包括程序操作录像...

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

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

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

点击店铺

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

2.部分仿真图预览


3.算法概述

        OFDM(Orthogonal Frequency Division Multiplexing)是一种常用的多载波调制技术,广泛应用于现代无线通信系统中。OFDM技术能够有效地抵抗多径衰落、提高频谱利用率和降低误码率等,因此在4G、5G等移动通信系统中得到了广泛应用。在OFDM通信系统中,调制方式直接影响系统的性能,因此需要进行合理的选择。将介绍基于瑞丽多径信道的OFDM通信链路,并对BPSK、QPSK、16QAM和64QAM四种调制方式进行性能对比分析。

4.部分源码

%子载波个数

N_fft  = 512;     

%OFDM符号的个数

N_bits = 16;     

%循环前缀长度

N_cp   = 32;   

%1---bpsk

%2---qpsk

%4---16qam

%6---64qam

sels   = 1;              

SNR    = [0:2:24];

%蒙特卡罗

MTKL   = 1000;         

ERR    = zeros(size(SNR));

 

for ii=1:length(SNR)

    ii

    errors=[];

    for jj=1:MTKL

      msgs     = double(rand(1,N_fft*sels*N_bits)>=0.5);

      %调制

      msgs_mod = func_mod(msgs,sels);

      %串并

      msgs_s2p = reshape(msgs_mod,N_fft,N_bits).'; 

      %OFDM调制

      msgs_ifft= ifft(msgs_s2p,N_fft,2);  

      %加循环前缀 

      msgs_cp  = zeros(N_bits,N_fft+N_cp);      

      for iii=1:N_bits

          msgs_cp(iii,1:N_cp)    = msgs_ifft(iii,N_fft-N_cp+1:end);         

          msgs_cp(iii,N_cp+1:end)= msgs_ifft(iii,:);

      end

      %并串转换

      Tx       = reshape(msgs_cp.',1,[]);                                

      R_noised = awgn(Tx,SNR(ii),'measured');  

      %加多径

      R_noised = R_noised + 0.2*[randn(1,2)/4,R_noised(1:end-2)];

      R_ps     = reshape(R_noised,N_fft+N_cp,N_bits).';                

      %去CP

      for iii=1:N_bits                                          

          R_cp(iii,:) = R_ps(iii,N_cp+1:end);

      end

      %OFDM解调 

      R_fft      = fft(R_cp,N_fft,2);  

      %解调 

      R_demod    = reshape(R_fft.',1,[]);

      R_msg      = func_demod(R_demod,sels);

      errors(jj) = sum(abs(msgs-R_msg));

    end

    errsum=sum(errors);

    ERR(ii)=errsum/(MTKL*N_bits*N_fft*sels);  

end

 

figure;

semilogy(SNR,ERR,'b-o');

grid on;

xlabel('SNR(dB)');

ylabel('BER');

if sels==1

   save Rbpsk_ray.mat SNR ERR  R_demod

end

if sels==2

   save Rqpsk_ray.mat SNR ERR   R_demod

end

if sels==4

   save Rqam16_ray.mat SNR ERR  R_demod

end

if sels==6

   save Rqam64_ray.mat SNR ERR  R_demod

end

12_085_m

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