Comments (3)
The observed artefact is expected when normalizing the channel frequency responses of each batch example separately. Starting from version 0.11, CDL and TDL power delay profiles are normalized to have unit total power. For system level models (UMi, UMa, and RMa), the power delay profiles were already normalized. Note that the per-example normalization is still very useful to get a clean SNR defintion since codewords are contained within one slot.
from sionna.
Your understanding of how (optional) normalisation is done in Sionna is correct. Optional per-batch-example normalisation was implemented as it allows convenient control of the SNR of a resource grid or block by fixing the transmit power or the noise power.
Note that the TDL channel model provides access to the path powers through the property mean_powers
. Ensuring average power of one could be achieved by (i) not normalising with Sionna through cir_to_ofdm_channel()
or cir_to_time_channel()
and (ii) normalising the channel impulse response by dividing the paths by sqrt(sum(mean_powers)).
from sionna.
Thanks for your answer. For the TDL I have actually created a custom version of Sionna's TDL channel model, so that I can normalize the channel as you propose (and also set custom json model). But I wasn't sure it was fully theoretically correct to do it that way. I add a _normalize_taps
parameter and simply add this code at the end of the _load_parameters()
method:
if self._normalize_taps:
self._mean_powers = mean_powers / tf.reduce_sum(mean_powers) # do not need sqrt() as it is power
else:
self._mean_powers = mean_powers
Sionna's per-batch-example way to normalize should be ok most of the time, but I think it may create some strange behavior if the sample size is to small. For instance the noise power is not normalize on a per sample base: the noise distribution is set once and the Monte Carlo simulation will provide results corresponding to the desired noise distribution. You do not need to normalize the noise power for each sample and you should be able to do the same with the channel distribution.
From this code I obtain the following figure (sorry for the custom class, you should be able to reproduce the first curve with a normalized TDL model A json and standard Sionna's TDL channel model):
Sionna's normalization seems here a little unbalanced in the spectrum. But this is not always the case depending on the fft size. Again, I think this is not a major issue or not even an issue, but I fill like it could be done more correctly if that makes sense.
Anyway, thanks for the great job!
from sionna.
Related Issues (20)
- RT data structure HOT 8
- Compatibility between Tensorflow 2.10-2.12 and Sionna 0.16.2 HOT 1
- Sionna RT: question on scatt random phases HOT 4
- Errors when using materials different than itu_concrete HOT 1
- confused on perfect CSI simulation result HOT 4
- How to calculate the refracted electromagnetic field HOT 1
- sionnaRT: slow GPU computation times HOT 8
- Hello World Example in 5G NR PUSCH Tutorial does not take channel into account. HOT 2
- New Radiation Pattern HOT 2
- Error when using interferers in end-to-end PUSCH Simulations model HOT 1
- Channel Impulse Response unexpected values HOT 5
- Sionna RT result error HOT 3
- Channel Impulse Response moving scenario
- How do I customize the pattern of an antenna? HOT 1
- How to Retrieve Reflection Coefficients and Determine Amplitude Attenuation in Sionna Ray Tracer
- Mobility notebook crashes on Google Colab with CPU runtime
- Only import sionna and mitsuba work on Mac and on Arm N1, mitsuba is not even compiling. HOT 2
- In NR PUSCH the longer CP is applied to the first slot in frame instead of first symbol in slot HOT 1
- Error when using @tf.function in release 0.17.0
- Question about channel estimation
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sionna.