How to generate Channel for 2 (or more) consecutive slots?
16 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Thien Hieu
el 4 de Nov. de 2024
Comentada: Thien Hieu
el 16 de Dic. de 2024 a las 15:28
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 ^^
0 comentarios
Respuesta aceptada
Divyam
el 13 de Dic. de 2024 a las 4:26
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
Más respuestas (0)
Ver también
Categorías
Más información sobre Test and Measurement en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!