m基于CNN卷积神经网络的IBDFE单载波频域均衡算法

news2024/11/25 10:35:01

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       单载波频域均衡(SC-FDE)是解决符号间干扰(ISI)问题的一项重要技术。相比于单载波时域均衡(SC-TDE)技术和正交频分复用(OFDM)技术,SC-FDE技术具有复杂度低、峰均功率比小的优点。但是,SC-FDE技术中,均衡算法的性能与复杂度存在制约关系,传统均衡算法无法在二者之间取得较好的折衷。       

       在单载波频域均衡系统中,线性均衡算法虽然简单易行,但是其抑制噪声干扰和符号间干扰的能力有限,因此需要引入非线性的反馈和迭代机制以进一步提升系统性能。迭代块判决反馈均衡(Iterative Block Decision Feed-back Equalization ,IBDFE)就是一种行之有效的非线性算法,但其缺点是计算复杂度高。传统的IBDFE算法结构如下:

       从结构可知,IBDFE由前馈滤波器和反馈滤波器构成,其中C和B表示前馈滤波器和反馈滤波器的系数。从现有的文献和资料上看,目前该结构在计算过程中,每一次迭代均需要进行系数的估计,从而增加了系统实现复杂度。针对问题,目前主要的研究成果例如LC-IBDFE等,其通过将判决信号中的误差与期望信号分离,从而降低了复杂度。但是类似LC-IBDFE的改进思路,其是基于每次迭代的误比特率相同且很小的假设的,实际中这种情况很难满足条件。另外就是在IBDFE中,出现信道严重衰落的时候,会导致过高的相关因子的估计,从而导致误差的扩散。针对这个问题,现有成果主要有联合信道估计和信道均衡的联合均衡算法。但是这样算法的复杂度又进一步增加。     

      我们这里做一个简单的改进:

        将CNN训练后的网络权值Wcnn和信道H相乘,将相乘后的结果用于BK的更新和补偿。由于Bk和Wk是相关的,所以这里直接将CNN用于控制WK即可。从而获得最后的结果。 

        在单载波频域均衡系统中,线性均衡算法虽然简单易行,但是其抑制噪声干扰和符号间干扰的能力有限,因此需要引入非线性的反馈和迭代机制以进一步提升系统性能。迭代块判决反馈均衡(Iterative Block Decision Feed-back Equalization ,IBDFE)就是一种行之有效的非线性算法,但其缺点是计算复杂度高。

       卷积神经网络默认输入是图像,可以让我们把特定的性质编码入网络结构,使是我们的前馈函数更加有效率,并减少了大量参数。卷积神经网络是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,其二是权值共享,其三是pooling层,有效的减少了网络的参数个数,缓解了模型的过拟合问题。

       卷积神经网络是一种多层的监督学习神经网络,隐含层的卷积层和池采样层是实现卷积神经网络特征提取功能的核心模块。该网络模型通过采用梯度下降法最小化损失函数对网络中的权重参数逐层反向调节,通过频繁的迭代训练提高网络的精度。卷积神经网络的低隐层是由卷积层和最大池采样层交替组成,高层是全连接层对应传统多层感知器的隐含层和逻辑回归分类器。第一个全连接层的输入是由卷积层和子采样层进行特征提取得到的特征图像。最后一层输出层是一个分类器,可以采用逻辑回归,Softmax回归甚至是支持向量机对输入图像进行分类。

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

..............................................    
%信道模型
Channel  = rayleighchan(Ts,Fd,tau,pdb);
%FFT变换
H_channel0 = fft(Channel.PathGains./sqrt(sum((abs(Channel.PathGains)).^2)),Blk_size+Chu_size+Chu_size);
 
%CHU序列
Chuseq = zeros(1,Chu_size);
for k = 0:Chu_size-1
    tmps(k+1) = pi*k^2./Chu_size;
end
I      = cos(tmps);
Q      = sin(tmps);
Chuseq = I+sqrt(-1)*Q;
%误码率
%turbo参数
Mss    = 295;
for n = 1:length(SNR)
    ErrMMSE = 0;
    for k = 1:NFrame
        [n,k]
        rng(k);
        %随机
        Tdin       = rand(1,Mss)>0.5;
        %利用turbo的交织器,构建TB-DEF,三路输出
        output     = [func_turbo_code(Tdin)];
        output     = reshape(output, 1, []);
        seridata1  = [output,0,0];
        
        %调制
        Data       = modulation(seridata1,Modsel);
        Tx         = [Chuseq,Data,Chuseq];
        Channel0   = Channel.PathGains./sqrt(sum((abs(Channel.PathGains)).^2));
        Rx1        = filter(Channel0,1,Tx);           
        Rx2        = awgn(Rx1,SNR(n),'measured');
        Rx3        = Rx2;%(Chu_size+1:Chu_size+Blk_size);   
        H_channel  = H_channel0;     
        %频域均衡
        Y          = fft(Rx3,Blk_size+Chu_size+Chu_size);       
        Wk         = conj(H_channel)./(H_channel.*conj(H_channel)+10^(-SNR(n)/10)); 
        Zk         = Y.*Wk;
        Qk         = zeros(size(Zk));
        Bk         = (Blk_size-Chu_size)*(abs(H_channel).^2+10^(-SNR(n)/10))./(sum(abs(H_channel).^2+10^(-SNR(n)/10)))-1;
        P          = 5;
        %调用CNN神经网络的输出权值 
        load CNNmodel.mat
        Iter       = 5;
        for iter = 1:Iter
            Wk = conj(H_channel)./(H_channel.*conj(H_channel)+10^(-SNR(n)/10)/P).*(1+Bk);  
            Zk         = Y.*Wk;
            Uk         = Zk-Qk;
            RxMMSE0    = ifft(Uk,Blk_size+Chu_size+Chu_size);    
            xn         = sign(real(RxMMSE0))+sqrt(-1)*sign(imag(RxMMSE0));
            %去UW
            RxMMSE1    = xn(Chu_size+1:Blk_size);
            %进行判决
            RxMMSE     = demodulation(RxMMSE1,Modsel);   
            Tdecode    = round(func_turbo_decode(2*RxMMSE(1:end-2)-1));
            tmps       = Tdecode;
            
            XK         = fft([tmps,Chuseq],length(RxMMSE1));
            %调用CNN深度学习神经网络,计算Bk值
            Bk0        =([H_channel.*conj(H_channel)]+10^(-SNR(n)/10)/P)/(mean(([H_channel.*conj(H_channel)]+10^(-SNR(n)/10)/P)))/(Blk_size)-1;
            Bk         = func_CNN(H_channel,Bk0,cnn);
            Qk         = [XK,ones(1,192)].*Bk;
        end
        CrrMMSE    = find((Tdin-Tdecode) == 0);
        ErrMMSE    = ErrMMSE+(Mss-length(CrrMMSE));
    end
    %统计误码率
    errors(n) = ErrMMSE/(Mss*NFrame*Modsel);
end
.........................................................
 01_169m

4.完整MATLAB

V

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

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

相关文章

Android 测试文字编码格式

测试文字编码格式,与设置字符串格式 调用: juniversalchardet-1.0.3.jar app里的Build.gradle implementation files(libs\\juniversalchardet-1.0.3.jar) java调用: import org.mozilla.universalchardet.UniversalDetector;/*** 测试编…

面试:分库分表经典15连问

目录 1. 我们为什么需要分库分表 1.1 为什么要分库 1.2 为什么要分表 2. 什么时候考虑分库分表? 3. 如何选择分表键 4.非分表键如何查询 5. 分表策略如何选择 5.1 range范围 5.2 hash取模 5.3 一致性Hash 6. 如何避免热点问题数据倾斜(热点数…

LaTex教程(二)——LaTeX排版

文章目录1. 中文宏包2. 字符2.1 空格和分段2.2 标点符号2.2.1 引号2.2.2 连字号和破折号2.2.3 省略号3. 文字强调4. 断行断页1. 中文宏包 ctex 宏包和文档类是对CJK 和xeCJK 等宏包的进一步封装。ctex 文档类包括 ctexart /ctexrep / ctexbook,是对LATEX 的三个标准…

第十七届D2大会(II)

一、无极:面向复杂B端项目的低代码平台设计与实践 页面片:自定义的最小低代码开发单元,包括:数据、布局、业务逻辑等低代码编辑器可配合配置分支管理、DevTool等能力,提供更好的工程体验 二、基于H5页面“高差指纹”技…

湿气是怎么来的?身体湿气重什么症状

相信大家在生活中都听说过湿气这个词,尤其是老一辈的人经常会在夏季说晚上湿气重之类的话。其实,从中医的角度来看,湿气更多的是指内脏器官功能失调引起的内生湿邪,主要与脾脏有关。 中医认为,脾胃具有运输水分和湿度的…

Python:python镜像源管理

文章目录常用镜像源配置镜像源(1)pycharm内部配置(2)手动添加镜像源,临时使用(3) 永久配置镜像源,设置默认anaconda小结常用镜像源 清华:https://pypi.tuna.tsinghua.edu.cn/simple…

JAVA中Volatile/Synchronized

线程安全问题的发生: java的线程内存模型中定义了每个线程都有一份自己的共享变量副本(本地内存),里面存放自己私有的数据,其他线程不能直接访问,而一些共享变量则存在主内存中,供所有线程访问…

DBCO-Sulfo-NHS二苯基环辛炔-磺基活性酯1400191-52-7水溶性试剂

DBCO-Sulfo-NHS Ester二苯基环辛炔-磺基活性酯1400191-52-7 名称:二苯基环辛炔-磺基-琥珀酰亚胺酯 英文名称:DBCO-Sulfo-NHS Ester 结构式: CAS:1400191-52-7 外观:固体/粉末 分子式:C25H21N2NaO8S 分子量&#x…

【图像压缩】JEPG图像压缩【含Matlab源码 1167期】

⛄一、DCT图像无损压缩简介 1 图像压缩 图像压缩按照压缩过程中是否有信息的损失以及解压后与原始图像是否有误差可以分为无损压缩和有损压缩两大类。无损压缩是指不损失图像质量的压缩,它是对文件的存储方式进行优化,采用某种算法表示重复的数据信息&a…

免费l2接口有什么特点?

作为增值行情,免费l2接口行情特点如下: 1、更丰富的信息 更多的盘口订单数据、逐笔成交数据、成交与订单关联数据及增值数据,揭示交易细节,全方位反映市场状态。 2、更丰富的委托盘口 提供买卖方10个价位的价格、股数和委托笔…

DCN神州数码——设备基本指令 (超详细)

神州数码——设备基本操作 Telnet telnet-server enable username DCN privilege 15 password DCN authentication securityip ip authorization line vty command <1-15> {local | radius | tacacs} SSH ssh-server enable username DCN privilege 15 password DCN …

2022沙丘大会 · 信创专场 GBASE告诉您金融行业数据库如何选型

12月10日&#xff0c;2022沙丘大会信创专场如期召开&#xff0c;本期专场由沙丘社区与中国信通院数据库应用创新实验室联合主办&#xff0c;GBASE南大通用技术总监冯文忠受邀出席并分享《国产数据库金融行业应用情况》主题演讲。 数据库作为金融信息系统的关键环节&#xff0…

产品更新-镭速Raysync v6.5.8.0版本发布

镭速版本在近期发布了v6.5.8.0版本&#xff0c;下面我们一起来看下做了哪些更新。 功能一、支持敏感词检测 互联网时代的发展&#xff0c;用户不断产生海量信息&#xff0c;从而也导致了垃圾信息增加&#xff0c;如政治敏感词、违禁词、垃圾广告、色情、血腥暴力等不良信息&am…

AI的进化方向,正在被改写

文|智能相对论 作者|沈浪 人工智能产业的创新焦点已经发生了转移&#xff0c;过去大多谈的是应用创新&#xff0c;如今一场面向底层的技术普惠创新正在持续推进&#xff0c;成为新华三等头部AI厂商相互角力的关键。 日前&#xff0c;新华三刚刚召开一场主题为“进化智能算赋…

【DELM回归预测】基于matlab海鸥算法改进深度学习极限学习机SOA-DELM数据回归预测【含Matlab源码 1977期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年&#xff0c;极限学习机&#xff08;extreme learning machine,ELM&#xff09;理论被南洋理工大学的黄广斌教授提出&#xff0c;ELM是一种单隐含层前馈神经网络&#xff08;single-hidden layer feedforward neural network,SLFN&am…

精华推荐 |【开发百宝箱之猿如意使用指南】「工欲成其事,必先利其器」一文教你如何通过“猿如意” 优化工作、生活和学习!

开发百宝箱之猿如意使用指南【欢迎您】使用“猿如意”百宝箱大家科普一下什么是猿如意&#xff1f;赶快趁热下载个【猿如意】吧【猿如意】使用体验打分和评估【猿如意】整体功能评分【猿如意】UI效果评分【猿如意】易用性效果【猿如意】各组件评分每个程序猿值得拥有的学习开发…

python清空字典的两种方法

python清空字典的两种方法比较 这里说的clear是指清空python中的字典内容&#xff0c;与删除该字典不一样。 例如&#xff1a; d{‘name’:1,‘age’:2} 想要清空该字典有两个方法 方法1&#xff1a; d.clear() 打印出d 的值为&#xff5b;&#xff5d; 方法2&#xff…

java 10--- static

static 修饰成员变量: 实例成员变量必须要new一个对象&#xff0c;静态成员变量可以不new对象 静态成员变量例子&#xff1a; static修饰成员变量内存图&#xff1a; static修饰成员方法&#xff1a; ​​​​​​​ 修饰成员方法内存图&#xff1a; 注意事项&#xff1a…

裁员后,那些被“优化”的程序员都去哪儿了?

程序员在35岁真的会被裁吗&#xff1f; 被裁之后去哪儿工作 &#xff0c;怎么办啊&#xff1f; 在很多社交平台&#xff0c;经常能看到不少小伙伴问出这样的问题&#xff0c;既迷茫&#xff0c;又慌张。有人说自己25岁就已经被裁了&#xff0c;也有人说做程序员&#xff0c;3…

mysql详情之MVCC由浅入深

概念 MVCC&#xff08;Multiversion Concurrency Control&#xff09;&#xff1a;多版本并发控制。是一种并发控制的方法&#xff0c;一般在数据库管理系统中&#xff0c;实现对数据库的并发访问。 MVCC的实现思路 修改数据时&#xff0c;都对应一个修改者所属的事务【前提条…