• m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法


    目录

    1.算法描述

    2.仿真效果预览

    3.MATLAB核心程序

    4.完整MATLAB


    1.算法描述

    可见光通信的信道估计,均衡,抑制papr。

    不考虑光信道,用传统的无线通信的OFDM的信道估计,均衡,抑制papr  信道估计,均衡最好有两个以上的方法比较

    %本次仿真载频为2GHz,带宽1MHz,子载波数128个,cp为16
    %子载波间隔为7.8125kHz
    %一个ofdm符号长度为128us,cp长度为16us
    %采用16QAM调制方式
    %最大doppler频率为132Hz
    %多径信道为5径,功率延迟谱服从负指数分布~exp(-t/trms),trms=(1/4)*cp时长,各径延迟取为delay=[0 2e-6 4e-6 8e-6 12e-6]

    Zero forcing, ZF:简单,但放大了噪声,性能最差

    Minimum Mean Square Error, MMSE:考虑了噪声因素,性能比ZF好

    2.仿真效果预览

    matlab2022a仿真如下:

    3.MATLAB核心程序

    1. clc;
    2. clear all;
    3. close all;
    4. warning off;
    5. addpath 'func\'
    6. sel = 3;
    7. %FFT长度
    8. FFTLen = 64;
    9. %循环前缀长度
    10. CPLen = 16;
    11. %QAM
    12. M = 4;
    13. %子载波个数
    14. Ns = 8;
    15. w = ones(FFTLen,1);
    16. SNRdB = [0:2:26];
    17. for ii = 1:length(SNRdB)
    18. ii
    19. SNRS = SNRdB(ii);
    20. NUM = 0;
    21. ERR = 0;
    22. while ERR <= 2000
    23. ERR
    24. NUM = NUM + 1;
    25. store_input = zeros(Ns,FFTLen*M);
    26. store_output = zeros(Ns,FFTLen*M);
    27. store_error = zeros(Ns,FFTLen);
    28. for sym=1:Ns
    29. %发送数据
    30. input = rand(1,FFTLen*M) > 0.5;
    31. store_input(sym,:) = input;
    32. %发送
    33. [signal_tx,input_symbols] = func_transmitter(input,FFTLen,CPLen,M);
    34. %通过信道
    35. signal_rx = func_channel(signal_tx,SNRS);
    36. %估计,均衡,
    37. if sel == 1
    38. [signal_recovered,w,error_sym] = func_receiver_mmse(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);
    39. end
    40. if sel == 2
    41. [signal_recovered,w,error_sym] = func_receiver_zf(signal_tx,signal_rx,input_symbols,FFTLen,CPLen,M,w);
    42. end
    43. if sel == 3
    44. w = zeros(3,1);
    45. [signal_recovered,w,error_sym] = func_receiver_rls(signal_tx, signal_rx, FFTLen, CPLen, M, w, 3);
    46. end
    47. store_output(sym,:) = signal_recovered;
    48. store_error(sym,:) = error_sym.';
    49. end
    50. errors_ext = abs(store_input - store_output);
    51. errors = errors_ext(FFTLen+1:length(errors_ext));
    52. num_errors = sum(sum(errors));
    53. ERR = ERR + num_errors;
    54. end
    55. BER(ii) = ERR/NUM/(FFTLen*M*(Ns-1));
    56. end
    57. % figure;
    58. % semilogy(SNRdB,BER,'b-o');
    59. % grid on;
    60. % ylabel('Error');
    61. % xlabel('SNR');
    62. if sel == 1
    63. save rmmse.mat SNRdB BER
    64. end
    65. if sel == 2
    66. save rzf.mat SNRdB BER
    67. end
    68. if sel == 3
    69. save rls.mat SNRdB BER
    70. end
    71. figure;
    72. load rmmse.mat
    73. semilogy(SNRdB,BER,'b-o');
    74. hold on
    75. load rzf.mat
    76. semilogy(SNRdB,BER,'r-o');
    77. hold on
    78. load rls.mat
    79. semilogy(SNRdB,BER,'k-o');
    80. hold on
    81. legend('MMSE','ZF','RLS');
    82. grid on;
    83. ylabel('Error');
    84. xlabel('SNR');
    85. 01_099m

    4.完整MATLAB

    V

  • 相关阅读:
    stm32_标准库_中断_按键点灯|蜂鸣器
    MetaAI发布Llama 3模型:4000亿参数的AI新标杆
    基于JAVA+SpringBoot+Mybatis+MYSQL的销售团队管理系统
    打码半年,开源一款自定义大屏设计软件!
    调用CFCA金信反欺诈服务相关接口,很详细
    技术专家说 | 如何基于 Spark 和 Z-Order 实现企业级离线数仓降本提效?
    Windows下 开机自启动jar包
    竞价推广流程
    红黑树实现
    C++——特殊类设计
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/128165846