Skip to content

logic3body/Robust_Capon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Robust Capon Beamformer (MATLAB)

A MATLAB implementation of the Robust Capon Beamformer (RCB) algorithm, reproducing numerical examples from the seminal paper on robust adaptive beamforming.

Overview

Standard Capon Beamformer (SCB) achieves high resolution and excellent interference suppression, but its performance degrades severely under steering vector mismatch. This project implements the Robust Capon Beamformer (RCB) that constrains the true steering vector within an ellipsoidal uncertainty set, providing robust power estimation across a wide range of mismatch conditions.

Features

  • SCB — Standard Capon Beamformer baseline
  • RCB (Lagrange multiplier method) — O(M³) efficient solution via eigendecomposition and bisection
  • RCB (SDP) — O(M⁶) semidefinite programming formulation using SeDuMi
  • Scaling ambiguity correction — Normalizes estimated steering vector to ‖a‖² = M, eliminating power overestimation
  • Simulation scenarios — Reproduces paper examples:
    • Power vs ε sweep for K = 1–8 interferers
    • Mismatch (Δ = 0°) and no-mismatch (Δ = 0.2°) cases
    • Beam pattern comparison (SCB vs RCB)

Project Structure

├── main_simulation.m        # Top-level script, runs all scenarios
├── config.m                 # Centralized parameter configuration
├── core/
│   ├── steering_vector.m    # ULA steering vector generation
│   ├── generate_covariance.m# Theoretical covariance matrix
│   ├── scb_power.m          # Standard Capon Beamformer
│   ├── rcb_lagrange.m       # RCB via Lagrange multiplier (O(M³))
│   ├── rcb_sdp.m            # RCB via SDP / SeDuMi (O(M⁶))
│   └── scaling_correction.m # Steering vector normalization
├── sim/
│   ├── run_power_vs_epsilon.m  # Epsilon sweep simulation
│   └── run_beam_pattern.m      # Beam pattern simulation
├── plot/
│   ├── plot_power_vs_epsilon.m # Power vs epsilon figures
│   └── plot_beam_pattern.m     # Beam pattern figures
└── utils/
    ├── db2pow.m, pow2db.m      # Unit conversion
    └── compute_epsilon0.m      # Minimum uncertainty radius

Requirements

  • MATLAB R2020b or later
  • SeDuMi (optional, for SDP solver) — git clone https://github.com/SQLP/SeDuMi.git third_party/sedumi

Usage

>> main_simulation

Output figures are saved to results/ as PNG files.

Algorithm

The RCB solves:

min_a  a'·R⁻¹·a    subject to    ‖a − ā‖² = ε

Using eigendecomposition R = V·D·V' and transformation to eigenspace, the solution reduces to a one-dimensional bisection on the Lagrange multiplier μ:

g(μ) = Σ |z_i|² · (μ / (d_i + μ))² = ε

The estimated steering vector is then recovered and normalized to ‖a‖² = M to eliminate scaling ambiguity.

Simulation Parameters

Parameter Value
Array elements (M) 10
Element spacing λ/2
SOI direction 10°
SOI power 20 dB
Interference power 40 dB
Noise Q = I
Interferer DOAs −75°, −60°, −45°, −30°, −10°, 25°, 35°, 50°
Mismatch angles 0°, 0.2°

Results

  • No mismatch (Δ = 0°): SCB and RCB both perform well; RCB (uncorrected) overestimates power
  • With mismatch (Δ = 0.2°): SCB severely underestimates SOI power; RCB produces accurate estimates over a wide ε range
  • Scaling correction: Essential for removing the σ²–a ambiguity, reducing power overestimation from >30 dB to <0.1 dB

References

Stoica, P., Wang, Z., & Li, J. (2003). Robust Capon beamforming. IEEE Signal Processing Letters, 10(6), 172–175.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages