基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
目录
1.算法运行效果图预览
2.算法运行软件版本
3.部分核心程序
4.算法理论概述
5.算法完整程序工程
1.算法运行效果图预览


2.算法运行软件版本
matlab2022a
3.部分核心程序
.............................................................................
Transmitted_signal = OFDM_Transmitter(data_in_IFFT, NFFT, NCP);%信道Ray_h_ofdm = (1 / sqrt(2)) * randn(len_symbol, 1) + (1 / sqrt(2)) * 1j * randn(len_symbol, 1); % Rayleigh channel coffRayleigh_h_channel = repmat(Ray_h_ofdm, Frame_size, 1);Rayleigh_Fading_Signal = awgn(Rayleigh_h_channel .* Transmitted_signal,SNR,'measured');signal_ideal = Rayleigh_Fading_Signal ./ Rayleigh_h_channel;Multitap_h = [(randn + 1j * randn);...(randn + 1j * randn) / 24] ;%卷积通过信道Multipath_Signal = conv(Transmitted_signal, Multitap_h);Multipath_Signal = awgn(Multipath_Signal(1 : length(Transmitted_signal)),SNR,'measured');% OFDM 接收[Rsignals0, Rsignalsh0] = OFDM_Receiver(Multipath_Signal, NFFT, NCP, len_symbol, signal_ideal);% 进行深度学习部分,使用已训练好的神经网络进行解调[DNN_feature_signal, ~, ~] = Extract_Feature_OFDM(Rsignals0, dataSym(1:2), M, QPSK_signal(1:8));Received_data_DNN = predict(DNN_Trained, DNN_feature_signal);Received_data_DNN = transpose(Received_data_DNN);DNN_Received_data = Received_data_DNN(1:2:end, :) + 1j * Received_data_DNN(2:2:end, :);DNN_dataSym_Rx = QPSK_Demodulator(DNN_Received_data);DNN_dataSym_Received = de2bi(DNN_dataSym_Rx, 2);DNN_Data_Received = reshape(DNN_dataSym_Received, [], 1);DNN_sym_err(ij, 1) = sum(sum(round(dataSym(1:8)) ~= round(DNN_dataSym_Rx)));DNN_bit_err(ij, 1) = sum(sum(round(reshape(de2bi(dataSym(1:8), 2),[],1)) ~= round(DNN_Data_Received))); endBers(idx, 1) = sum(DNN_bit_err, 1) / N_bits_DNN; % 计算平均比特误码率Sers(idx, 1) = sum(DNN_sym_err, 1) / N_QPSK_DNN; % 计算平均符号误码率
0029
4.算法理论概述
正交频分复用(OFDM)是一种多载波调制技术,已经广泛应用于数字通信领域。OFDM信号检测是接收端的关键问题之一,目的是将接收到的OFDM信号恢复为原始数据。由于OFDM信号具有高带宽效率、抗多径衰落等特点,可以在高速移动环境下实现高速数据传输。但是,OFDM信号的检测存在一些困难,例如频率偏移、信道估计误差、多路径干扰等。为了解决这些问题,近年来,深度学习技术被广泛应用于OFDM信号检测中。
1.OFDM信号模型
OFDM信号是一种基于频域分解的多载波调制技术。OFDM信号可以表示为:
$$x(t)=\sum_{n=0}^{N-1}\sum_{k=0}^{K-1}s_{n,k}g(t-nT)e^{j2\pi k\Delta f(t-nT)}$$
其中,$s_{n,k}$是数据符号,$g(t)$是正交矩形脉冲,$T$是符号间隔,$K$是子载波数,$\Delta f$是子载波间隔。OFDM信号可以通过将数据符号映射到各个子载波上来传输数据,每个子载波都有自己的调制方式和调制参数。
2.DNN深度学习网络
DNN深度学习网络是一种基于多层神经网络的机器学习算法。DNN深度学习网络可以通过多个隐藏层来学习数据的高级特征,从而实现对数据的分类、回归等任务。DNN深度学习网络的数学模型可以表示为:
$$y=f(W^{(L)}f(W^{(L-1)}...f(W^{(1)}x+b^{(1)})...)+b^{(L)})$$
其中,$x$是输入数据,$y$是输出数据,$W^{(i)}$和$b^{(i)}$是第$i$层的权重和偏置,$f$是激活函数。
3.基于DNN的OFDM信号检测模型
基于DNN的OFDM信号检测模型可以表示为:
$$\hat{s}{n,k}=\arg\max{s_{n,k}}P(s_{n,k}|r_{n,k},\theta)$$
其中,$\hat{s}{n,k}$是预测的数据符号,$r{n,k}$是接收到的OFDM信号,$\theta$是模型参数。该模型可以通过DNN深度学习网络来学习OFDM信号的映射关系,从而实现OFDM信号的检测。
在实际应用中,需要实现实时OFDM信号检测。这可以通过将训练好的模型部署到实际系统中来实现。在实时检测过程中,需要对接收到的OFDM信号进行预处理,并将其输入到训练好的模型中进行检测。实时检测的实现需要考虑到时间延迟、资源限制等因素。
基于DNN深度学习网络的OFDM信号检测已广泛应用于数字通信领域。它可以用于解决OFDM信号检测中的一些难题,例如频率偏移、信道估计误差、多路径干扰等。此外,它还可以用于无线电频谱感知、无线电干扰检测等领域。
5.算法完整程序工程
OOOOO
OOO
O
相关文章:
基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................. Transmitt…...
学生管理系统-05封装选项卡
一、选项卡的添加 1、在router/index.js修改之前的动态添加二级路由的代码 router.addRoute("homeName",{ path:routeObj.path, component:()=>import(`@/views${routeObj.permission}.vue`), meta:{ name:routeObj.title …...
关于一些C++、Qt、Python方面的术语
杂鱼之前纯粹用python没细致理解过的术语整理一下,常看常新( 定义 (Definition): 定义是指给一个实体分配内存空间,以便在程序中使用。在C和Python中,这个实体可以是变量、函数或类。在C中,定义通常是在声…...
k8s中强制删除pv
K8s 集群内有一个已经不再使用的 PV,虽然已经删除了与其关联的 Pod 及 PVC,并对其执行了删除命令,但仍无法正常删除,一直处于 Terminating 状态: 解决办法: 1. 获取pv信息 kubectl get pv 2. 解除pv锁定 …...
60寸透明屏的透明度怎么样?
60寸透明屏是一种新型的显示屏技术,它具有透明度高、色彩鲜艳、清晰度高等特点,可以广泛应用于商业展示、户外广告、智能家居等领域。 首先,60寸透明屏的透明度高。 透明屏采用了特殊的材料和技术,使得屏幕在显示内容的同时&…...
Python:使用openpyxl读取Excel文件转为json数据
文档 https://openpyxl.readthedocs.io/en/stable/https://pypi.org/project/openpyxl/ 安装 pip install openpyxl环境 $ python --version Python 3.7.0读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 # -*- coding: utf-8 -…...
在Microsoft Excel中如何快速合并表格
在 Excel 中分析数据时,在一个工作表中收集所有必要信息的频率是多少?几乎从来没有!当不同的数据分散在许多工作表和工作簿中时,这是一种非常常见的情况。幸运的是,有几种不同的方法可以将多个表中的数据组合成一个表&…...
【RS】基于规则的面向对象分类
ENVI使用最多的工具就是分类,这也是很多卫星影像的用途。在ENVI中有很多分类工具,如最基础的监督分类(最大似然法、最小距离、支持向量机、随机森林)、非监督分类(K-means、IsoData),还有面向对…...
SWF格式视频怎么转换成AVI格式?简单的转换方法分享
当你想要在不同的设备上播放视频时,将SWF格式视频转换成AVI格式是非常有用的。因为SWF格式通常只能在特定的软件或网页上播放,而AVI格式则可以在更广泛的设备上播放,包括智能手机,平板电脑和电视机等。那么我们怎么将SWF转换成AVI…...
Hive数据仓库
数据仓库概念与起源发展由来 数仓概念 数据仓库(英语:Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境,分析结果为企业提供决策支持…...
公网访问的Linux CentOS本地Web站点搭建指南
文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道,指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 前言 在web项目中,部署的web站点需要被外部访问,则…...
ChatGPT:人机交互新境界,AI智能引领未来
一、ChatGPT:智能交流的新标杆 ChatGPT是基于GPT技术的最新版本,拥有深度学习模型的基因。它通过在大量数据上进行预训练,可以理解和生成自然语言,从而实现了与人类更加自然流畅的对话和交流。 二、ChatGPT的技术背景和工作原理 …...
微信小程序值相同的数据,一个数据setDate修改后,另一个值相同的数据也会修改
在js中一个基础类型可以直接赋值,引用类型直接赋值会指向同一个值(原理是浅拷贝和深拷贝) 解决问题代码:JSON.parse(JSON.stringify(json)) ↓ let json {0: [false, false],1: [true, false] } this.setData({timeList: JSON.…...
Spring5学习笔记 — IOC
✅作者简介:大家好,我是Cisyam,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Cisyam-Shark的博客 💞当前专栏: Spring专栏 ✨特色专栏&a…...
DevOps自动化平台开发之 Shell脚本执行的封装
基础知识 基于如下技术栈开发DevOps平台 Spring Boot Shell Ansible Git Gitlab Docker K8S Vue 1、spring boot starter的封装使用 2、Shell脚本的编写 3、Ansible 脚本的编写 4、Docker 的使用与封装设计 本篇介绍如何使用Java封装Linux命令和Shell脚本的使用 将其设计成…...
STM32CubeIDE(I2C)
目录 一、IIC轮询模式 1.1 配置 1.2 编写AHT20驱动 1.2.1 aht20.h 1.2.2 aht20.c 二、I2C中断 2.1 打开中断 2.2 分离读取流程 2.3 在主函数中重新编写读取流程 2.4 在i2c.c中重新定义stm32f1xx_hal_i2c.h中的两个函数 三、I2CDMA 3.1 配置DMA通道 3.2 代码的修改 一…...
http 请求报文响应报文的格式以及Token cookie session 区别
面试必备 http 请求报文响应报文的格式Token cookie session 区别 http 请求报文响应报文的格式 HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: <方法> <路径> <协议版本> <请求头部字段1>: <值1> <请求头…...
智能汽车的主动悬架工作原理详述
摘要: 本文将详细介绍主动悬架功能原理设计。 主动悬架是车辆上的一种汽车悬架。它使用车载系统来控制车轮相对于底盘或车身的垂直运动,而不是由大弹簧提供的被动悬架,后者的运动完全由路面决定。主动悬架分为两类:真正的主动悬架…...
vue2和vue3的一些技术点复习
二、vue2 1、vue2对已有组件二次封装,例如fes2 input 组件(文档链接) 子组件 <template><div class"keyboard-page"><wb-input:id"keyBoardId":placeholder"placeholder" :type"type&q…...
安装nvm 切换node版本
1. 安装 nvm curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash 验证nvm安装完成 command -v nvm 如果安装完成,就会显示如下 nvm 2. 查看 nvm 可以安装的 node 版本 查看可以安装的版本 nvm ls-remote 查看所有可以安装的…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...
