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

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

1.算法运行效果图预览

623818dd25dc636e72381aa7d5d49988_82780907_202401231917100470505525_Expires=1706009230&Signature=iT7uKgt100ph97ve6GDTWF%2F%2BLDw%3D&domain=8.jpeg

2.算法运行软件版本
MATLAB2022a

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

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

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

6de5e71575c09764dbf871290094d3b2_82780907_202401231917210079806039_Expires=1706009241&Signature=PrFo498h8Fw%2BkJaykndhImVsZBY%3D&domain=8.png

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

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

0248702ff5189a4f8101d2d8236459d9_82780907_202401231917300704627236_Expires=1706009250&Signature=JGHD5cSRvNze7feQde%2BYOOpeMag%3D&domain=8.png

4.部分核心程序

len1 = func_fsk_psk_check(p1);
len2 = func_fsk_psk_check(p2);
len3 = func_fsk_psk_check(p3);
len4 = func_fsk_psk_check(p4);

%根据参数获得FSK和PSK区分参数
Level= (mean([len1,len2]) - mean([len3,len4]))/2;

%分别提取FSK和PSK的不同调制方式的特征参数
char1   = real(func_para_check(y_2FSKn,N0));
char2   = real(func_para_check(y_4FSKn,N0));
char3   = real(func_para_check(y_2PSKn,N0));
char4   = real(func_para_check(y_4PSKn,N0));

%通过GRNN神经网络进行训练
char    = [char1;char2]';
T       = [1;2]';
net_fsk = newgrnn(char,T,1.2);

char    = [char3;char4]';
T       = [1;2]';
net_psk = newgrnn(char,T,1.2); 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%加载信号进行测试
%通过大量的循环测试,计算正确率
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
zql  = 0;

%运行的时候,尽量将下面的两个参数指标设置大点,这样结果才精确
MTKL  = 50;
SNRS  = [-10:1:20];
Bers  = zeros(length(SNRS),1);

for jj = 1:length(SNRS)
    for i = 1:MTKL
        [SNRS(jj),i]
        rng(i);
        %长度
        N      = N0;
        %SNR
        SNR    = SNRS(jj);
        %2FSK
        y_2FSK = func_2FSK(N);
        %4FSK
        y_4FSK = func_4FSK(N);
        %BPSK
        y_2PSK = func_2PSK(N);
        %QPSK
        y_4PSK = func_4PSK(N);

        %设置单独的一种调制信号
        tmps   = [2,2,2,2];%4PSK
        if tmps(1) == 1
           datas = y_2FSK;
        end
        if tmps(1) == 2
           datas = y_4FSK;
        end
        if tmps(1) == 3
           datas = y_2PSK;
        end
        if tmps(1) == 4
           datas = y_4PSK;
        end

        datas  = func_multipath(datas);
        data   = func_add_noise(datas,SNR); 


        [p,f] = func_power(data,Ns);
        len   = func_fsk_psk_check(p);


        flag  = 0;
        %首先进行FSK和PSK两种模式的区分
        if len >= Level%为FSK模式
           %根据识别参数进行调制类型的辨识
           char = real(func_para_check(data,length(data)));
           T    = round(sim(net_fsk,char'));
           if T == 1
              flag = 1;
           end
           if T == 2
              flag = 2;
           end
        else%为PSK模式
           %根据识别参数进行调制类型的辨识
           char = real(func_para_check(data,length(data)));
           T    = round(sim(net_psk,char'));
           if T == 1
              flag = 3;
           end
           if T == 2
              flag = 4;
           end
        end
        if flag == tmps(1)
           zql = zql + 1;
        end
    end

    %识别正确率
    Bers(jj) = zql/MTKL;
    zql      = 0;
end


R = 100*mean(Bers,2);
figure;
plot(SNRS,R,'b-o','linewidth',2);
grid on
xlabel('snr');
ylabel('调制识别率');
axis([min(SNRS)-1,max(SNRS)+1,0,110]);

save r1.mat SNRS R
相关文章
|
18天前
|
数据可视化 数据挖掘
MATLAB - 信号分析器(signalanalyzer-app)
MATLAB - 信号分析器(signalanalyzer-app)
58 1
|
3月前
|
机器学习/深度学习 算法
基于鲸鱼优化的knn分类特征选择算法matlab仿真
**基于WOA的KNN特征选择算法摘要** 该研究提出了一种融合鲸鱼优化算法(WOA)与K近邻(KNN)分类器的特征选择方法,旨在提升KNN的分类精度。在MATLAB2022a中实现,WOA负责优化特征子集,通过模拟鲸鱼捕食行为的螺旋式和包围策略搜索最佳特征。KNN则用于评估特征子集的性能。算法流程包括WOA参数初始化、特征二进制编码、适应度函数定义(以分类准确率为基准)、WOA迭代搜索及最优解输出。该方法有效地结合了启发式搜索与机器学习,优化特征选择,提高分类性能。
|
2月前
|
机器学习/深度学习 人工智能 算法
【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法
坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实('杏仁', '巴西坚果', '腰果', '椰子', '榛子', '夏威夷果', '山核桃', '松子', '开心果', '核桃')等图片数据集进行训练,得到一个识别精度较高的模型文件,让后使用Django搭建Web网页端界面操作平台,实现用户上传一张坚果图片 识别其名称。
23 0
基于高通滤波器的ECG信号滤波及心率统计matlab仿真
**摘要:** 使用MATLAB2022a,实施高通滤波对ECG信号预处理,消除基线漂移,随后分析心率。系统仿真展示效果,核心代码涉及IIR HPF设计,如二阶滤波器的差分方程。通过滤波后的信号,检测R波计算RR间期,从而得到心率。滤波与R波检测是心电生理研究的关键步骤,平衡滤波性能与计算资源是设计挑战。
|
3月前
|
机器学习/深度学习 算法 数据可视化
基于googlenet深度学习网络的睁眼闭眼识别算法matlab仿真
**算法预览图展示睁眼闭眼识别效果;使用Matlab2022a,基于GoogLeNet的CNN模型,对图像进行分类预测并可视化。核心代码包括图像分类及随机样本显示。理论概述中,GoogLeNet以高效Inception模块实现眼部状态的深度学习识别,确保准确性与计算效率。附带三张相关图像。**
|
3月前
|
移动开发 算法 计算机视觉
技术笔记:openCV特征点识别与findHomography算法过滤
技术笔记:openCV特征点识别与findHomography算法过滤
47 0
|
3月前
|
机器学习/深度学习 算法 语音技术
基于语音信号MFCC特征提取和GRNN神经网络的人员身份检测算法matlab仿真
**语音识别算法概览** MATLAB2022a中实现,结合MFCC与GRNN技术进行说话人身份检测。MFCC利用人耳感知特性提取语音频谱特征,GRNN作为非线性映射工具,擅长序列学习,确保高效识别。预加重、分帧、加窗、FFT、滤波器组、IDCT构成MFCC步骤,GRNN以其快速学习与鲁棒性处理不稳定数据。适用于多种领域。
|
18天前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
13天前
|
算法 数据安全/隐私保护
基于LS算法的OFDM+QPSK系统信道估计均衡matlab性能仿真
基于MATLAB 2022a的仿真展示了OFDM+QPSK系统中最小二乘(LS)算法的信道估计与均衡效果。OFDM利用多个低速率子载波提高频谱效率,通过循环前缀克服多径衰落。LS算法依据导频符号估计信道参数,进而设计均衡器以恢复数据符号。核心程序实现了OFDM信号处理流程,包括加性高斯白噪声的加入、保护间隔去除、快速傅立叶变换及信道估计与均衡等步骤,并最终计算误码率,验证了算法的有效性。
31 2
|
13天前
|
算法
基于GA-PSO遗传粒子群混合优化算法的CVRP问题求解matlab仿真
本文介绍了一种基于GA-PSO混合优化算法求解带容量限制的车辆路径问题(CVRP)的方法。在MATLAB2022a环境下运行,通过遗传算法的全局搜索与粒子群算法的局部优化能力互补,高效寻找最优解。程序采用自然数编码策略,通过选择、交叉、变异操作及粒子速度和位置更新,不断迭代直至满足终止条件,旨在最小化总行驶距离的同时满足客户需求和车辆载重限制。

热门文章

最新文章

下一篇
云函数