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 that locations[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.

__call__(diff)[source]

Evaluates the weight function at the given difference.

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 by weights() are the same.

weights()[source]

Retrieves a 1D array of weights.

The ordering of elements returned by differences() and the ordering of elements returned by weights() are the same.

weight_of(diff)[source]

Evaluates the weight function at the given difference.

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 is False.
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.