基于AutoEncode自编码器和LDPC信道编译码的无线通信系统matlab误码率仿真,对比turbo

目录

1.算法仿真效果

2.算法涉及理论知识概要

1.自编码器(AutoEncoder)

2.自编码器训练

3.自编码器+LDPC编译码整体算法流程

3.MATLAB核心程序

4.完整算法代码文件获得


1.算法仿真效果

matlab2022a仿真结果如下(完整代码运行后无水印)

仿真操作步骤可参考程序配套的操作视频。

2.算法涉及理论知识概要

1.自编码器(AutoEncoder)

       自编码器是一种无监督学习的神经网络,其主要目的是学习输入数据的低维表示。它由编码器和解码器两部分组成。编码器将输入数据 x 映射到低维的潜在空间 z,解码器则将潜在空间的表示 z 重构为输出数据 x^。自编码器的目标是使重构误差最小化,即最小化 ∣∣x−x^∣∣2。

2.自编码器训练

初始化自编码器参数:随机初始化自编码器编码器和解码器的参数,如权重和偏置。

前向传播:将输入信息位向量 x 输入到自编码器编码器中,得到潜在表示 z;再将 z 输入到自编码器译码器中,得到重构输出 x^。

计算重构误差:计算重构误差 L=∣∣x−x^∣∣2。

反向传播:根据重构误差,使用反向传播算法计算梯度,并更新自编码器的参数,以最小化重构误差。

重复步骤 2 - 4:直到重构误差收敛或达到最大训练次数。

3.自编码器+LDPC编译码整体算法流程

初始化 LDPC 译码器参数:对于 LDPC 译码器,初始化迭代次数等参数。

前向传播:将信息位向量 x 输入到自编码器编码器中,得到潜在表示 z;将 z 输入到 LDPC 编码器中,得到码字 c;将 c 通过信道传输,得到受干扰码字 y;将 y 输入到 LDPC 译码器中,得到潜在表示的估计值 z^;将 z^ 输入到自编码器译码器中,得到原始信息位的估计值 x^。

计算系统误差:计算系统误差,如误比特率(BER)或误块率(BLER)。

反向传播:根据系统误差,同时更新自编码器和 LDPC 译码器的参数,以最小化系统误差。

重复步骤 2 - 4:直到系统误差收敛或达到最大训练次数。

3.MATLAB核心程序

.................................................................
%编码过程
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

4.完整算法代码文件获得

V

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值