• 基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真


    目录

    1.算法运行效果图预览

    2.算法运行软件版本

    3.部分核心程序

    4.算法理论概述

    5.算法完整程序工程


    1.算法运行效果图预览

    2.算法运行软件版本

    MATLAB2022a

    3.部分核心程序

    1. ................................................................
    2. %调制识别
    3. len1 = func_fsk_psk_check(p1);
    4. len2 = func_fsk_psk_check(p2);
    5. len3 = func_fsk_psk_check(p3);
    6. len4 = func_fsk_psk_check(p4);
    7. %根据参数获得FSK和PSK区分参数
    8. Level= (mean([len1,len2]) - mean([len3,len4]))/2;
    9. %分别提取FSK和PSK的不同调制方式的特征参数
    10. char1 = real(func_para_check(y_2FSKn,N0));
    11. char2 = real(func_para_check(y_4FSKn,N0));
    12. char3 = real(func_para_check(y_2PSKn,N0));
    13. char4 = real(func_para_check(y_4PSKn,N0));
    14. %通过GRNN神经网络进行训练
    15. char = [char1;char2]';
    16. T = [1;2]';
    17. net_fsk = newgrnn(char,T,1.2);
    18. char = [char3;char4]';
    19. T = [1;2]';
    20. net_psk = newgrnn(char,T,1.2);
    21. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    22. %加载信号进行测试
    23. %通过大量的循环测试,计算正确率
    24. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    25. zql = 0;
    26. %运行的时候,尽量将下面的两个参数指标设置大点,这样结果才精确
    27. MTKL = 50;
    28. SNRS = [-10:1:20];
    29. Bers = zeros(length(SNRS),1);
    30. for jj = 1:length(SNRS)
    31. for i = 1:MTKL
    32. [SNRS(jj),i]
    33. rng(i);
    34. %长度
    35. N = N0;
    36. %SNR
    37. SNR = SNRS(jj);
    38. %2FSK
    39. y_2FSK = func_2FSK(N);
    40. %4FSK
    41. y_4FSK = func_4FSK(N);
    42. %BPSK
    43. y_2PSK = func_2PSK(N);
    44. %QPSK
    45. y_4PSK = func_4PSK(N);
    46. %设置单独的一种调制信号
    47. tmps = [2,2,2,2];%4PSK
    48. if tmps(1) == 1
    49. datas = y_2FSK;
    50. end
    51. if tmps(1) == 2
    52. datas = y_4FSK;
    53. end
    54. if tmps(1) == 3
    55. datas = y_2PSK;
    56. end
    57. if tmps(1) == 4
    58. datas = y_4PSK;
    59. end
    60. datas = func_multipath(datas);
    61. data = func_add_noise(datas,SNR);
    62. [p,f] = func_power(data,Ns);
    63. len = func_fsk_psk_check(p);
    64. flag = 0;
    65. %首先进行FSK和PSK两种模式的区分
    66. if len >= Level%为FSK模式
    67. %根据识别参数进行调制类型的辨识
    68. char = real(func_para_check(data,length(data)));
    69. T = round(sim(net_fsk,char'));
    70. if T == 1
    71. flag = 1;
    72. end
    73. if T == 2
    74. flag = 2;
    75. end
    76. else%为PSK模式
    77. %根据识别参数进行调制类型的辨识
    78. char = real(func_para_check(data,length(data)));
    79. T = round(sim(net_psk,char'));
    80. if T == 1
    81. flag = 3;
    82. end
    83. if T == 2
    84. flag = 4;
    85. end
    86. end
    87. if flag == tmps(1)
    88. zql = zql + 1;
    89. end
    90. end
    91. %识别正确率
    92. Bers(jj) = zql/MTKL;
    93. zql = 0;
    94. end
    95. R = 100*mean(Bers,2);
    96. figure;
    97. plot(SNRS,R,'b-o','linewidth',2);
    98. grid on
    99. xlabel('snr');
    100. ylabel('调制识别率');
    101. axis([min(SNRS)-1,max(SNRS)+1,0,110]);
    102. save r1.mat SNRS R
    103. 01_131m

    4.算法理论概述

            本课题,我们主要对MPSK和MFSK调制类型进行识别。在进行信号调制方式区分之前,首先需要对PSK和FSK进行区分,提出了一种基于信号功率谱的PSK和FSK调制方式的识别方法。信号的功率谱计算过程,是一个计算随机过程的统计特性的过程,其中平稳随机过程的功率谱计算过程是一个确定的函数,计算信号的功率谱的过程即功率谱估计。是通过给定的信号样本去估计平稳随机信号的功率谱密度,通过计算信号的功率谱估计可以分析信号的能量随着频率分布的变化情况。

          信号的功率谱计算方法可以分为经典谱估计方法和现代谱估计方法目前应用较为广泛的是经典谱估计算法。经典谱估计方法主要分为直接法和间接法两大类别,本文将通过直接法对调制信号的功率谱进行估计,直接法的主要流程是先计算调制信号的快速傅里叶变换,将调制信号从时域变换到频域,然后将频域结果与其共轭结果相乘,从而得到信号的功率谱估计。

           该算法的整体流程图如下所示

            GRNN,即General Regression Neural Network,中文全称为广义回归神经网络,是由The Lockheed Palo Alto研究实验室在1991年提出的。GRNN是一种新型的基于非线性回归理论的神经网络模型[43,44]。GRNN是建立在非参数核回归基础之上的,该神经网络是以测试样本为后验条件,并从观测样本中计算得到自变量和因变量之间的概率密度函数,然后在计算出因变量关于自变量的回归值。由于GRNN不需要规定模型的类型,只需要设置神经网络的光滑因子参数,GRNN神经网络的光滑因子参数的取值对神经网络的输出影响较大,当光滑因子参数较大的时候,其对应的神经元所覆盖的输入区域就越大;当光滑因子参数较小的时候,神经网络对应的径向基函数曲线较陡,因此神经网络输出结果更接近期望值,但此时光滑度越差。

           GRNN结构如图所示,整个网络包括输入层、模式层、求和层与输出层。

    5.算法完整程序工程

    OOOOO

    OOO

    O

  • 相关阅读:
    [附源码]计算机毕业设计基于SpringBoot的在线作业批改系统
    base_lcoal_planner的LocalPlannerUtil类中getLocalPlan函数详解
    strcat · strstr | 使用场景与模拟实现
    Qt Designer如何安装,打开方式
    看透react源码之感受react的进化
    JVM虚拟机字节码执行引擎——类文件和类加载之前必看
    MySQL学习笔记(一 mysql简介)
    【ACWing】3531. 哈夫曼树
    SpringBoot引入*.properties的属性
    Jupyter Notebook + Pyecharts——学习笔记(04)
  • 原文地址:https://blog.csdn.net/aycd1234/article/details/134237951