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

本文主要是介绍基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

MATLAB2022a

3.部分核心程序

................................................................
%调制识别
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;%SNRSNR    = SNRS(jj);%2FSKy_2FSK = func_2FSK(N);%4FSKy_4FSK = func_4FSK(N);%BPSKy_2PSK = func_2PSK(N);%QPSKy_4PSK = func_4PSK(N);%设置单独的一种调制信号tmps   = [2,2,2,2];%4PSKif tmps(1) == 1datas = y_2FSK;endif tmps(1) == 2datas = y_4FSK;endif tmps(1) == 3datas = y_2PSK;endif tmps(1) == 4datas = y_4PSK;enddatas  = 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 == 1flag = 1;endif T == 2flag = 2;endelse%为PSK模式%根据识别参数进行调制类型的辨识char = real(func_para_check(data,length(data)));T    = round(sim(net_psk,char'));if T == 1flag = 3;endif T == 2flag = 4;endendif flag == tmps(1)zql = zql + 1;endend%识别正确率Bers(jj) = zql/MTKL;zql      = 0;
endR = 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
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

这篇关于基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/355261

相关文章

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

无线路由器哪个品牌好用信号强? 口碑最好的三个路由器大比拼

《无线路由器哪个品牌好用信号强?口碑最好的三个路由器大比拼》不同品牌在信号覆盖、稳定性和易用性等方面各有特色,如何在众多选择中找到最适合自己的那款无线路由器呢?今天推荐三款路由器让你的网速起飞... 今天我们来聊聊那些让网速飞起来的路由器。在这个信息爆炸的时代,一个好路由器简直就是家庭网编程络的心脏。无论你

电脑显示hdmi无信号怎么办? 电脑显示器无信号的终极解决指南

《电脑显示hdmi无信号怎么办?电脑显示器无信号的终极解决指南》HDMI无信号的问题却让人头疼不已,遇到这种情况该怎么办?针对这种情况,我们可以采取一系列步骤来逐一排查并解决问题,以下是详细的方法... 无论你是试图为笔记本电脑设置多个显示器还是使用外部显示器,都可能会弹出“无HDMI信号”错误。此消息可能

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第