Compared to standard (conventional) beamformers, adaptive beamformers such as minimum variance distortionless response (MVDR) have much better resolution and interference nulling capabilities. Briefly, the MVDR beamformer is as follows:

If $\mathbf{a}_\theta$ is the look-vector in the direction $\theta$ and if $\widehat{\mathbf{R}}$ is the covariance matrix of observations, then the adaptive weight vectors are calculated as

$$\mathbf{w}_\theta=\frac{\widehat{\mathbf{R}}^{-1} \mathbf{a}_\theta}{\mathbf{a}^H_\theta \widehat{\mathbf{R}}^{-1} \mathbf{a}_\theta}$$

and the output power of the MVDR beamformer is

$$B_{mvdr}(\theta)=\mathbf{w}_\theta^H \widehat{\mathbf{R}}\mathbf{w}_\theta$$

For the sake of completeness, the conventional beamformer output power is $B_{conv}(\theta)=\mathbf{a}_\theta^H \widehat{\mathbf{R}}\mathbf{a}_\theta$.

However, these adaptive beamformers are also prone to severe performance hits when there is a signal mismatch i.e., when the steering vector model for the signal of interest doesn't match what's in the data or when the actual array positions are perturbed from the array positions used in the steering/look vectors (which is what happens in practice). The performance degradation can be so large that it becomes inferior to the conventional beamformer.

How can one increase the robustness of adaptive beamformers (in this case, the MVDR, but applicable more generally) to signal mismatches?


Here's the result from a simulation with two plane wave signals, one at $+30^\circ$ and the other at $-22.5^\circ$ and 10 dB down from the first, impinging on a 10 element uniform line array (spaced at $\lambda/2$, where $\lambda$ is the wavelength) in a noisy environment (the exact value of the noise power is immaterial here and you can assume it to be much lower than the signal powers). The covariance matrix is formed from 50 observations (snapshots). The top two panels show the outputs of the MVDR and the conventional beamformers and you can clearly see that the MVDR has high resolution compared to the conventional. Both do a good job of estimating the signal power.

However, when the element positions are slightly perturbed (perturbation is unknown to the beamformer), causing a mismatch in the actual signal steering vector and the model, the signal power estimates of the MVDR beamformer goes kaput. It can hardly measure them correctly, although it still does a good job of localising the signals. Comparatively, the conventional beamformer gets the relative powers right, although its harder to localise the signal due to increased sidelobes. (Note: The plots have all been normalized by the maximum power so although you can't see it, the peak at $30^\circ$ in the top left plot is at 0 dB. So this doesn't truly show how the actual power estimate degrades due to mismatches, as I just wanted to paint a qualitative picture.)

Plots with MVDR Perturbed Array sloppily corrected in Gimp http://dsp.stackexchange.com/questions/146/how-can-one-improve-the-robustness-of-adaptive-beamformers-to-signal-mismatches#comment-308 :

The title for the lower left plot should read MVDR: Perturbed array. I'll correct the mistake sometime soon. – yoda Sep 3 at 5:28 -->

Is it possible for me to improve the estimates of the signal powers using the MVDR beamformer in the perturbed case?

  • $\begingroup$ The title for the lower left plot should read MVDR: Perturbed array. I'll correct the mistake sometime soon. $\endgroup$ Sep 3, 2011 at 5:28
  • $\begingroup$ How much perturbation did you add? Seems like it would be dependent upon the uncertainty in antenna element position relative to the wavelength of the desired carrier frequency. This makes the problem harder (read: more expensive) as you go up in frequency, but for lower frequencies it may be more manageable. $\endgroup$
    – Jason R
    Sep 8, 2011 at 3:16
  • $\begingroup$ @JasonR The spacing between the arrays is $\lambda/2$, where $\lambda$ is the wavelength. So there is only one frequency being considered here. I'll include this in the question. The exact value of the perturbation added shouldn't matter here, because as I mentioned, the beamformer (aka the user) is not aware of the perturbation (if we knew it, we'd use an exact representation). $\endgroup$ Sep 8, 2011 at 3:26
  • $\begingroup$ Right. But the magnitude of the performance degradation is going to be proportional in some way to the magnitude of the perturbations. Obviously if the element positions are 1 micron in error the array response will be different from the case where they are 1 centimeter off, for example. Do you see what I'm asking? I was wondering what magnitude of perturbation you used in your example case. $\endgroup$
    – Jason R
    Sep 8, 2011 at 3:39
  • $\begingroup$ @JasonR The perturbation in this example was $\mathcal{N}(0,0.0025)$ for unit spacing and for simplicity, I just perturbed it along the axis (i.e., it is still 1D and not 2D/3D). $\endgroup$ Sep 8, 2011 at 3:42

1 Answer 1


One approach that I'm aware of is to "load" the diagonal of $\widehat{\mathbf{R}}$ by some value $\sigma_d^2$ in order to stabilize the covariance matrix and make the adaptive vectors more robust to signal mismatches. This is often done in matched field processing and is referred to as diagonal loading or white noise constraint beamforming.

In other words, the robustified adaptive weight vectors are calculated as

$$\widehat{\mathbf{w}}_\theta=\frac{\left(\widehat{\mathbf{R}}+\sigma_d^2\mathbf{I}\right)^{-1} \mathbf{a}_\theta}{\mathbf{a}^H_\theta \left(\widehat{\mathbf{R}}+\sigma_d^2\mathbf{I}\right)^{-1} \mathbf{a}_\theta}$$

and the output beam power is now computed as

$$\widehat{B}_{mvdr}(\theta)=\widehat{\mathbf{w}}_\theta^H \left(\widehat{\mathbf{R}}+\sigma_d^2\mathbf{I}\right)\widehat{\mathbf{w}}_\theta$$

Here's the result comparing the no mismatch, mismatch due to perturbed array and diagonally loaded cases for the MVDR beamformer for the situation in the question. There is an improvement in the signal power estimation, at the expense of increased background noise power.

enter image description here

  • 2
    $\begingroup$ How does one know what value of $\sigma_d$ to pick? Also, ok, so this works - but why does it work? $\endgroup$
    – Spacey
    Sep 23, 2011 at 2:16
  • 1
    $\begingroup$ While I don't have any practical experience with this application, I've seen that technique used in other areas also; qualitatively, it's a way of communicating to the adaptive system that there is some uncertainty in the model, similarly to how you might include process noise in a Kalman filter to account for unmodeled effects in the system. $\endgroup$
    – Jason R
    Sep 23, 2011 at 3:23
  • 1
    $\begingroup$ @JasonR True, it's a widely used technique and is called "regularization" in math and statistics literature. $\endgroup$ Sep 23, 2011 at 4:17
  • $\begingroup$ @Mohammed, in general, you need to have some sense of the signal levels to be able to pick the right value for $\sigma_d^2$. It also is a trade off- how closely you can estimate vs. how much you raise the background noise level. Choosing it in an uncertain environment is still a topic of research. A general rule of thumb is that it should be larger than the smallest eigenvalue of $\widehat{\mathbf{R}}$. As for the why of it, I don't know how to explain it in simple terms yet and can only explain it with mathematics (which is overkill for this question). $\endgroup$ Sep 23, 2011 at 4:19
  • $\begingroup$ Yoda, the why isnt 'simple'. :-) It is known that it works. Why it works is not known, so there isnt much depth in understanding here thus far. $\endgroup$
    – Spacey
    Sep 23, 2011 at 23:27

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.