基于CNN卷积神经网络的调制信号识别算法matlab仿真
目录
1.算法运行效果图预览
2.算法运行软件版本
3.部分核心程序
4.算法理论概述
1. 卷积神经网络(CNN)
2. 调制信号识别
3.实现过程
5.算法完整程序工程
1.算法运行效果图预览




2.算法运行软件版本
MATLAB2022A
3.部分核心程序
% 构建调制类型分类的卷积神经网络模型modClassNet
modClassNet = [imageInputLayer([1 spf 2], 'Normalization', 'none', 'Name', 'Input Layer')convolution2dLayer(filterSize, 16*netWidth, 'Padding', 'same', 'Name', 'CNN1')batchNormalizationLayer('Name', 'BN1')reluLayer('Name', 'ReLU1')maxPooling2dLayer(poolSize, 'Stride', [1 2], 'Name', 'MaxPool1')convolution2dLayer(filterSize, 24*netWidth, 'Padding', 'same', 'Name', 'CNN2')batchNormalizationLayer('Name', 'BN2')reluLayer('Name', 'ReLU2')maxPooling2dLayer(poolSize, 'Stride', [1 2], 'Name', 'MaxPool2')convolution2dLayer(filterSize, 32*netWidth, 'Padding', 'same', 'Name', 'CNN3')batchNormalizationLayer('Name', 'BN3')reluLayer('Name', 'ReLU3')maxPooling2dLayer(poolSize, 'Stride', [1 2], 'Name', 'MaxPool3')convolution2dLayer(filterSize, 48*netWidth, 'Padding', 'same', 'Name', 'CNN4')batchNormalizationLayer('Name', 'BN4')reluLayer('Name', 'ReLU4')maxPooling2dLayer(poolSize, 'Stride', [1 2], 'Name', 'MaxPool4')convolution2dLayer(filterSize, 64*netWidth, 'Padding', 'same', 'Name', 'CNN5')batchNormalizationLayer('Name', 'BN5')reluLayer('Name', 'ReLU5')maxPooling2dLayer(poolSize, 'Stride', [1 2], 'Name', 'MaxPool5')convolution2dLayer(filterSize, 96*netWidth, 'Padding', 'same', 'Name', 'CNN6')batchNormalizationLayer('Name', 'BN6')reluLayer('Name', 'ReLU6')convolution2dLayer(filterSize, 128*netWidth, 'Padding', 'same', 'Name', 'CNN7')batchNormalizationLayer('Name', 'BN7')reluLayer('Name', 'ReLU7')averagePooling2dLayer([1 ceil(spf/32)], 'Name', 'AP1')fullyConnectedLayer(numModTypes, 'Name', 'FC1')softmaxLayer('Name', 'SoftMax')classificationLayer('Name', 'Output') ]
% 分析网络结构并展示网络的层次结构
analyzeNetwork(modClassNet)% 最大训练轮数,网络将在此轮数结束后停止训练
maxEpochs = 15;
% 每次迭代的小批量样本数量
miniBatchSize = 256;
% 每隔多少次迭代进行一次验证,用于观察验证集上的性能
validationFrequency = 20;
% 设置训练选项,包括优化算法(adam)、学习率、训练轮数、小批量样本数量、是否每轮迭代都重新打乱数据、是否绘制训练进度图、是否显示训练过程信息、验证数据和验证频率、学习率衰减策略等options = trainingOptions('adam', ...'InitialLearnRate',1e-2, ...'MaxEpochs',maxEpochs, ...'MiniBatchSize',miniBatchSize, ...'Shuffle','every-epoch', ...'Plots','training-progress', ...'Verbose',false, ...'ValidationData',{rxValidation,rxValidationLabel}, ...'ValidationFrequency',validationFrequency, ...'LearnRateSchedule', 'piecewise', ...'LearnRateDropPeriod', 9, ...'LearnRateDropFactor', 0.1, ...'ExecutionEnvironment', 'multi-gpu');% 使用训练数据集rxTraining和标签rxTrainingLabel,利用设置的模型modClassNet和训练选项options训练得到调制类型分类的神经网络模型trainedNet0SNR_v7trainedNet0SNR_v7 = trainNetwork(rxTraining,rxTrainingLabel,modClassNet,options);
0030
4.算法理论概述
在无线通信系统中,调制信号的识别是一项重要的任务。通过识别接收到的信号的调制方式,可以对信号进行解调和解码,从而实现正确的数据传输和通信。卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,在图像和信号处理领域取得了显著的成功。
1. 卷积神经网络(CNN)
CNN是一种深度学习模型,主要用于图像处理和模式识别任务。其核心原理是使用卷积层、池化层和全连接层来提取特征和进行分类。以下是CNN中常用的数学原理:
卷积层: 卷积层通过滤波器(也称为卷积核)来提取图像或信号的特征。卷积操作通过将滤波器与输入图像或信号的局部区域进行元素相乘,并求和得到输出特征图。
池化层: 池化层用于减小特征图的尺寸,并降低计算复杂度。常见的池化操作有最大池化和平均池化。
全连接层: 全连接层将池化层输出的特征图映射到具体的分类结果,常用于分类任务。
2. 调制信号识别
调制信号识别任务是将接收到的信号进行分类,确定其调制方式。通常,调制信号可以表示为复数形式:
![]()
其中,$A$为信号的幅度,$f_c$为信号的载频频率,$\phi(t)$为信号的相位。
3.实现过程
1. 数据预处理
首先,需要准备用于训练和测试的调制信号数据集。数据预处理包括信号采样、归一化、分割成时域序列,并将其转换为CNN网络的输入格式。
2. 搭建CNN网络
构建卷积神经网络模型,可以根据任务的复杂性和需求选择合适的网络结构。一般来说,包含若干卷积层、池化层、全连接层和输出层。
3. 训练CNN模型
使用准备好的调制信号数据集,对CNN模型进行训练。训练过程中需要定义损失函数(通常使用交叉熵损失函数)和优化算法(如随机梯度下降),通过反向传播算法不断更新模型的参数,使其逐渐收敛到最优状态。
4. 测试和验证
训练完成后,使用测试集对模型进行验证和评估。计算准确率、精确度、召回率等指标来评估模型的性能。
5. 调制信号识别
最终,将训练好的CNN模型用于调制信号的识别。通过将接收到的信号输入CNN模型,得到分类结果,确定信号的调制方式。
5.算法完整程序工程
OOOOO
OOO
O
相关文章:
基于CNN卷积神经网络的调制信号识别算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 卷积神经网络(CNN) 2. 调制信号识别 3.实现过程 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022A 3.部分核心程序 % 构建调制类型…...
正则,JS:this,同步异步,原型链笔记整理
一 正则表达式 正则表达式(regular expression)是一种表达文本模式(即字符串结构)的方法,有点像字符串的模板,常常用来按照“给定模式”匹配文本 正则表达式可以用于以下常见操作: 匹配&…...
【NOIP】小鱼的数字游戏题解
author:&Carlton tag:递归,栈 topic:【NOIP】小鱼的数字游戏题解 language:C website:洛谷 date:2023年7月29日 目录 我的题解思路 优化 别人的优秀思路: 我的题解思路 题…...
算法的时间复杂度、空间复杂度如何比较?
目录 一、时间复杂度BigO 大O的渐进表示法: 例题一: 例题2: 例题3:冒泡排序的时间复杂度 例题4:二分查找的时间复杂度 书写对数的讲究: 例题5: 实例6: 利用时间复杂度解决编…...
We are the Lights 2023牛客暑期多校训练营4-L
登录—专业IT笔试面试备考平台_牛客网 题目大意:有n*m盏灯,q次操作,每次可以将一整行或一整列的等打开或关闭 1<n,m<1e6;1<q<1e6 思路:对于同一行或者同一列来说,只要最后一次操作时开或者关࿰…...
ant-design-vue中table组件使用customRender渲染v-html
ant-design-vue遇到table中列表数据需要高亮渲染 1、customRender可以使用,但是使用v-html发现不生效还报错 const columns [title: name,dataIndex: name,customRender: (val, row) > {return <span v-html{val}></span>} ]2、customeRender函数…...
若依框架实现后端防止用户重复点击
若依框架实现后端防止用户重复点击 基于自定义注解、切面、Redis实现 1. 添加自定义注解: 代码放置位置:com/ruoyi/common/annotation/RepeatClick.java time: 时间默认0; unit:单位默认 秒; key: 默认空字符串 package com.ruoyi.fra…...
PCA对手写数字数据集的降维
手写数字的数据集结构为(42000, 784),用KNN跑一次半小时,得到准确率在96.6%上下,用随机森林跑一次12秒,准确率在93.8%,虽然KNN效果好,但由于数据量太大,KNN计算太缓慢,所以我们不得不选用随机森林。我们使用了各种技术对手写数据集进行特征选择,最后使用嵌入 法Select…...
Python入门【变量的作用域(全局变量和局部变量)、参数的传递、浅拷贝和深拷贝、参数的几种类型 】(十一)
👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…...
下级平台级联安防视频汇聚融合EasyCVR平台,层级显示不正确是什么原因?
视频汇聚平台安防监控EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等,以及厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等,能对外分发RTSP、RTMP、FLV、HLS、WebRTC等…...
vue : 无法加载文件 C:\Users\jianfei\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。...
背景 在新电脑上配置vue环境 PS E:\CODE_PROJ\myvue\vue23\P61_使用脚手架\vue_test> npm install -g vue/cli npm WARN deprecated source-map-url0.4.1: See https://github.com/lydell/source-map-url#deprecated npm WARN deprecated urix0.1.0: Please see https://git…...
godot引擎c++源码深度解析系列二
记录每次研究源码的突破,今天已经将打字练习的功能完成了一个基本模型,先来看下运行效果。 godot源码增加打字练习的demo 这个里面需要研究以下c的控件页面的开发和熟悉,毕竟好久没有使用c了,先来看以下代码吧。 //第一排 显示文本…...
专才or 通才
前言 不知道大家有没有这样的感觉,现在的工作专业化程度越来越高,而且是细分方向越来越小。IT领域分到你是计算里面的数据库或者了流式计算引擎,或者是协议存储还是KV存储引擎。 专业化的优势 专业化的程度带来了一个好处就是你在这个领域…...
【小白必看】Python爬虫实战之批量下载女神图片并保存到本地
文章目录 前言运行结果部分图片1. 引入所需库2. 发送请求获取网页内容3. 解析网页内容并提取图片地址和名称4. 下载并保存图片完整代码关键代码讲解 结束语 前言 爬取网络上的图片是一种常见的需求,它可以帮助我们批量下载大量图片并进行后续处理。本文将介绍如何使…...
道本科技||全面建立国有企业合规管理体系
为全面深化国有企业法治建设,不断加强合规管理,防控合规风险,保障企业稳健发展,近日,市国资委印发《常州市市属国有企业合规管理办法(试行)》(以下简称《办法》)…...
CentOS 8上安装和配置Redis
在本篇博客中,我们将演示如何在CentOS 8上安装和配置Redis。我们将首先安装Redis,然后配置Redis以设置密码并允许公开访问。 步骤 1:安装Redis 首先,更新软件包列表: sudo yum update安装Redis: sudo yum …...
西北乱跑娃 -- CSS动态旋转果冻效果
<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>旋转果冻</title> <style> #myDIV {margin: 250px;width: 250px;height: 250px;background: orange;position: relative;font-size: 20px;animation: anima…...
解决安装office出现1402错误和注册表编辑器无法设置安全性错误
写在前面 可能是由于之前的office没有卸载干净,看了很多文章,也有的说是使用了Windows Installer Clean Up卸载office的缘故,最后导致的结果是出现了再次安装office时出现了1402错误,而在解决1402错误的过程中,修改所…...
Jmeter接口自动化生成测试报告html格式
jmeter自带执行结果查看的插件,但是需要在jmeter工具中才能查看,如果要向领导提交测试结果,不够方便直观。 笔者刚做了这方面的尝试,总结出来分享给大家。 这里需要用到ant来执行测试用例并生成HTML格式测试报告。 一、ant下载安…...
移动IP的原理
目的 使得移动主机在各网络之间漫游时,仍然能保持其原来的IP地址不变 工作步骤 代理发现与注册 主机A:主机A移动到外地网络后,通过“代理发现协议”,与外地代理建立联系,并从外地代理获得一个转交地址,…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...
C# winform教程(二)----checkbox
一、作用 提供一个用户选择或者不选的状态,这是一个可以多选的控件。 二、属性 其实功能大差不差,除了特殊的几个外,与button基本相同,所有说几个独有的 checkbox属性 名称内容含义appearance控件外观可以变成按钮形状checkali…...
深入解析 ReentrantLock:原理、公平锁与非公平锁的较量
ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
