基于深度学习的NOMA系统中信号检测研究(Matlab代码实现)

     💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

摘要

引言

系统模型

NOMA系统概述

信道模型

信号传输与接收

深度学习方法

数据生成

神经网络设计

训练过程

实验设置与结果

实验场景

性能测试

实验结果

结论

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文章下载


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能解答你胸中升起的一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

基于深度学习的NOMA系统中信号检测研究(详细文章见第4部分)

本文用于在双用户非正交多址(NOMA)系统中实现信号检测的深度学习方法。分别是生成训练数据、训练神经网络和生成测试结果。神经网络针对具有相位衰落的静态标量信道进行训练,并用于在NOMA系统中同时检测2个用户在一个子载波上传输的符号。考虑并测试了两种情况:一种是导频符号数量较少,另一种是循环前缀长度较短。在这两种情况下,深度学习方法被证明比传统的信道估计方法更稳健。

摘要——本文对以下内容进行了初步研究非正交多用户检测的深度学习(DL)多址接入(NOMA)无线系统。在NOMA系统中,连续干扰消除(SIC)过程通常为在接收器上执行,其中多个用户在接收器中被解码以连续的方式。由于误差传播效应检测精度在很大程度上取决于正确的检测之前的用户。基于DL的NOMA接收机被设计为在一次处理中为多个用户解码消息,而无需显式地估计信道。基于DL的NOMA接收器由深度神经网络(DNN)表示在联合中执行信道估计和信号检测方式。首先使用模拟数据离线训练DNN基于信道统计,然后用于恢复在在线部署阶段直接传输符号。初步结果显示,深度学习方法的表现优于传统的基于导频的信道估计方法对导频符号的数量更稳健。DNN显示如下能够减轻潜在的错误传播SIC探测器中发生的影响。此外,当符号间干扰严重,DL方法可以实现比最大似然检测器更好的性能这并没有考虑干扰效应。
关键词——非正交多址接入、深度学习,信道估计、信号检测、MATLAB

摘要

本文探讨了利用深度学习方法在双用户非正交多址(NOMA)系统中实现信号检测的问题。我们设计了一个神经网络模型,针对具有相位衰落的静态标量信道进行训练,旨在同时检测两个用户在一个子载波上传输的符号。为了评估深度学习方法的性能,我们考虑了两种具有挑战性的场景:导频符号数量较少和循环前缀长度较短。实验结果表明,在这些场景下,深度学习方法相较于传统的信道估计方法展现出更高的稳健性和准确性。

引言

非正交多址(NOMA)技术作为5G及未来通信系统的关键组成部分,通过在同一资源块内允许多个用户共享频谱资源,显著提高了频谱效率。然而,NOMA系统中的信号检测面临复杂性和干扰问题,特别是在信道条件恶劣或资源受限的情况下。传统的信道估计和信号检测方法在导频符号不足或循环前缀较短时性能下降明显。因此,探索新的信号检测技术,特别是基于深度学习的技术,对于提升NOMA系统的性能具有重要意义。

系统模型

NOMA系统概述

考虑一个双用户NOMA系统,其中两个用户(用户A和用户B)在同一子载波上传输数据。假设用户A具有较高的功率分配系数,用户B具有较低的功率分配系数,以实现功率域复用。

信道模型

假设信道为静态标量信道,具有相位衰落特性。信道系数表示为hA​和hB​,分别对应用户A和用户B。

信号传输与接收

用户A和用户B的发送符号分别记为sA​和sB​,接收端接收到的信号y可以表示为:

y=hA​sA​+hB​sB​+n

其中,n为加性高斯白噪声。

深度学习方法

数据生成

  1. 生成训练数据:根据信道模型生成大量训练样本,包括不同的信道系数、发送符号和噪声。
  2. 标签制作:对于每个接收信号y,计算对应的真实发送符号作为标签。

神经网络设计

  1. 输入层:接收信号y作为输入。
  2. 隐藏层:采用多层感知器(MLP)结构,包含多个全连接层和激活函数(如ReLU)。
  3. 输出层:使用softmax函数输出两个用户符号的概率分布。

训练过程

  1. 损失函数:采用交叉熵损失函数来衡量预测结果与真实标签之间的差异。
  2. 优化算法:使用Adam优化器进行参数更新。
  3. 早停策略:避免过拟合,当验证集损失不再下降时停止训练。

实验设置与结果

实验场景

  • 场景一:导频符号数量较少,导致信道估计不准确。
  • 场景二:循环前缀长度较短,影响信道估计的精度和符号同步。

性能测试

  1. 误码率(BER):比较深度学习方法与传统信道估计方法在两种场景下的BER性能。
  2. 鲁棒性分析:评估不同信噪比(SNR)条件下两种方法的表现。

实验结果

实验结果表明,在两种场景下,深度学习方法均表现出优于传统信道估计方法的性能。特别是在导频符号数量较少或循环前缀长度较短时,深度学习方法的BER显著降低,证明了其更高的稳健性和准确性。

结论

本文提出了一种基于深度学习的信号检测方法,用于双用户NOMA系统中的信号检测。通过生成训练数据、设计神经网络并进行训练,我们成功地在具有相位衰落的静态标量信道上实现了对两个用户符号的同时检测。实验结果表明,在导频符号数量较少和循环前缀长度较短的场景下,深度学习方法相较于传统方法具有更高的稳健性和准确性。未来工作将探索更复杂的信道模型和更多用户场景下的深度学习方法。

📚2 运行结果

部分代码:

function [receivePacket,randomPhase] = dataTransmissionReception(transmitPacket,powerFactor,lengthCP,h,nVar)
% This function is to model the OFDM signal transmission and reception
% process.  

[numSym,numSC,numUE,numPacket] = size(transmitPacket);
powerScale = reshape(powerFactor,1,numSC,numUE,numPacket);
powerScale = repmat(powerScale,numSym,1,1,1);

% Transmitter
randomPhase = exp(-1j*rand(numUE,numPacket)*2*pi);
% randomPhase = ones(numUE,numPacket);
for u = 1:numUE                
    for p = 1:numPacket
        
        % 1. IFFT, along the row (subcarrier)
        x1 = ifft(sqrt(powerScale(:,:,u,p)).*transmitPacket(:,:,u,p),numSC,2);
    
        % 2. Inserting CP
        x1_CP = [x1(:,numSC-lengthCP+1:end) x1]; 
        
        % 3. Parellel to serial
        x2 = x1_CP.';
        x = x2(:);
    
        % 4. Multipath channel convolution
        y_conv = conv(h(:,u,p),x);
        y(:,u,p) = randomPhase(u,p)*y_conv(1:length(x));
    
    end
end 

% 5. Add up signals from 2 users
y_total = squeeze(sum(y,2));

% 6. Add Gaussion noise to time-domain channel
sigLength = size(y_total,1);
nFre = sqrt(nVar)/sqrt(2).*(randn(numPacket,numSC)+1j*randn(numPacket,numSC)); % Frequency domain
nTime = sqrt(sigLength)*sqrt(sigLength/numSC)*ifft(nFre,sigLength,2); % Time domain
y_total = y_total+nTime.';

% Receiver
Y = zeros(numPacket,numSym,numSC); % Frequency-domain receive signal     
for p = 1:numPacket
    
    % 1. Serial to parallel
    block = reshape(y_total(:,p),numSC+lengthCP,numSym).'; 
    % 2. Removing CP
    y_block = block(:,lengthCP+1:lengthCP+numSC);
    % 3. FFT
    Y(p,:,:) = fft(y_block,numSC,2);
        
end 

receivePacket = permute(Y,[2,3,1]);


....

figure();
semilogy(EsN0_dB,numErr_DL(1,:),'r-o');hold on;
semilogy(EsN0_dB,numErr_DL(2,:),'r-x');hold on;
semilogy(EsN0_dB,numErr_LS(1,:),'b--o');hold on;
semilogy(EsN0_dB,numErr_LS(2,:),'b--x');hold on;
semilogy(EsN0_dB,numErr_MMSE(1,:),'k--o');hold on;
semilogy(EsN0_dB,numErr_MMSE(2,:),'k--x');hold on;
semilogy(EsN0_dB,numErr_ML(1,:),'g-o');hold on;
semilogy(EsN0_dB,numErr_ML(2,:),'g-x');hold off;
legend('UE 1 - DL','UE 2 - DL','UE 1 - LS','UE 2 - LS','UE 1 - MMSE','UE 2 - MMSE','UE 1 - ML','UE 2 - ML');

function Rhh = getRhh(numPaths,numSC,numChan)
Rhh = zeros(numSC,numSC,numChan);
for i = 1:numChan    
    h = 1/sqrt(2)/sqrt(numPaths)*complex(randn(numPaths,1),randn(numPaths,1)); % L x 1
    H = fft(h,numSC); % numSC x 1
    Rhh(:,:,i) = H*H';    
end
Rhh = mean(Rhh,3); % numSC x numSC
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。(文章内容仅供参考,具体效果以运行结果为准)

[1]高通.基于深度学习的NOMA系统资源分配方法研究[D].齐鲁工业大学,2023.

[2]方世林,赵子琪,余丹,等.基于深度学习的NOMA系统符号检测算法研究[J].湖南理工学院学报:自然科学版, 2021, 34(4):5.

[3]王金鹏,窦顺瑶,王珏,等.MIMO-NOMA系统中基于深度学习CCDNN框架的传输速率提高和能量效率优化的算法[J].吉林大学学报(工学版)[2024-12-31].

🌈Matlab代码、文章下载

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值