首页 > 编程语言 >m基于CNN卷积神经网络的IBDFE单载波频域均衡算法

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

时间:2023-03-02 15:55:33浏览次数:43  
标签:IBDFE 10 卷积 神经网络 Chu CNN channel size

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

 

  

 

标签:IBDFE,10,卷积,神经网络,Chu,CNN,channel,size
From: https://www.cnblogs.com/51matlab/p/17172071.html

相关文章

  • 卷积
    1、卷积做了一件什么事?一张图像不同区域的特征是不一样的,比如一张猫图,他的边界和他的眼睛,嘴巴所提取的特征肯定不相同。2、首先会对原始图像数据进行分割,分割成一小块一......
  • 吴恩达深度卷积网络——经典卷积
    1.LeNet-5特点:LeNet-5针对灰度图像而训练,因此输入图片的通道数为1。该模型总共包含了约6万个参数,远少于标准神经网络所需。典型的LeNet-5结构包含卷积层(CONVl......
  • 基于PCNN脉冲耦合神经网络的图像分割
    1.算法描述       脉冲耦合神经网络(PCNN-PulseCoupledNeuralNetwork)与传统神经网络相比,有着根本的不同。PCNN有生物学的背景,它是依据猫、猴等动物的大脑皮层上......
  • 吴恩达卷积神经网络——浅层卷积神经网络
    一、计算机视觉计算机视觉(ComputerVision)的高速发展标志着新型应用产生的可能,例如自动驾驶、人脸识别、创造新的艺术风格。一般的计算机视觉问题包括以下几类:图片......
  • Rethinking CNN Models for Audio Classification
    WhatenablestheImageNetpretrainedmodelstolearnusefulaudiorepresentations,wesystematicallystudyhowmuchofpretrainedweightsisusefulforlearnin......
  • 深度学习(二):CNN & RNN
    深度学习(二):CNN&RNN卷积神经网络从全连接层到卷积(引入卷积的必要性)计算机视觉的神经网络架构需要满足两个特性:平移不变性:神经网络的前面几层应该对相同的图像区域具......
  • 多叉分治半在线卷积
    唔,把以前一直口胡着的多叉分治半在线卷积实现了一下啊!这个算法的思想是,我们分治计算贡献时,设目前区间长度为\(n\),分成\(B\)个部分,并且用cdq的方式计算贡献,其中\(B\)......
  • 【人脸检测】(MTCNN) Joint Face Detection and Alignment using Multi-task Cascaded
    原始题目JointFaceDetectionandAlignmentusingMulti-taskCascadedConvolutionalNetworks中文名称基于多任务级联卷积网络的联合人脸检测与对齐......
  • 多叉分治半在线卷积
    内容咕了。放一下不等关系的代码。封装版:constulltMod=998244353,g=3;typedefConstMod::mod_ullt<Mod>modint;typedefstd::vector<modint>modvec;typedefNTT_PO......
  • Solution Luogu6097 子集卷积
    其实是暴力。因为这是模板题,所以模板的前置知识也要讲。前置知识:FWT计算或卷积。这里只需要掌握快速计算或卷积的方法,所以内容较少。如果向了解更多(比如异或卷积)的话......