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, device: str | 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 = \frac{1}{\sqrt{N}}e^{j\frac{2\pi n m}{N O}}, \quad n=0,\dots,N-1,\quad m=0,\dots,NO-1\]

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

For a half-wavelength-spaced ULA, define the wrapped spatial frequency \(\nu_m=m/(NO)\) for \(m\le\lfloor NO/2\rfloor\) and \(\nu_m=(m-NO)/(NO)\) otherwise. With positive phase progression corresponding to positive azimuth, the main lobe points towards \(\theta_m=\arcsin(2\nu_m)\), where \(\theta_m=0\) is 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.

  • device (str | None) – Device for computation. If None, device 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])