How to generate Channel for 2 (or more) consecutive slots?

13 visualizzazioni (ultimi 30 giorni)
Hi everyone,
I know that we can generate channel for 1 slot by using CDLChannel, then nrPerfectChannelEstimation, but how can I get it to return the channel in form of samples in time domain (like channel response)? I think that channel after nrPerfectEstimation is after CP-removal, can I get the channel in time domain that still contains the elements at CP positions (I'd like to have the very original channel)?
Then, how could I generate the channels at 2 (or more) consecutive slots?
Thank you in advance ^^

Risposta accettata

Divyam
Divyam il 13 Dic 2024
You could reconstruct the channel's impulse response by using the "getPathFilters" function to retrieve the impulse responses. The "nrPerfectChannelEstimate" function can then be used to return your channel in the time domain after you pass the frequency domain estimation through an inverse fast fourier transform function, i.e. the "ifft" function. However, here the CP positions are removed by default and hence it isnt possibile to get the channel in time domain with the elements at the CP positions still present.
To generate the channels at two or more consecutive slots simply use the channel to create a transmitted signal and then generate a received signal for the number of slots you require, you can then store both the transmitted and received signals along with the path gains to get the timing estimate of the channel. Here is some pseudo code as a sample solution:
% Number of consecutive slots
numSlots = 2;
% Define channel/antenna specifications
% Placeholder for storing results over multiple slots
rxWaveform = [];
pathGains = [];
% Generate and transmit waveform through the channel for each slot
for slotIdx = 1:numSlots
% Generate random waveform
txWaveform = complex(randn(T, Nt), randn(T, Nt));
% Obtain the path gains and path filters for the received waveform
[rxWaveformSlot, pathGainsSlot, sampleTimes] = cdl(txWaveform);
pathFilters = getPathFilters(cdl);
% Perform timing offset estimation
offset = nrPerfectTimingEstimate(pathGainsSlot, pathFilters);
% Channel estimation (Need to customize it as per your channel)
[hest, nest] = nrChannelEstimate(pathGainsSlot, pathFilters, offset, SampleTimes);
% Append results for each slot
rxWaveform = [rxWaveform; rxWaveformSlot];
pathGains = [pathGains; pathGainsSlot];
channelEstimates = [channelEstimates; hest];
end
% Update the ifft function arguments as per your estimate dimensions
hestTimeDomain = ifft(channelEstimates, [], 2);
Alternatively you could define the number of slots for OFDM symbols and use them to generate channels are multiple consecutive slots, you would need to tweak the example given here for that purpose: https://www.mathworks.com/help/5g/ref/nrcdlchannel-system-object.html#:~:text=Set%20the%20number%20of%20time%20samples%20to%20generate%20a%20single%2Dslot%20OFDM%20response.
For more information regarding the "getPathFilters" function, refer to this documentation: https://www.mathworks.com/help/5g/ref/nrcdlchannel.getpathfilters.html
For more information regarding the "nrPerfectChannelEstimate" function, refer to this documentation: https://www.mathworks.com/help/5g/ref/nrperfectchannelestimate.html
For more information regarding the "nrPerfectTimingEstimate" function, refer to this documentation: https://www.mathworks.com/help/5g/ref/nrperfecttimingestimate.html
For more information regarding the "ifft" function, refer to this documentation: https://www.mathworks.com/help/matlab/ref/ifft.html
  1 Commento
Thien Hieu
Thien Hieu il 16 Dic 2024
Hi Divyam,
Thank you for your response, I will try that.
I also make a modified version of nrChannelEstimate to work as I need.
Thank you so much and have a nice day ^^

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Test and Measurement in Help Center e File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by