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) 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} = e^{\frac{2\pi n_h m_v}{N_h O_h}} e^{\frac{2\pi n_h m_h}{N_v O_v}}\]where \(n_v=0,\dots,N_v-1\), \(n_h=0,\dots,N_h-1\), \(m_v=0,\dots,N_v O_v\), \(m_h=0,\dots,N_h O_h\), \(N\) is the number of antennas
num_antand \(O_v,O_h\) are the oversampling factoroversmpl_v,oversmpl_hin the vertical and horizontal direction, respectively.We can rewrite more concisely the matrix coefficients \(c^{m_v,m_h}\) as follows:
\[c^{m_v,m_h} = c^{m_v} \otimes c^{m_h}\]where \(\otimes\) denotes the Kronecker product and \(c^{m_v},c^{m_h}\) are the ULA DFT beams computed as in
grid_of_beams_dft_ula().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.
- 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])