How to get accurate channel in NTN - TDL model?
You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
0 votes
Share a link to this question
https://www.mathworks.com/matlabcentral/answers/2180352-how-to-get-accurate-channel-in-ntn-tdl-model
- (not my main question, but I am wondering) In the step "Obtain a precoding matrix (wtx) to use in the transmission of the first transport block"
- In the step "Perform least squares channel estimation between the received grid and each transmission layer"
Accepted Answer
0 votes
Hi @Thien Hieu,
I read your post about the NR NTN PDSCH Throughput example and wanted to clarify. The function `nrPerfectChannelEstimate` is not a receiver-side estimate but simply a way to obtain the ground-truth channel grid from the channel model. That’s why its values look much larger than those from `nrChannelEstimate`, which operates on the received signal after normalization, path loss, and noise.
To compare the two, the perfect channel needs to be scaled consistently with the transmit waveform and DM-RS power. Applying only the path loss factor is not enough, since additional normalization (waveform and FFT) also affects the estimated channel. Aligning these scalings allows you to compute a fair comparison, such as MSE, between perfect and estimated channels.
7 Comments
Hi @Thien Hieu,
Thank you for your follow-up comments and for working through the channel estimation scaling issues. I'm pleased to see you've reached a good understanding of the channel estimation process in the NR NTN PDSCH Throughput example. Let me provide some additional clarification and validation of your conclusions.
Your Understanding is Correct
Your analysis in your latest comments is absolutely correct. You've accurately identified the key distinction between the "perfect channel" from the TDL model and the estimated channel obtained through practical receiver processing, and you've correctly traced through the scaling factors that account for the difference in their magnitudes.
Regarding Your First Comment About Using nrChannelEstimate Instead of nrPerfectChannelEstimate
You raised an excellent point about the use of nrPerfectChannelEstimate in the helper function getInitialChannelEstimate. You're right that in a real-world receiver implementation, you would only have access to nrChannelEstimate since the true channel is unknown. However, in this simulation example, the use of nrPerfectChannelEstimate for the initial precoding matrix calculation serves a specific purpose: it provides an idealized starting point that demonstrates the best-case performance achievable by the precoding scheme. According to the MathWorks documentation at https://www.mathworks.com/help/5g/ref/nrperfectchannelestimate.html, the nrPerfectChannelEstimate function reconstructs the channel impulse response from the channel path gains and path filter impulse response, then performs OFDM demodulation to create the channel grid. This is fundamentally different from nrChannelEstimate which performs practical least-squares estimation using reference signals from the received waveform.
The example uses perfect channel knowledge initially because: * It allows the transmitter to compute optimal precoding matrices (via SVD) for the first transmission * After the first slot, the example switches to using practical channel estimation (nrChannelEstimate) for all subsequent slots * This approach demonstrates the system's ability to track the channel and adapt precoding based on realistic receiver feedback
If you wanted to make the simulation more realistic, you could indeed modify getInitialChannelEstimate to use nrChannelEstimate instead, though this would require transmitting an initial slot without optimized precoding to obtain the first practical channel estimate.
Regarding Your Channel Scaling Analysis
Your mathematical analysis of the channel scaling is excellent and demonstrates deep understanding. Let me validate and expand on your conclusions:
The Perfect Channel from TDL Model:
When you call H = nrPerfectChannelEstimate(carrier, pathGains, pathFilters), you obtain a channel grid that represents the frequency-domain channel response after OFDM demodulation. As documented at https://www.mathworks.com/help/5g/ref/nrperfectchannelestimate.html, this function:
- Reconstructs the channel impulse response from pathGains and pathFilters
- Performs OFDM demodulation to convert to frequency domain
- Returns normalized channel coefficients
The Transmit Signal Processing:
As you correctly identified, the transmitted waveform undergoes this processing chain: txWaveform = txWaveform0 / max(abs(txWaveform0)) * db2mag(powerScaling) * db2mag(-pl_dB(carrier.NSlot+1))
Where: * txWaveform0 is the base OFDM waveform * Division by max(abs(txWaveform0)) normalizes to unit peak amplitude * db2mag(powerScaling) scales to desired transmit power * db2mag(-pl_dB(carrier.NSlot+1)) applies path loss attenuation
The Received Signal Model:
The received signal can be expressed as: Y = [txWaveform0 / max(abs(txWaveform0)) * db2mag(powerScaling) * db2mag(-pl_dB)] * H_tdl + noise
Where H_tdl is the time-domain channel impulse response that gets applied through the channel object.
The Practical Channel Estimate:
The nrChannelEstimate function performs least-squares estimation using DM-RS symbols. As you correctly analyzed:
H_est ≈ Y / DMRS_symbols ≈ Y / txWaveform0
This gives: H_est ≈ [1/max(abs(txWaveform0))] * db2mag(powerScaling) * db2mag(- pl_dB) * H_tdl
Defining "The Channel":
Your final conclusion is particularly insightful. You stated: "Actually, to call it a channel, I think it is just H_tdl * db2mag(-pl_dB(carrier.NSlot+1)), or H_tdl * PathLoss. The max(abs(txWaveform0)) and db2mag(powerScaling) elements are just for scaling (preprocessing) purpose, I don't think it should be included in channel."
This is absolutely correct from a physical channel modeling perspective. The true wireless channel consists of:
- H_tdl: The multipath fading channel (small-scale fading) from the TDL model
- PathLoss: The large-scale path loss due to distance and atmospheric effects
The normalization factor max(abs(txWaveform0)) and power scaling db2mag(powerScaling) are indeed transmitter implementation details rather than channel characteristics.
Comparing Perfect and Estimated Channels
If you want to compare the perfect channel knowledge with the practical estimate for performance analysis, you should scale them consistently. Here's the recommended approach:
Option 1 - Compare in the Received Signal Domain:
Scale the perfect channel estimate to match the receiver's perspective: H_perfect_scaled = H * (1/max(abs(txWaveform0))) * db2mag(powerScaling) * db2mag(-pl_dB(carrier.NSlot+1));
Then compute error metrics like Mean Square Error (MSE):
channelError = abs(H_est - H_perfect_scaled).^2; MSE = mean(channelError(:));
Option 2 - Compare in the Physical Channel Domain:
Remove the transmitter scaling from the estimated channel: H_est_descaled = H_est / ((1/max(abs(txWaveform0))) * db2mag(powerScaling) * db2mag(-pl_dB(carrier.NSlot+1)));
Then compare with the perfect channel H directly.
Option 3 - Normalized Comparison:
For many performance analyses, you can compare the normalized channels: H_perfect_norm = H ./ abs(H); H_est_norm = H_est ./ abs(H_est);
This removes the amplitude scaling effects entirely and focuses on phase and relative magnitude errors.
Why the Magnitude Ranges Differ
You observed that nrPerfectChannelEstimate returns values in the range [0.5, 0.7] while nrChannelEstimate returns values around 10^-6 times [3, 7.5]. This difference arises from:
1. Path Loss Attenuation: The path loss value of 1.5678e-08 (approximately -157 dB) causes massive attenuation, reducing the received signal level by about 8 orders of magnitude. This is typical for NTN scenarios with satellites at 600 km altitude. 2. Waveform Normalization: The division by max(abs(txWaveform0)) scales the waveform, and this scaling propagates through to the channel estimate. 3. Reference Point: The perfect channel estimate represents the channel at unit input power, while the practical estimate reflects the actual received signal levels after all transmitter processing and channel effects.
Additional Technical Considerations
Regarding Use in Precoding:
The example uses SVD-based precoding, which operates on the channel estimate to compute optimal precoding matrices. For precoding purposes, only the relative structure of the channel matrix matters (spatial characteristics across antennas and subcarriers), not the absolute magnitude scaling. This is why the getPrecodingMatrix function can work with either perfect or estimated channels - the SVD extracts the spatial eigenmodes regardless of overall scaling.
Regarding Noise Estimation:
The nrChannelEstimate function also returns a noise estimate (noiseEst) which is properly scaled relative to the estimated channel. This noise estimate is crucial for the MMSE equalizer (nrEqualizeMMSE) to properly weight the channel inversion. The noise level is computed from unused DM-RS tones and is automatically consistent with the channel estimate magnitude.
Regarding Power Normalization in OFDM:
The OFDM demodulation process (nrOFDMDemodulate) includes an inherent IFFT/FFT normalization. The perfect channel estimate accounts for this automatically since it performs OFDM demodulation internally. The practical channel estimate inherits the same normalization through the received signal processing chain.
Relevant Documentation Links
For your continued study of this topic, I recommend these MathWorks resources:
Core Functions:
- nrPerfectChannelEstimate: https://www.mathworks.com/help/5g/ref/nrperfectchannelestimate.html
- nrChannelEstimate: https://www.mathworks.com/help/5g/ref/nrchannelestimate.html
- nrTDLChannel: https://www.mathworks.com/help/5g/ref/nrtdlchannel.html Example and Background:
- NR NTN PDSCH Throughput: https://www.mathworks.com/help/satcom/ug/nr-ntn-pdsch-throughput.html
- Model NR NTN Channel: https://www.mathworks.com/help/satcom/ug/model-nr-ntn-channel.html
- NR Channel Estimation Using DM-RS: https://www.mathworks.com/help/5g/ug/nr-channel-estimation-using-csirs.html
Related Concepts: * Model 5G NR Communication Links: https://www.mathworks.com/help/5g/gs/model-5g-nr-communication-links.html * DL-SCH and PDSCH Processing Chain: https://www.mathworks.com/help/5g/gs/dl-sch-and-pdsch-transmit-and-receive-processing-chain.html
Summary
Your understanding is excellent, and your analysis correctly identifies that: 1. nrPerfectChannelEstimate provides ground-truth channel knowledge by directly converting the TDL model's pathGains and pathFilters to a frequency-domain channel grid. It is not a "receiver estimate" but rather a simulation convenience for obtaining the true channel. 2. nrChannelEstimate performs practical least-squares estimation from the received signal using DM-RS reference symbols, and its output magnitude includes all the transmitter scaling factors and path loss. 3. The physical channel consists of the TDL fading channel and path loss: H_channel = H_tdl * PathLoss. The transmitter normalization and power scaling factors are implementation choices, not channel characteristics. 4. For comparison purposes, you must scale the perfect and estimated channels to a common reference frame, accounting for all the transmitter processing steps that affect signal amplitude.
Your conclusion that the transmitter normalization and power scaling shouldn't be considered part of the channel is physically correct - these are signal processing operations, not propagation effects. The channel itself is the combination of multipath fading and path loss that the electromagnetic wave experiences during propagation.
I hope this clarifies the relationship between perfect channel knowledge and practical channel estimation in the context of the NR NTN PDSCH Throughput example. Your systematic approach to understanding the signal flow and scaling factors demonstrates excellent engineering analysis.
Hi @Thien Hieu,
Yes, your understanding is exactly correct.
The initial use of nrPerfectChannelEstimate serves solely to compute an optimal precoding matrix for the first transmission slot. This is documented in the NR NTN PDSCH Throughput example, which states: " Obtain a precoding matrix (wtx) to use in the transmission of the first transport block."
Without perfect channel knowledge at startup, you would need to either:
1. Transmit the first slot without precoding (open-loop transmission),
or
2. Use suboptimal precoding based on statistical channel models
The example uses perfect knowledge initially to demonstrate best-case performance from the start. After the first slot, it switches to practical channel estimation (nrChannelEstimate) based on DM-RS for all subsequent precoding updates, making the remainder of the simulation realistic.
In SVD-based precoding, the precoding matrix is computed from the channel's singular vectors, which align the transmitted signals with the channel's spatial eigenmodes. This maximizes received signal power and is particularly important in MIMO systems.
More Answers (0)
Categories
Find more on Link-Level Simulation in Help Center and File Exchange
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)