How is the output signal obtained in nrTDLChannel?

26 views (last 30 days)
Hello!
How can I get rxwaveform from txwaveform using pathGains, sampleTimes, etc.? I believe this is crucial for constructing the effective channel matrix in the case of time-varying channels. Specifically as follows:
This is a simple example of a SISO case where the input waveform is transmitted through the TDL channel.
SR = 7.68e6;
tdl = nrTDLChannel;
tdl.DelayProfile = 'TDL-A';
tdl.DelaySpread = 100e-9;
tdl.MaximumDopplerShift = 0;
tdl.SampleRate = SR;
tdl.NumReceiveAntennas = 1;
tdl.NormalizeChannelOutputs = false;
tdl.NormalizePathGains = false;
T = SR*1e-3;
NRB = 25;
SCS = 15;
nSlot = 0;
carrier = nrCarrierConfig('SubcarrierSpacing',SCS,'NSizeGrid',NRB);
trans_info = randi([0,1], NRB*12*14*2, 1); % bit stream
data = qammod(reshape(trans_info, 2, NRB*12*14), 4,'gray','InputType','bit').'; % 4QAM
data = reshape(data, NRB*12, 14);
[txwaveform,info] = nrOFDMModulate(carrier,data);
[rxwaveform, pathGains, sampleTimes] = tdl(txwaveform);
y1 = nrOFDMDemodulate(carrier, rxwaveform); % receive signal
pathFilters = getPathFilters(tdl);
offset = 0;
hest = nrPerfectChannelEstimate(pathGains,pathFilters,NRB,SCS,nSlot,offset,sampleTimes);
y2 = hest.*data;
norm(y2-y1)
ans = 3.0141e-04
If tdl.MaximumDopplerShift = 0, then y2 = y1.
As `tdl.MaximumDopplerShift` increases, due to the loss of orthogonality among OFDM subcarriers, y2 will show significant deviation.
Now, I wish to construct a matrix G such that rxwaveform = G * txwaveform. Then, through the Fourier transform, we can obtain matrix H so that y = H * data. And H is commonly referred to as the effective channel matrix
I hope I have made my question clear, thank you!

Answers (0)

Categories

Find more on End-to-End Simulation in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!