当前位置:   article > 正文

基于OFDM的通信链路误码率matlab仿真,采用多径信道,卷积编码,16QAM_基于瑞丽多径信道的ofdm通信链路误码率matlab仿真,对比bpsk,qpsk,16qam,64q

基于瑞丽多径信道的ofdm通信链路误码率matlab仿真,对比bpsk,qpsk,16qam,64qam

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

        在通信系统中,信道所能提供的带宽通常比传送一路信号所需的带宽要宽得多。如果一个信道只传送一路信号是非常浪费的,为了能够充分利用信道的带宽,就可以采用频分复用的方法。
       OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
        OFDM技术是HPA联盟(HomePlug Powerline Alliance)工业规范的基础,它采用一种不连续的多音调技术,将被称为载波的不同频率中的大量信号合并成单一的信号,从而完成信号传送。由于这种技术具有在杂波干扰下传送信号的能力,因此常常会被利用在容易受外界干扰或者抵抗外界干扰能力较差的传输介质中。

       在通信系统中,信道所能提供的带宽通常比传送一路信号所需的带宽要宽得多。如果一个信道只传送一路信号是非常浪费的,为了能够充分利用信道的带宽,就可以采用频分复用的方法。 

       OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。

        OFDM技术是HPA联盟(HomePlug Powerline Alliance)工业规范的基础,它采用一种不连续的多音调技术,将被称为载波的不同频率中的大量信号合并成单一的信号,从而完成信号传送。由于这种技术具有在杂波干扰下传送信号的能力,因此常常会被利用在容易受外界干扰或者抵抗外界干扰能力较差的传输介质中。

       一个OFDM符号之内包含多个经过相移键控(PSK)或者正交幅度调制(QAM)的子载波。

       一旦要把传输的比特分配到各个子载波上,某一种调制模式则将他们映射为子载波的幅度和相位,通常采用等效基带信号来描述OFDM的输出信号:

       其中信号的实部和虚部分别对应OFDM的同相和正交分量,在实际系统可以分别与对应的c o s coscos分量和s i n sinsin分量相乘。 

2.仿真效果预览

matlab2022a仿真结果如下:

3.MATLAB核心程序

  1. Assuming the channel response is invariant during one frame
  2. pilot_sym = pilot_generator(128); % Generate the pilot symbols, all in BPSK modulation
  3. pilot_syms=pilot_sym';
  4. pilot_syms=pilot_syms(:)';
  5. idx=0;
  6. for snr = 0:4:40
  7. idx=idx+1;
  8. nframe = 0;
  9. nerror = 0;
  10. while nframe < frame_num
  11. nframe
  12. info_bits = round(rand(1, N_DBPF)); % Generate the information bites randomly
  13. tail = zeros(1,6); % Tail bits for convolutional encoder
  14. info_bits = [info_bits tail]; % Append the tail bits to the infomation bits
  15. trl = poly2trellis(7,[133 171]); % Trellis structure of convolutional encoder,
  16. % Constraint length K = 7,generator polynomial in octal g0 = 133, g1 = 171
  17. code_bits = convenc(info_bits, trl); % Convolutional encoder,rate R = 1/2
  18. TX = tx_16qam_mod(code_bits); % 16-QAM modulation
  19. figure(1)
  20. a=real(TX);
  21. b=imag(TX);
  22. plot(a,b,'bx')
  23. pilot_num = 1; % The start number of the cyclic pilot symbols
  24. tx = tx_fre_to_time(TX,N_SPF,pilot_syms,pilot_num); % Serial to parallel,Add pilot symbols, IFFT ( Oversampling),Add cyclic prefix
  25. temp_channel = channel_response(:,nframe+1).'; % Channel response at the current frame
  26. ry = channel_multipath(tx,temp_channel); % Multi-path channel
  27. ry = awgn(ry,snr); % Add addictive white gaussian noise
  28. [RY,R_pilot] = ry_time_to_fre(ry,N_SPF,temp_channel); % Recover the time signal to frequency symbols of each subcarrier and Channel Equalization
  29. figure(2)
  30. a=real(RY);
  31. b=imag(RY);
  32. plot(a,b,'bx')
  33. axis([-2 2 -2 2]);
  34. hold on
  35. Rcode_bits = ry_16qam_demod(RY); % Demodulate the received symbols
  36. dec_bits = ry_sovadec(Rcode_bits, trl, N_DBPF,N_DBPF); % Soft output viterbi decoding, out = ln( p(info_bits(i)=1)/p(info_bits(i)=0));
  37. for i = 1:N_DBPF
  38. if dec_bits(i) >= 0
  39. hard_det(i) = 1; % hard_det refers to the hard decision
  40. else
  41. hard_det(i) = 0;
  42. end
  43. if hard_det(i) ~= info_bits(i)
  44. nerror = nerror+1;
  45. end
  46. end
  47. nframe = nframe + 1;
  48. end
  49. BER(idx) = nerror/(frame_num * N_DBPF);
  50. end
  51. A173

4.完整MATLAB

V

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/573862
推荐阅读
相关标签
  

闽ICP备14008679号