稳健对角加载 MVDR 波束形成算法原理与仿真
一、算法对比背景
标准 MVDR 波束形成对导向矢量失配极度敏感。实际工程中存在测角偏差、阵元幅相误差、位置误差,导致名义导向矢量与真实导向矢量不一致,期望信号被当作干扰抑制,主瓣塌陷、增益严重下降。
稳健 MVDR 通过球形约束优化 + 牛顿迭代修正失配导向矢量,自适应求解最优加权向量,在存在角度失配、少快拍欠秩场景下仍能保持良好波束性能,是阵列信号处理中经典的稳健抗干扰方案。
二、理论对比简述
1)普通 MVDR
代价函数:最小化输出功率,约束目标方向增益为1
\[\min \boldsymbol{w}^H\boldsymbol{R}\boldsymbol{w},\quad \text{s.t.}\ \boldsymbol{w}^H\boldsymbol{a}=1
\]
权重:
\[\boldsymbol{w}_{mvdr}=\dfrac{\boldsymbol{R}^{-1}\boldsymbol{a}}{\boldsymbol{a}^H\boldsymbol{R}^{-1}\boldsymbol{a}}
\]
缺陷:导向矢量轻微失配即主瓣塌陷、信号自消,少快拍协方差矩阵奇异失效。
2)稳健迭代 MVDR
构建导向矢量不确定集球形约束:
\[\min\|\boldsymbol{a}-\bar{\boldsymbol{a}}\|^2,\quad \text{s.t.}\ \boldsymbol{a}^H\boldsymbol{R}^{-1}\boldsymbol{a}\le \varepsilon
\]
通过 SVD 分解 + 牛顿迭代求解最优拉格朗日乘子,修正失配导向矢量,再代入 MVDR 公式求解稳健权值。
优势:抗角度失配、抗阵列误差、可适配少快拍欠秩场景。
三、完整优化 Python 对比代码
import numpy as np
import matplotlib.pyplot as plt
# -------------------------- 全局参数设置 --------------------------
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
c = 340
f = 1000
lam = c / f
d = 0.5 * lam
M = 10 # 阵元数
snap_num = 40 # 快拍数
theta_true = 5 # 真实目标角度
theta_interf = [-30, 45]
SNR = 0
INR = 20
angle_bias = 3.0 # 人为引入导向矢量失配 3°
eps = 4.5 # 球形约束参数
theta_scan = np.linspace(-90, 90, 1000)
def db2lin(db):
return 10 ** (db / 10)
# -------------------------- 导向矢量函数 --------------------------
def steer_vec(theta_deg, M, d, lam):
theta_rad = np.deg2rad(theta_deg)
k = 2 * np.pi / lam
pos = np.arange(M) * d
a = np.exp(-1j * k * pos * np.sin(theta_rad))
return a.reshape(-1, 1)
# -------------------------- 生成阵列信号 --------------------------
# 真实导向矢量 & 失配名义导向矢量
a_true = steer_vec(theta_true, M, d, lam)
a_nominal = steer_vec(theta_true + angle_bias, M, d, lam)
# 干扰导向矢量
a_int1 = steer_vec(theta_interf[0], M, d, lam)
a_int2 = steer_vec(theta_interf[1], M, d, lam)
# 信号与噪声
sig_t = np.random.randn(1, snap_num) * np.sqrt(db2lin(SNR))
sig_i1 = np.random.randn(1, snap_num) * np.sqrt(db2lin(INR))
sig_i2 = np.random.randn(1, snap_num) * np.sqrt(db2lin(INR))
noise = (np.random.randn(M, snap_num) + 1j * np.random.randn(M, snap_num)) / np.sqrt(2)
X = a_true @ sig_t + a_int1 @ sig_i1 + a_int2 @ sig_i2 + noise
R = X @ X.conj().T / snap_num
# -------------------------- 1. 普通 MVDR(直接使用失配导向矢量) --------------------------
R_inv = np.linalg.inv(R)
w_mvdr = (R_inv @ a_nominal) / (a_nominal.conj().T @ R_inv @ a_nominal)
# -------------------------- 2. 稳健迭代 MVDR(牛顿迭代修正导向矢量) --------------------------
U, Gamma, Vh = np.linalg.svd(R)
Gamma_vec = Gamma
z = np.abs(U.conj().T @ a_nominal)
lam_opt = 0
tol = 1e-5
# 构造目标函数与导数
def func(lam):
denom = 1.0 + lam * Gamma_vec
return np.sum((z / denom) ** 2) - eps
def dfunc(lam):
denom = 1.0 + lam * Gamma_vec
return np.sum(2 * (z**2) * Gamma_vec / (denom**3))
# 牛顿迭代
for _ in range(100):
f_val = func(lam_opt)
if abs(f_val) < tol:
break
lam_opt = lam_opt - f_val / dfunc(lam_opt)
# 修正导向矢量
a_robust = a_nominal - U @ np.diag(1.0 / (1.0 + lam_opt * Gamma_vec)) @ U.conj().T @ a_nominal
w_robust = (R_inv @ a_robust) / (a_robust.conj().T @ R_inv @ a_robust)
# -------------------------- 波束方向图计算 --------------------------
def get_beam(w, scan_theta):
beam = []
for th in scan_theta:
a = steer_vec(th, M, d, lam)
beam.append(np.abs(w.conj().T @ a)[0,0])
beam = np.array(beam)
beam_db = 20 * np.log10(beam / np.max(np.abs(beam)))
return beam_db
beam_mvdr = get_beam(w_mvdr, theta_scan)
beam_robust = get_beam(w_robust, theta_scan)
# -------------------------- 绘图对比 --------------------------
plt.figure(figsize=(12,6))
plt.plot(theta_scan, beam_mvdr, 'r-', linewidth=1.2, label='普通 MVDR(失配)')
plt.plot(theta_scan, beam_robust, 'b-', linewidth=1.4, label='稳健迭代 MVDR')
plt.axvline(theta_true, color='green', linestyle='--', label=f'真实目标角度 {theta_true}°')
for ang in theta_interf:
plt.axvline(ang, color='orange', linestyle='--', alpha=0.7)
plt.xlabel('入射角度 (°)', fontsize=12)
plt.ylabel('波束响应 (dB)', fontsize=12)
plt.title('导向矢量失配场景:普通MVDR vs 稳健迭代MVDR 对比', fontsize=13)
plt.ylim([-80, 0])
plt.grid(alpha=0.3)
plt.legend(fontsize=11)
plt.tight_layout()
plt.show()

四、仿真结果分析
1. 普通 MVDR 性能严重恶化
在存在 3° 导向矢量角度失配 时,传统 MVDR 出现严重主瓣塌陷、增益衰减,算法将期望信号识别为干扰进行抑制,波束指向偏移,完全无法正常工作。
2. 稳健迭代 MVDR 抗失配能力极强
通过牛顿迭代优化修正失配导向矢量,稳健算法可以自动补偿角度偏差,主瓣精准对准真实目标角度,保证期望信号无失真接收。
3. 干扰抑制能力保持优异
稳健 MVDR 在干扰角度形成深度零陷,在保证目标增益的同时,有效抑制强干扰信号,兼顾保形与抗干扰性能。
五、算法优缺点总结
普通 MVDR
✅ 优点:理论简洁、计算量小、满秩理想条件下分辨率高
❌ 缺点:对导向矢量失配、阵列误差、少快拍场景极度敏感,工程实用性差
稳健迭代 MVDR
✅ 优点:
-
有效解决导向矢量失配导致的主瓣塌陷问题
-
自适应修正导向矢量,无需人工对角加载调参
-
兼容少快拍、协方差欠秩恶劣场景
-
保主瓣、深零陷,综合鲁棒性远优于传统 MVDR
❌ 缺点:存在少量迭代计算开销,多目标场景需进一步扩展

浙公网安备 33010602011771号