grid_of_beams_dft#
- sionna.phy.mimo.grid_of_beams_dft(num_ant_v: int, num_ant_h: int, oversmpl_v: int = 1, oversmpl_h: 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 rectangular array (URA).
GoB indices are arranged over a 2D grid indexed by \((m_v,m_h)\). The coefficient of the beam with index \((m_v,m_h)\) applied to the antenna located at row \(n_v\) and column \(n_h\) of the rectangular array is expressed as:
\[c_{n_v,n_h}^{m_v,m_h} = \frac{1}{\sqrt{N_vN_h}} e^{j\frac{2\pi n_v m_v}{N_v O_v}} e^{j\frac{2\pi n_h m_h}{N_h O_h}}\]where \(n_v=0,\dots,N_v-1\), \(n_h=0,\dots,N_h-1\), \(m_v=0,\dots,N_v O_v-1\), \(m_h=0,\dots,N_h O_h-1\), \(N_v,N_h\) are the numbers of antennas
num_ant_v,num_ant_h, and \(O_v,O_h\) are the oversampling factorsoversmpl_v,oversmpl_hin the vertical and horizontal direction, respectively.We can rewrite more concisely the matrix coefficients \(c^{m_v,m_h}\) as follows:
\[\mathbf{c}^{m_v,m_h} = \mathbf{c}_h^{m_h} \otimes \mathbf{c}_v^{m_v}\]where \(\otimes\) denotes the Kronecker product, \(\mathbf{c}_v^{m_v}\) and \(\mathbf{c}_h^{m_h}\) are the vertical and horizontal ULA DFT beams, respectively, and the ordering follows column-wise flattening of the rectangular array.
Such a DFT GoB is, e.g., defined in Section 5.2.2.2.1 [3GPPTS38214].
- Parameters:
num_ant_v (int) – Number of antenna rows (i.e., in vertical direction)
num_ant_h (int) – Number of antenna columns (i.e., in horizontal direction)
oversmpl_v (int) – Oversampling factor in vertical direction
oversmpl_h (int) – Oversampling factor in horizontal direction
precision (Literal['single', 'double'] | None) – Precision used for internal calculations and outputs. If set to None,
precisionis used.device (str | None) – Device for computation. If None,
deviceis used.
- Outputs:
gob – [num_ant_v x oversmpl_v, num_ant_h x oversmpl_h, num_ant_v x num_ant_h], torch.complex. The elements \([m_v,m_h,:]\) contain the antenna coefficients of the DFT beam with index pair \((m_v,m_h)\).
Examples
gob = grid_of_beams_dft(num_ant_v=4, num_ant_h=8) # gob.shape = torch.Size([4, 8, 32])