Difference coarrays¶
API references¶
-
doatools.model.coarray.
compute_location_differences
(locations)[source]¶ Computes all locations differences, including duplicates.
Suppose
locations
is \(m \times d\), then the result will be an \(m^2 \times d\) matrix such thatlocations[i] - locations[j]
is stored in the(i + j * m)
-th row of the resulting matrix.For instance, if
locations
is[[0, 1], [1, 3]]
, then the output will be[[0, 0], [1, 2], [-1, -2], [0, 0]]
.Parameters: locations (ndarray) – An m x d array of sensor locations.
-
doatools.model.coarray.
compute_unique_location_differences
(locations, atol=0.0, rtol=1e-08)[source]¶ Computes all unique locations differences.
Unlike
compute_location_differences()
, duplicates within the specified tolerance are removed.Parameters: locations – An m x d array of sensor locations.
-
class
doatools.model.coarray.
WeightFunction1D
(array)[source]¶ Bases:
object
Creates a 1D weight function.
Parameters: array (ArrayDesign) – Array design. References
[1] P. Pal and P. P. Vaidyanathan, “Nested arrays: A novel approach to array processing with enhanced degrees of freedom,” IEEE Transactions on Signal Processing, vol. 58, no. 8, pp. 4167-4181, Aug. 2010.
-
differences
()[source]¶ Retrieves a 1D array of unique differences in ascending order.
The ordering of elements returned by
differences()
and the ordering of elements returned byweights()
are the same.
-
weights
()[source]¶ Retrieves a 1D array of weights.
The ordering of elements returned by
differences()
and the ordering of elements returned byweights()
are the same.
-
indices_of
(diff)[source]¶ Retrieves the list of indices of elements in the vectorized difference matrix that correspond to the given difference. If the given difference does not exist, an empty list will be returned.
Parameters: diff (int) – Difference.
-
get_central_ula_size
(exclude_negative_part=False)[source]¶ Gets the size of the central ULA in the difference coarray.
Parameters: exclude_negative_part (bool) – Set to
True
to exclude the virtual array elements corresponding to negative differences. The central ULA part is symmetric with respect to the origin and can be represented with\[\lbrack -M_\mathrm{v}+1, \ldots, -1, 0, 1, \ldots, M_\mathrm{v} \rbrack d_0\]After excluding the negative part, the remaining array elements are given by
\[\lbrack 0, 1, \ldots, M_\mathrm{v} \rbrack d_0\]Default value is
False
.
-
get_coarray_selection_matrix
(exclude_negative_part=False)[source]¶ Gets the coarray selection matrix.
Let the central ULA size be \(2M_{\mathrm{v}} - 1\) and the original array size be \(M\). \(\mathbf{F}\) is defined as an \((2M_\mathrm{v} - 1) \times M^2\) matrix that transforms the vectorized sample covariance matrix, \(\mathrm{vec}(\mathbf{R})\), to the virtual observation vector of the central ULA, \(\mathbf{z}\), via redundancy averaging:
\[\mathbf{z} = \mathbf{F} \mathrm{vec}(\mathbf{R}).\]Parameters: exclude_negative_part – If set to True
, only the nonnegative part of the central ULA (i.e., \(\lbrack 0, 1, \ldots, M_\mathrm{v} - 1\rbrack\)) will be considered, and the resulting \(\mathbf{F}\) will be \(M_\mathrm{v} \times M^2\). Default value isFalse
.Returns: The coarray selection matrix. References
[1] M. Wang and A. Nehorai, “Coarrays, MUSIC, and the Cramér-Rao Bound,” IEEE Transactions on Signal Processing, vol. 65, no. 4, pp. 933-946, Feb. 2017.
-