您现在的位置:首页 >> 通信 >> 内容

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

时间:2022/12/19 18:53:14 点击:

  核心提示:01_169m包括程序操作录像+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y5qXm5Zp

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

         在单载波频域均衡系统中,线性均衡算法虽然简单易行,但是其抑制噪声干扰和符号间干扰的能力有限,因此需要引入非线性的反馈和迭代机制以进一步提升系统性能。迭代块判决反馈均衡(Iterative Block Decision Feed-back Equalization ,IBDFE)就是一种行之有效的非线性算法,但其缺点是计算复杂度高。卷积神经网络默认输入是图像,可以让我们把特定的性质编码入网络结构,使是我们的前馈函数更加有效率,并减少了大量参数。卷积神经网络是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,其三个关键的操作,其一是局部感受野,其二是权值共享,其三是pooling层,有效的减少了网络的参数个数,缓解了模型的过拟合问题。

4.部分源码

..............................................    

%信道模型

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

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168