grid_of_beams_dft_ula#

sionna.phy.mimo.grid_of_beams_dft_ula(num_ant: int, oversmpl: int = 1, precision: Literal['single', 'double'] | None = None) torch.Tensor[source]#

Computes the Discrete Fourier Transform (DFT) Grid of Beam (GoB) coefficients for a uniform linear array (ULA).

The coefficient applied to antenna \(n\) for beam \(m\) is expressed as:

\[c_n^m = e^{\frac{2\pi n m}{N O}}, \quad n=0,\dots,N-1, \ m=0,\dots,NO\]

where \(N\) is the number of antennas num_ant and \(O\) is the oversampling factor oversmpl.

Note that the main lobe of beam \(m\) points in the azimuth direction \(\theta = \mathrm{arc sin} \left( 2\frac{m}{N} \right)\) if \(m\le N/2\) and \(\theta = \mathrm{arc sin} \left( 2\frac{m-N}{N} \right)\) if \(m\ge N/2\), where \(\theta=0\) defines the perpendicular to the antenna array.

Parameters:
  • num_ant (int) – Number of antennas

  • oversmpl (int) – Oversampling factor

  • precision (Literal['single', 'double'] | None) – Precision used for internal calculations and outputs. If set to None, precision is used.

Outputs:

gob – [num_ant x oversmpl, num_ant], torch.complex. The \(m\)-th row contains the num_ant antenna coefficients for the \(m\)-th DFT beam.

Examples

gob = grid_of_beams_dft_ula(num_ant=8, oversmpl=2)
# gob.shape = torch.Size([16, 8])