基于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移动到外地网络后,通过“代理发现协议”,与外地代理建立联系,并从外地代理获得一个转交地址,…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
41道Django高频题整理(附答案背诵版)
解释一下 Django 和 Tornado 的关系? Django和Tornado都是Python的web框架,但它们的设计哲学和应用场景有所不同。 Django是一个高级的Python Web框架,鼓励快速开发和干净、实用的设计。它遵循MVC设计,并强调代码复用。Django有…...
Python爬虫(四):PyQuery 框架
PyQuery 框架详解与对比 BeautifulSoup 第一部分:PyQuery 框架介绍 1. PyQuery 是什么? PyQuery 是一个 Python 的 HTML/XML 解析库,它采用了 jQuery 的语法风格,让开发者能够用类似前端 jQuery 的方式处理文档解析。它的核心特…...
Qt/C++学习系列之列表使用记录
Qt/C学习系列之列表使用记录 前言列表的初始化界面初始化设置名称获取简单设置 单元格存储总结 前言 列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem进行单元格的设置,最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来…...
