Capon Beamformer
- class CaponBeamformer(loading=0.0, **kwargs)
Bases:
Serializable
,ReceiveBeamformer
Implementation of the Capon beamformer, also referred to as Minimum Variance Distortionless Response (MVDR).
The Capon1 beamformer estimates the power \(\hat{P}\) received from a direction \((\theta, \phi)\), where \(\theta\) is the zenith and \(\phi\) is the azimuth angle of interest in spherical coordinates, respectively. Let \(\mathbf{X} \in \mathbb{C}^{N \times T}\) be the the matrix of \(T\) time-discrete samples acquired by an antenna arrary featuring \(N\) antennas and
\[\mathbf{R}^{-1} = \left( \mathbf{X}\mathbf{X}^{\mathsf{H}} + \lambda \mathbb{I} \right)^{-1}\]be the respective inverse sample correlation matrix loaded by a factor \(\lambda \in \mathbb{R}_{+}\). The antenna array’s response towards a source within its far field emitting a signal of small relative bandwidth is \(\mathbf{a}(\theta, \phi) \in \mathbb{C}^{N}\). Then, the Capon beamformer’s spatial power response is defined as
\[\hat{P}_{\mathrm{Capon}}(\theta, \phi) = \frac{1}{\mathbf{a}^{\mathsf{H}}(\theta, \phi) \mathbf{R}^{-1} \mathbf{a}(\theta, \phi)}\]with
\[\mathbf{w}(\theta, \phi) = \frac{\mathbf{R}^{-1} \mathbf{a}(\theta, \phi)}{\mathbf{a}^{\mathsf{H}}(\theta, \phi) \mathbf{R}^{-1} \mathbf{a}(\theta, \phi)} \in \mathbb{C}^{N}\]being the beamforming weights to steer the sensor array’s receive characteristics towards direction \((\theta, \phi)\), so that
\[\mathcal{B}\lbrace \mathbf{X} \rbrace = \mathbf{w}^\mathsf{H}(\theta, \phi) \mathbf{X}\]is the implemented beamforming equation.
- Parameters
loading (float, optional) – Diagonal covariance loading coefficient \(\lambda\). Defaults to zero.
- yaml_tag: Optional[str] = 'Capon'
YAML serialization tag.
- property num_receive_input_streams: int
Number of input streams required by this beamformer.
Dimension \(N\) of the input sample matrix \(\mathbf{X} \in \mathbb{C}^{N \times T}\).
- Return type
int
- Returns
Number of input streams \(N\).
- property num_receive_output_streams: int
Number of output streams generated by this beamformer.
Dimension \(M\) of the output sample matrix \(\mathbf{Y} \in \mathbb{C}^{M \times T}\).
- Return type
int
- Returns
Number of output streams \(M\).
- property num_receive_focus_angles: int
Number of required receive focus angles.
- Return type
int
- Returns
Number of focus angles \(F\).
- property loading: float
Magnitude of the diagonal sample covariance matrix loading.
Required for robust matrix inversion in the case of rank-deficient sample covariances.
- Return type
float
- Returns
Diagonal loading coefficient \(\lambda\).
- Raises
ValueError – For loading coefficients smaller than zero.
- _decode(samples, carrier_frequency, angles)
Decode signal streams for receive beamforming.
This method is called as a subroutine during
receive()
andprobe()
.- Parameters
samples (np.ndarray) – Signal samples, first dimension being the number of signal streams \(N\), second the number of samples \(T\).
carrier_frequency (float) – The assumed carrier central frequency of the samples \(f_\mathrm{c}\).
angles (
ndarray
) – (np.ndarray): Spherical coordinate system angles of arrival in radians. A three-dimensional numpy array with the first dimension representing the number of angles, the second dimension of magnitude number of focus points \(F\), and the third dimension containing the azimuth and zenith angle in radians, respectively.
- Return type
ndarray
- Returns
Stream samples of the focused signal towards all focus points. A three-dimensional numpy array with the first dimension representing the number of focus points, the second dimension the number of returned streams and the third dimension the amount of samples.
- 1
J. Capon. High-resolution frequency-wavenumber spectrum analysis. Proceedings of the IEEE, 57(8):1408–1418, 1969. doi:10.1109/PROC.1969.7278.