1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/aZeWk55q
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
自编码器是一种无监督学习的神经网络,其主要目的是学习输入数据的低维表示。它由编码器和解码器两部分组成。编码器将输入数据 x 映射到低维的潜在空间 z,解码器则将潜在空间的表示 z 重构为输出数据 x^。自编码器的目标是使重构误差最小化,即最小化 ∣∣x−x^∣∣2。
4.部分源码
.................................................................
%编码过程
AE_Tnet = func_AE_encode(trainedNet);
%解码过程
AE_Rnet = func_AE_decode(trainedNet);
%误码率输出
nums = Ms;
BLER = zeros(size(SNRs));
for ij = 1:length(SNRs)
Nerror = 0;
cnts = 0;
sigma = sqrt(1./(10^(SNRs(ij)/10)));
while (Nerror < Times(ij))
[ij,Nerror,cnts]
temps = randi([0 1],1,nums);
%LDPC
ldpc_code = mod(temps*G,2);
%转回十进制
temps2 = func_bin2dec(ldpc_code);
%编码
din_AE = func_AEin(temps2',AE_Tnet,M);
%信道
din_AE_channel = awgn(din_AE,SNRs(ij),'measured');
%解码
dout_AE = func_AEout(din_AE_channel,AE_Rnet,n);
%转换为二进制
dout_AE2 = func_dec2bin(dout_AE);
%LDPC
z_hat = func_Dec(2*dout_AE2-1,sigma,H,max_iter);
x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));
Nerror = Nerror + sum(temps' ~= x_hat);
cnts = cnts + 1;
end
BLER(ij) = Nerror / (cnts*nums);
end
figure
semilogy(SNRs,BLER,'b-o')
grid on
xlabel('SNR(dB)')
ylabel('ber')
save R2.mat SNRs BLER
0X_082m
---