Coder Social home page Coder Social logo

TDL channel normalization about sionna HOT 3 CLOSED

Inv4lidn4m3 avatar Inv4lidn4m3 commented on May 16, 2024
TDL channel normalization

from sionna.

Comments (3)

faycalaa avatar faycalaa commented on May 16, 2024 1

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.

faycalaa avatar faycalaa commented on May 16, 2024

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.

Inv4lidn4m3 avatar Inv4lidn4m3 commented on May 16, 2024

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):

normalization_study

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.