I have 1 transmitted channel and 4 receiving channels on Uniform Linear Array (ULA) and I am using the MUSIC algorithm to determine the AoA of the incoming signals in LabView. Now I want to use the 2D vector antenna instead of the ULA. I am not sure how can I code the steering vector for the Vector antenna?. In ULA, I have one angle to search which is the azimuth angle but for the 2D vector antenna, I have to search for the azimuth angle and the elevation angle. Also, how can I display the two angles in 2d surface, like one axis for the azimuth angle and the other axis for the elevation angle?


1 Answer 1


According to $[1]$ and $[2]$ the generic form of the steering vector is

$$\mathbf{a} \left( \omega, \mathbf{u} \right) = \left[ e^{j \omega \frac{\mathbf{u} \cdot \mathbf{x}_{1}}{c}}, e^{j \omega \frac{\mathbf{u} \cdot \mathbf{x}_{2}}{c}}, \ldots, e^{j \omega \frac{\mathbf{u} \cdot \mathbf{x}_{N}}{c}}\right]^{T}$$

where $\mathbf{u}$ is the directional (unit) vector pointing towards a specific direction of arrival, $\omega$ is the radial frequency corresponding to $2 \pi f$ with $f$ the temporal frequency of interest, $\mathbf{x}_{n}$ is the position of each element of the array, $N$ denotes the total number of array elements and finally, $c$ is the speed of wave propagation given by $c = \lambda f$, where $\lambda$ is the wavelength of the frequency of interest.

Now, please note that the positions are given as vectors, which is essentially what makes the equation generic. In your case the position vectors can be made to have only two elements if the reference of your coordinate system is chosen carefully. Since in the 2D case the angle of incidence is described by two angles $\theta$, which is the azimuthal angle and $\phi$ which is the elevation angle (you may find those with different names in the literature), each vector will correspond to a specific pair of $\left( \theta, \phi \right)$.

One can split the positional vectors into their horizontal and vertical components and express the directional vectors with their two elements. A formulation shown in this paper $[ 3 ]$ shows how you can do that.

Before we go on to show how this can be achieved let's see what the one-dimension steering vector is. The formulation of the steering vector in one dimension for a Uniform Linear Array (ULA) is given by (as shown in this answer too)

$$ \mathbf{a} \left( \omega, \theta \right) = \left[ 1, e^{j k m d \cos \left( \theta \right)}, \ldots, e^{j k \left( m - 1 \right) d \cos \left( \theta \right)} \right]^{T}, ~ ~ ~ ~ ~ ~ m = 1, 2, \ldots N $$

where in this case $k$ denotes the wavenumber equal to $k = \frac{\omega}{c} = \frac{2 \pi}{\lambda}$, $d$ is the interelement distance in one dimension. In this formulation the first array element is chosen to be positioned at the coordinate system origin.

In a similar manner, one can generate the steering vector associated with the vertical direction of the array elements, but in the case of 2D, there will be two indices for the position (assuming a Uniform Rectangular Array - URA - structure) and two angles for the incidence vector. The corresponding exponent of the ULA is now given by

$$ u = 2 \pi \frac{d}{\lambda} \sin \left( \theta \right) \sin \left( \phi \right) \\ v = 2 \pi \frac{d}{\lambda} \cos \left( \theta \right) \sin \left( \phi \right)$$

with $u$ being the difference between the elements on the $x$-axis direction and $v$ the difference between the arrays on the $y$-axis direction. The two steering vectors are given by

$$ \mathbf{a} \left(u_{i} \right) = \begin{bmatrix} 1 & e^{j u_{i}} & \ldots & e^{j \left( \left(M - 1 \right) u_{i} \right)} \end{bmatrix}^{T} \\ \mathbf{a} \left(v_{i} \right) = \begin{bmatrix} 1 & e^{j v_{i}} & \ldots & e^{j \left( \left(N - 1 \right) v_{i} \right)} \end{bmatrix}^{T}$$

where we dropped the $\omega$ dependency for clarity. $M$ and $N$ are the maximum indices for the array elements in each direction. Please note that in this case one of the elements coincides with the coordinate system origin.

The equation providing the matrix of steering vectors is

$$ \mathbf{A} \left( u_{i}, v_{i} \right) = \mathbf{a} \left( u_{i} \right) \mathbf{a} \left(v_{i} \right)^{T} = \begin{bmatrix} 1 & \ldots & e^{j \left( N - 1 \right) u_{i}}\\ e^{j u_{i}} & \ldots & e^{j \left( u_{i} + \left( N - 1 \right) v_{i} \right)} \\ \vdots & \vdots & \vdots\\ e^{j \left( \left(M - 1 \right) u_{i} \right)} & \ldots & e^{j \left( \left(M - 1 \right) u_{i} + \left(N - 1 \right) v_{i} \right)} \end{bmatrix}$$

Now, putting everything together and consulting $[ 4 ]$ (can be found here) we can write each element of the steering vectors matrix as (using the initial $\mathbf{a} \left( \mathbf{u} \right)$ notation to denote a generic steering vector for a specific direction)

$$ \mathbf{a} \left( \mathbf{u} \right)_{n} = \mathbf{a} \left( \theta_{i}, \phi_{i} \right)_{k} = e^{j \frac{2 \pi}{\lambda} \left(x_{k} \cos \left( \theta_{i} \right) \sin \left( \phi_{i} \right) + y_{k} \sin \left( \theta_{i} \right) \sin \left( \phi_{i} \right)\right)}$$

where in this case $i$ is a linear index for the angles in the search grid, $k$ is a linear index for the array elements, $x_{k}$ and $y_{k}$ are the $x$-coordinate and $y$-coordinate of each array element respectively.

One important note to make, which may be obvious but shouldn't be omitted, is that contrary to the ULA case, the matrix of steering vectors contains all information for one frequency of interest. While in the ULA case, the steering vector contains all spatial information for one frequency and one can create a matrix containing all spatial information for all frequencies of interest, with steering vectors being the columns of this matrix, in 2D this is not the case. A 3D array is needed to "gather" all spatial information for all frequencies of interest.

Finally, one additional resource that may or may not be of help is to have a look at MATLAB's steervec() function implementation. It calculates the steering vector for arbitrary array geometries for a specific frequency of interest given the element positions and directions of arrival on your search grid.

$[ 1 ]$ M. R. Bai, J.-G. Ih, and J. Benesty, Acoustic array systems: theory, implementation, and applications.

$[ 2 ]$ H. L. Van Trees, Optimum array processing: Part IV of detection, estimation, and modulation theory.

$[ 3 ]$ Ting Wang, Bo Ai, Ruisi He, and Zhangdui Zhong, Two-Dimension Direction-of-Arrival Estimation for Massive MIMO Systems.

$[ 4 ]$ Alban Doumtsop Lonkeng and Jie Zhuang, Two-Dimensional DOA Estimation Using Arbitrary Arrays for Massive MIMO Systems.

  • 1
    $\begingroup$ Dear @zaellixA, thank you for your intensive response its really helpful, I will have a look at those papers. $\endgroup$
    – Hadeel
    Mar 22, 2022 at 17:30
  • $\begingroup$ I believe you could reach a formulation based on the information in the answer. If this is not the case please let me know and I could provide clarifications and/or additional information. Please keep in mind that those papers are dealing with computational aspects of large MIMO systems and present the formulation in the theoretical part to base off of it their algorithms. $\endgroup$
    – ZaellixA
    Mar 22, 2022 at 18:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.