基于BP神经网络的QPSK解调算法matlab性能仿真

news2024/11/25 6:49:02

目录

1.算法运行效果图预览

2.算法运行软件版本

3.部分核心程序

4.算法理论概述

5.算法完整程序工程


1.算法运行效果图预览

2.算法运行软件版本

matlab2022a

3.部分核心程序

........................................................................
for ij = 1:length(SNR)
    ij
    for j = 1:20
        % 数据划分比例
        divT = 0.05; % 训练数据占全部数据的20%
        divV = 0.2; % 验证数据占全部数据的10%
        % 分割训练集和验证集
        SrxT = Srx(1,1:floor(divT*length(Srx)));% 训练集信号
        StxT = Stx(1,1:floor(divT*length(Stx)));% 训练集期望结果
        SrxV = Srx(1  ,floor(divT*length(Srx))+1:floor((divT+divV)*length(Srx)));% 验证集信号
        StxV = Stx(1  ,floor(divT*length(Stx))+1:floor((divT+divV)*length(Stx)));% 验证集期望结果
        
        %为每个神经网络寻找最佳超参数组合
        [accuracy,yfit] = func_ANN_qpsk(Si, Sh, Nlabel, lambda, IQmap, SrxT, StxT, SrxV, StxV);
        err(ij,j)=1-accuracy/100;
    end
end


% 调用函数绘制星座图,展示数据的10%
func_constellation(Srx,Stx,0.5)  

figure;
semilogy(SNR,mean(err,2),'b-o');
grid on
xlabel('SNR');
ylabel('误码率');
legend('QPSK误码率');


figure
plot(yfit,'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
xlabel('训练迭代次数');
ylabel('神经网络训练曲线');
134

4.算法理论概述

        QPSK(Quadrature Phase Shift Keying)是一种常见的数字调制方式,通过载波的四种相位状态来传输两比特信息。在接收端,准确解调出原始数据成为关键任务。传统的方法如相干解调虽有效但对同步要求较高,而基于BP(Back Propagation)神经网络的解调算法提供了一种自适应、非线性处理手段,尤其适用于复杂信道条件下的解调。

       QPSK信号在经过信道传输后,会受到噪声干扰、多径效应等影响,导致星座点偏移或失真,增加了传统解调方法的误码率。BP神经网络以其强大的非线性拟合能力和自适应学习能力,能够学习并补偿这些失真,从而实现更稳健的解调。

       假设接收到的QPSK信号为s(t),经过匹配滤波器后得到基带信号r(t),通过采样得到离散信号{r[n]},作为BP神经网络的输入。网络的输出层设计为四个神经元,分别对应QPSK的四种相位状态,输出概率最大的神经元所对应的相位即为解调结果。

       设输入层节点数为NI​,隐藏层节点数为NH​,输出层节点数为NO​=4(对应QPSK的四个相位)。网络权重矩阵分别为W(1)(输入到隐藏层)和W(2)(隐藏层到输出层),偏置向量为b(1)和b(2)。

       对于输入向量x,第j个隐藏层神经元的激活值aj(1)​计算如下:

       利用已知的QPSK信号样本集对网络进行训练,不断迭代上述过程直至收敛。训练完成后,使用测试集验证网络性能,通过比较解调出的比特序列与原序列的差异来评估误码率(BER)。

5.算法完整程序工程

OOOOO

OOO

O

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1647172.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

神经网络中的归一化

我们今天介绍一下神经网络中的归一化方法~ 之前学到的机器学习中的归一化是将数据缩放到特定范围内,以消除不同特征之间的量纲和取值范围差异。通过将原始数据缩放到一个特定的范围内,比如[0,1]或者[-1,1],来消除不同特征之间的量纲和取值范围…

弹性云服务器给用户带来了哪些便利

什么是弹性云服务器? 弹性云服务器(ECS,Elastic Cloud Server)简单地说,是指运行在云计算环境中的虚拟服务器。弹性云服务器可以说是虚拟专用服务器(VPS),但VPS却不能说是云服务器。这是因为两者有着本质的…

软件游戏丢失XINPUT1_4.dll文件的多种解决方法分享

当玩家在尝试启动某款游戏时,遇到了系统提示“游戏找不到XINPUT1_4.dll”,这个错误通常发生在玩家尝试启动游戏时,游戏无法找到所需的XINPUT1_4.dll文件,呆滞无法正常启动运行。但是幸运的是,有一些简单的修复方法可以…

【typescript测试 - Jest 配置与使用】

安装 npm install --save-dev types/jestnpm install --save-dev ts-jest配置 tsconfig.json {"compilerOptions": {"types": ["jest"]} }jest.config.js module.exports {preset: ts-jest,testEnvironment: node, };使用 // add.js funct…

数据分析——业务指标量化

业务指标量化 前言一、统计指标二、统计指标特点完整的统计指标统计指标的理解和使用方法 三、统计指标类型总量指标时期指标时点指标总量指标的作用 相对指标计划完成相对数指标结构相对数指标比例相对数指标比较相对数指标动态相对数指标 平均指标 四、数量指标和质量指标五、…

【1小时掌握速通深度学习面试8】生成模型-中

目录 28.DBN与DBM 有什么区别? 29.VAE如何控制生成图像的类别? 30.如何修改VAE的损失函数,使得隐藏层的编码是相互解耦的? 31.自回归方法如何应用在生成模型上? 32.原始 VAE存在哪些问题? 有哪些改进方式? 33.如何将VAE与GAN 进行结合? 34.…

Rust Postgres实例

Rust Postgres介绍 Rust Postgres是一个纯Rust实现的PostgreSQL客户端库,无需依赖任何外部二进制文件2。这意味着它可以轻松集成到你的Rust项目中,提供对PostgreSQL的支持。 特点 高性能:Rust Postgres提供了高性能的数据库交互功能&#…

C++使用单链表实现一元多项式的加,乘操作

相邀再次喝酒 待 葡萄成熟透 但是命运入面 每个邂逅 一起走到了 某个路口 是敌与是友 各自也没有自由 位置变了 各有队友 首先,按照惯例,十分欢迎大家边听歌边观看本博客!! 最佳损友 - 陈奕迅 - 单曲 - 网易云音乐 (163.com) 一…

ABAP 第二代增强-采购申请子屏幕增强

文章目录 第二代增强-采购申请子屏幕增强需求实现过程创建项目运行效果客户屏幕的PBO全局变量获取数据更新数据运行效果查询底表修改数据 第二代增强-采购申请子屏幕增强 需求 实现过程 创建项目 运行效果 客户屏幕的PBO 全局变量 *&------------------------------------…

python_5

# 制作一个注册登录模块 # 注册:将用户填入的账户和密码保存到一个文件(users.bin) # 登陆:将用户填入账户密码和users.bin中保存的账户密码进行比对,如果账户和密码完全相同 那么登录成功,否则登录失败 import hashlib import json import o…

Petalinux的使用——定制Linux系统

文章目录 配置petalinux运行环境petalinux设计流程 配置petalinux运行环境 Petalinux的安装在文章Ubuntu镜像源的更改及其Petalinux的安装中已经介绍,下面介绍petalinux运行环境的配置过程。 进入到petalinux的安装路径下,使用下面的命令对petalinux的运…

第十三章 计算机网络

这里写目录标题 1.网络设备2.协议簇2.1电子邮件(传输层)2.2地址解析(网际层)2.3DHCP(动态主动配置协议)2.4URL(统一资源定位器)2.5IP地址和子网掩码 1.网络设备 物理层:中继器,集线器(多路中继器) 数据链路层:网桥,交换机(多端口…

【微磁学3D绘图工具探索】Excalibur

文章目录 概要调查报告技术名词解释主要特点 技术和算法实现他能够画出怎样酷炫的图 小结 概要 微磁学中的磁学结构同时包括二维和三维,想要绘制得好看,结果清晰,那么就需要一些自己写的绘图代码之外的额外渲染功能,尤其是对于三…

JS hook cookie

JS hook cookie cookie 的值是V,v是动态变化的 可以看到D中生成了cookie的值n 尝试使用RPC定位到cookie。 替换内容,下断点。 将写好的RPC代码直接插入 加入代码,file.virjar.com/sekiro_web_client.js?_123 这个地址是在前端创建客户端…

python使用mongo操作

目前有个需求,就是把所有sql转为mongo管道查询 知识点 在 MongoDB 中,allowDiskUse 选项应该作为聚合命令的一个选项,而不是聚合管道的一个阶段。allowDiskUse 选项用于允许聚合操作使用磁盘空间来临时存储数据(当聚合操作的数据…

Amazon Bedrock的进化:更多选择与新特性,助力生成式AI应用更快落地

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

YoloV9改进策略:Block改进|改进HCF-Net的PPA模块|附结构图|(独家改进,全网首发)

摘要 HCF-Net是一种用于红外小物体检测的深度学习网络。它主要包括三个模块:并行化斑块感知注意力(PPA)模块、维度感知选择性整合(DASI)模块和多稀释通道细化器(MDCR)模块。 PPA模块采用多分支特征提取策略,用于捕捉不同尺度和层次的特征信息。DASI模块可实现自适应信…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包,发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强,不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面,这样才能抓包https请求。 这里使用…

323_C++_QT_QProcess执行cmd解压、压缩、删除tar.gz等等其他压缩包文件到指定目录,不需要外部库,QT自带API的就行

// decompressPath : 解压到此目录 // fileName : 解压的tar.gz文件名executeCommand(decompressPath , QString::fromStdString(fileName));// 开始解压 void executeCommand

k8s ReplicaSet

ReplicaSet 是替代 ReplicationController 的,ReplicaSet 的行为与 ReplicationController 完全相同, 但pod 选择器的表达能力更强。 ReplicaSet 和 ReplicationController 的区别: ReplicationController 的标签选择器只允许包含某个标签的…