AI赋能5G,利用神经网络进行信道估计
5、创建仿真信道模型
设置仿真噪声电平(dB):
SNRdB = 10;
加载预定义的仿真参数,包括PDSCH参数和DM-RS配置。返回的对象载波是一个有效的载波配置对象,PDSCH是为SISO传输设置的PDSCH配置结构。
[gnb,carrier,pdsch] = hDeepLearningChanEstSimParameters();
创建TDL信道模型并设置信道参数。为了比较估计器的不同信道响应,可以更改这些参数。
通过信道多路径组件获取延迟样本的最大数量。这个数字是从具有最大延迟的信道路径和信道滤波器的实现延迟计算出来的。当获取接收到的信号时,需要这个数字来刷新信道滤波器。
代码:
%%
% Create a TDL channel model and set channel parameters. To compare
% different channel responses of the estimators, you can change these
% parameters later.
channel = nrTDLChannel;
channel.Seed = 0;
channel.DelayProfile = 'TDL-A';
channel.DelaySpread = 3e-7;
channel.MaximumDopplerShift = 50;
% This example supports only SISO configuration
channel.NumTransmitAntennas = 1;
channel.NumReceiveAntennas = 1;
waveformInfo = nrOFDMInfo(carrier);
channel.SampleRate = waveformInfo.SampleRate;
%%
% Get the maximum number of delayed samples by a channel multipath
% component. This number is calculated from the channel path with the
% largest delay and the implementation delay of the channel filter. This
% number is needed to flush the channel filter when obtaining the received
% signal.
chInfo = info(channel);
maxChDelay = ceil(max(chInfo.PathDelays*channel.SampleRate))+chInfo.ChannelFilterDelay;
6、模拟PDSCH传输过程
通过执行以下步骤模拟PDSCH传输:
· 生成PDSCH资源网格
· 插入DM-RS符号
· 执行OFDM调制
· 通过信道模型发送调制波形
· 添加AWGN
· 理想的定时同步
· 执行OFDM解调
若要刷新信道内容,在传输波形的末尾加零。这些零考虑了信道中引入的任何延迟,比如多路径和实现延迟。0的数量取决于采样率、延迟配置文件和延迟扩展。
在时域波形中加入加性高斯白噪声(AWGN)。为了考虑采样率,对噪声功率进行归一化处理。信噪比针对每个接收天线的每个资源元素(RE) (3GPP TS 38.101-4)进行定义。
执行完美的同步。要找到最强的多径分量,使用信道提供的信息。
OFDM解调接收到的数据以重建资源网格。
% Generate DM-RS indices and symbols
[~,dmrsIndices,dmrsSymbols,pdschIndicesInfo] = hPDSCHResources(gnb,pdsch);
% Create PDSCH resource grid
pdschGrid = nrResourceGrid(carrier);
% Map PDSCH DM-RS symbols to the grid
pdschGrid(dmrsIndices) = pdschGrid(dmrsIndices)+dmrsSymbols;
% OFDM-modulate associated resource element
stxWaveform = nrOFDMModulate(carrier,pdschGrid);
txWaveform = [txWaveform; zeros(maxChDelay,size(txWaveform,2))];
%%
% Send data through the TDL channel model.
[rxWaveform,pathGains,sampleTimes] = channel(txWaveform);
SNR = 10^(SNRdB/20); % Calculate linear noise gain
N0 = 1/(sqrt(2.0*gnb.NRxAnts*double(waveformInfo.Nfft))*SNR);
noise = N0*complex(randn(size(rxWaveform)),randn(size(rxWaveform)));
rxWaveform = rxWaveform + noise;
% Get path filters for perfect channel estimation
pathFilters = getPathFilters(channel);
[offset,~] = nrPerfectTimingEstimate(pathGains,pathFilters);
rxWaveform = rxWaveform(1+offset:end, :);
rxGrid = nrOFDMDemodulate(carrier,rxWaveform);
% Pad the grid with zeros in case an incomplete slot has been demodulated
[K,L,R] = size(rxGrid);if (L < carrier.SymbolsPerSlot)
rxGrid = cat(2,rxGrid,zeros(K,carrier.SymbolsPerSlot-L,R));
end
7、比较和可视化各种信道估计效果
我们可以执行和比较相同信道模型的完美、实际和神经网络估计的结果。
要执行完美的信道估计,使用nrPerfectChannelEstimate函数,使用信道提供的路径增益值。
为了进行实际的信道估计,使用nrChannelEstimate函数。
要使用神经网络执行信道估计,必须插值接收的网格。然后将插值后的图像分割成实部和虚部,并将这些图像作为单个批量输入神经网络。使用predict (Deep Learning Toolbox)函数对真实和想象的图像进行预测。最后,将结果串并转换回复数。
计算每个估计方法的均方误差(MSE)。
代码:
estChannelGridPerfect = nrPerfectChannelEstimate(carrier,pathGains, ...
pathFilters,offset,sampleTimes);
%%
% To perform practical channel estimation, use the
% <docid:5g_ref#mw_function_nrChannelEstimate nrChannelEstimate> function.
[estChannelGrid,~] = nrChannelEstimate(carrier,rxGrid,dmrsIndices, ...
dmrsSymbols,'CDMLengths',pdschIndicesInfo.CDMLengths);
% Interpolate the received resource grid using pilot symbol locations
interpChannelGrid = hPreprocessInput(rxGrid,dmrsIndices,dmrsSymbols);
% Concatenate the real and imaginary grids along the batch dimension
nnInput = cat(4,real(interpChannelGrid),imag(interpChannelGrid));
% Use the neural network to estimate the channel
estChannelGridNN = predict(channelEstimationCNN,nnInput);
% Convert results to complex
estChannelGridNN = complex(estChannelGridNN(:,:,:,1),estChannelGridNN(:,:,:,2));
%%
% Calculate the mean squared error (MSE) of each estimation method.
neural_mse = mean(abs(estChannelGridPerfect(:) - estChannelGridNN(:)).^2);
interp_mse = mean(abs(estChannelGridPerfect(:) - interpChannelGrid(:)).^2);
practical_mse = mean(abs(estChannelGridPerfect(:) - estChannelGrid(:)).^2);
%%
% Plot the individual channel estimations and the actual channel
% realization obtained from the channel filter taps. Both the practical
% estimator and the neural network estimator outperform linear
% interpolation.
plotChEstimates(interpChannelGrid,estChannelGrid,estChannelGridNN,estChannelGridPerfect,...
interp_mse,practical_mse,neural_mse);
8、演示效果
我们通过MATLAB写好代码后,运行程序,采用在线CNN训练,获得最终各种信道估计的MSE图示。绘制单个信道估计和从信道滤波器点位获得的实际信道实现。通过下图,我们可以看出,实用估计器和神经网络估计器都优于线性插值。
虽然我们可以通过CNN模型进行训练,并且得到比较好的效果。但是,真正将AI技术应用到通信产品中,仍然还有一段路要走。
参考
[1].IMT-2030(6G)推进组,无线人工智能(AI)技术研究报告-发布版
[2].MATLAB,Deep Learning Data Synthesis for 5G Channel Estimation.
[3].QualCommm中国
[4].华为中国
---END---
原文标题 : AI赋能5G,利用神经网络进行信道估计
最新活动更多
-
11月22日立即报名>> 【线下论坛】华邦电子与莱迪思联合技术论坛
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
7.30-8.1马上报名>>> 【展会】全数会 2025先进激光及工业光电展
-
精彩回顾立即查看>> 【线下论坛】华邦电子与恩智浦联合技术论坛
-
精彩回顾立即查看>> 【线下巡回】2024 STM32 全球巡回研讨会
-
精彩回顾立即查看>> 2024先进激光技术博览展
-
10 巴菲特,继续卖出苹果
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论