Virtual arrays and direction of arrival#

FLU steering convention#

For azimuth \(\theta\) and elevation \(\phi\), the FLU unit direction is

\[ \mathbf{u}(\theta,\phi)= \begin{bmatrix} \cos\phi\cos\theta & \cos\phi\sin\theta & \sin\phi \end{bmatrix}^{\mathsf T}. \]

At phase centre \(\mathbf{p}_m\), steering_vector uses

\[ a_m(\theta,\phi)= \exp\left(j\frac{2\pi}{\lambda}\mathbf{u}^{\mathsf T}\mathbf{p}_m\right). \]

Positive azimuth points left and positive elevation points up.

Automatic method selection#

estimate_doa(..., method="auto") inspects unique virtual phase centres:

  • uniform linear array: one-dimensional angle FFT;

  • complete uniform rectangular array: two-dimensional angle FFT;

  • sparse or arbitrary array: geometry-aware Bartlett grid search.

Explicit bartlett, capon, music, or esprit overrides this choice. ESPRIT requires a ULA. FFT methods require complete uniformly spaced geometry; missing positions are not filled with fictional measurements.

Covariance methods#

For snapshot matrix \(\mathbf{X}\) with channels in columns,

\[ \hat{\mathbf{R}}=\frac{1}{N}\mathbf{X}^{\mathsf H}\mathbf{X}. \]

Bartlett evaluates

\[ P_B(\theta,\phi)=\mathbf{a}^{\mathsf H}\hat{\mathbf{R}}\mathbf{a}. \]

Capon/MVDR evaluates

\[ P_C(\theta,\phi)= \frac{1}{\mathbf{a}^{\mathsf H} (\hat{\mathbf{R}}+\delta\mathbf{I})^{-1}\mathbf{a}}, \]

with scale-relative diagonal loading. MUSIC separates the covariance eigenvectors into signal and noise subspaces and evaluates

\[ P_M(\theta,\phi)= \frac{1}{\lVert\mathbf{E}_n^{\mathsf H}\mathbf{a}\rVert_2^2}. \]

numSources must be smaller than the number of unique channels. MUSIC and Capon need enough statistically useful snapshots; a single RD sample is generally better served by Bartlett or FFT.

Coherent sources#

spatial_smoothing averages overlapping ULA subarray covariances and optionally applies forward-backward averaging. This can restore covariance rank for coherent multipath sources at the cost of aperture.

Duplicate phase centres#

Cascade arrays often contain repeated virtual positions. duplicatePolicy controls combination:

  • first: preserve the first channel;

  • noncoherent: RMS amplitude with first-channel phase;

  • coherent: complex mean after array calibration.

Coherent averaging is meaningful only when channel phase calibration is valid. The model exposes duplicatePhaseCenters so profile tests can verify the topology.

Spatial aliasing and FOV#

For uniform spacing \(d\), an approximate unambiguous angular limit is

\[ |\theta| \leq \sin^{-1}\left(\min\left[1,\frac{\lambda}{2d}\right]\right). \]

Radar.unambiguousFov derives this independently for the lateral and vertical coordinates. A requested search FOV wider than this can contain grating lobes; the library does not hide them.