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

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

1.算法描述

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

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

image.png

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

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

image.png

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

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

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

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

2.仿真效果预览
matlab2022a仿真结果如下:

image.png
image.png

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
相关文章
|
18天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
80 4
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
19天前
|
机器学习/深度学习 数据采集 算法
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目基于MATLAB2022a实现时间序列预测,采用CNN-GRU-SAM网络结构。卷积层提取局部特征,GRU层处理长期依赖,自注意力机制捕捉全局特征。完整代码含中文注释和操作视频,运行效果无水印展示。算法通过数据归一化、种群初始化、适应度计算、个体更新等步骤优化网络参数,最终输出预测结果。适用于金融市场、气象预报等领域。
基于GA遗传优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
|
15天前
|
机器学习/深度学习 算法 计算机视觉
基于CNN卷积神经网络的金融数据预测matlab仿真,对比BP,RBF,LSTM
本项目基于MATLAB2022A,利用CNN卷积神经网络对金融数据进行预测,并与BP、RBF和LSTM网络对比。核心程序通过处理历史价格数据,训练并测试各模型,展示预测结果及误差分析。CNN通过卷积层捕捉局部特征,BP网络学习非线性映射,RBF网络进行局部逼近,LSTM解决长序列预测中的梯度问题。实验结果表明各模型在金融数据预测中的表现差异。
|
18天前
|
存储 监控 算法
局域网网络管控里 Node.js 红黑树算法的绝妙运用
在数字化办公中,局域网网络管控至关重要。红黑树作为一种自平衡二叉搜索树,凭借其高效的数据管理和平衡机制,在局域网设备状态管理中大放异彩。通过Node.js实现红黑树算法,可快速插入、查找和更新设备信息(如IP地址、带宽等),确保网络管理员实时监控和优化网络资源,提升局域网的稳定性和安全性。未来,随着技术融合,红黑树将在网络管控中持续进化,助力构建高效、安全的局域网络生态。
41 9
|
24天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
21天前
|
传感器 算法
基于GA遗传优化的WSN网络最优节点部署算法matlab仿真
本项目基于遗传算法(GA)优化无线传感器网络(WSN)的节点部署,旨在通过最少的节点数量实现最大覆盖。使用MATLAB2022A进行仿真,展示了不同初始节点数量(15、25、40)下的优化结果。核心程序实现了最佳解获取、节点部署绘制及适应度变化曲线展示。遗传算法通过初始化、选择、交叉和变异步骤,逐步优化节点位置配置,最终达到最优覆盖率。
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
409 7
|
2月前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
102 1

热门文章

最新文章