侵权投诉
搜索
更多>> 热门搜索:
订阅
纠错
加入自媒体

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,利用神经网络进行信道估计

<上一页  1  2  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    通信 猎头职位 更多
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号