您现在的位置:首页 >> 机器学习 >> 内容

基于DNN网络的信道估计matlab仿真,仿真输出信道估计值的mse指标

时间:2023/3/23 17:01:27 点击:

  核心提示:A763,包括程序操作录像...

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

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

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

点击店铺

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

2.部分仿真图预览



3.算法概述

     在所用的结构中使用DNN的原因是,DNN是唯一可以在任何类型(有监督的和无监督的)任何地方(星座整形器,信道估计器和检测器)应用的机器学习算法。例如,即使支持向量机(它是有监督的二进制分类器),尽管其检测性能良好,但也不能应用于星座整形器或信道估计器等其他部分(因为这两个部分是无监督的。DNN是光学通信中使用最广泛的深度学习技术,并且是传统方法的适当替代方法。DNN的复杂度低,响应速度快。它可以建模复杂的多维非线性关系。由于这些优点,在FSO中应用DNN进行星座整形,信道估计和检测可以显着降低复杂性,成本,等待时间和处理,同时保持系统性能。

4.部分源码

for i = 1:length(SNRS);

    i

    L   = 3;

    SNR = SNRS(i);

    P=[1+1i,1-1i,2-1i,1+2i]';

 

    for i=1:20000

        hh     = randn(3,1)+1i*randn(3,1);

        yy     = comsystem(P,L,hh,SNR);

        

        h(:,i) = hh;

        y(:,i) = yy;

    end

    n         = size(y,2);

    indim     = size(y,1);

    outdim    = size(h,1);

    

    inputdim  = indim*2;

    outputdim = outdim*2;

    

    realy     = real(y);

    imagy     = imag(y);

    

    yy        = zeros(inputdim,n);

    

    yy(1:2:inputdim-1,:) = realy;

    yy(2:2:inputdim,:)   = imagy;

 

    realh     = real(h);

    imagh     = imag(h);

    

    hh        = zeros(outputdim,n);

    

    hh(1:2:outputdim-1,:) = realh;

    hh(2:2:outputdim,:)   = imagh;

    

    %Normalization

    din      = min(yy')';

    Tdin     = max(yy')';

    trainYY  = yy;

 

    for i = 1:n

        tmp          = yy(:,i);

        tmp          = (tmp-din)./(Tdin-din);

        trainYY(:,i) = tmp;

    end

    

    dout   = min(hh')';

    Tdout  = max(hh')';

    

    trainHH = hh;

    for i = 1:n

        tmp          = hh(:,i);

        tmp          = (tmp-dout)./(Tdout-dout);

        trainHH(:,i) = tmp;

    end

    

    

    pr      = zeros(inputdim,2);

    pr(:,1) = 0;

    pr(:,2) = 1;

    hiden   = 18;

    

    

    

    net = newff(pr,[hiden,outputdim],{'logsig','purelin'},'trainlm');

    net.trainParam.lr=0.01;

    net.trainParam.goal=1e-5;

    net.trainParam.epochs=40;

    net=train(net,trainYY,trainHH);

    

    if SNR==1

       save dat\DNN_SNR1.mat net din Tdin dout Tdout

    end

    if SNR==2

       save dat\DNN_SNR2.mat net din Tdin dout Tdout

    end

    if SNR==3

       save dat\DNN_SNR3.mat net din Tdin dout Tdout

    end

    if SNR==4

       save dat\DNN_SNR4.mat net din Tdin dout Tdout

    end

    if SNR==5

       save dat\DNN_SNR5.mat net din Tdin dout Tdout

    end

    if SNR==6

       save dat\DNN_SNR6.mat net din Tdin dout Tdout

    end

    if SNR==7

       save dat\DNN_SNR7.mat net din Tdin dout Tdout

    end

    if SNR==8

       save dat\DNN_SNR8.mat net din Tdin dout Tdout

    end

    if SNR==9

       save dat\DNN_SNR9.mat net din Tdin dout Tdout

    end

    if SNR==10

       save dat\DNN_SNR10.mat net din Tdin dout Tdout

    end

    

    if SNR==11

       save dat\DNN_SNR11.mat net din Tdin dout Tdout

    end

    if SNR==12

       save dat\DNN_SNR12.mat net din Tdin dout Tdout

    end

    if SNR==13

       save dat\DNN_SNR13.mat net din Tdin dout Tdout

    end

    if SNR==14

       save dat\DNN_SNR14.mat net din Tdin dout Tdout

    end

    if SNR==15

       save dat\DNN_SNR15.mat net din Tdin dout Tdout

    end

    if SNR==16

       save dat\DNN_SNR16.mat net din Tdin dout Tdout

    end

    if SNR==17

       save dat\DNN_SNR17.mat net din Tdin dout Tdout

    end

    if SNR==18

       save dat\DNN_SNR18.mat net din Tdin dout Tdout

    end

    if SNR==19

       save dat\DNN_SNR19.mat net din Tdin dout Tdout

    end

    if SNR==20

       save dat\DNN_SNR20.mat net din Tdin dout Tdout

    end

end

A763

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