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