基于不确定集的波束形成算法原理介绍及MATLAB实现

本文介绍了一种提高波束形成器稳健性的算法——稳健Capon波束形成算法。该算法通过不确定集约束找到更精确的导向矢量,从而在干扰方向形成零陷,并在期望信号方向形成最大增益。文中给出了详细的数学推导过程及MATLAB仿真代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理介绍

该算法是通过将期望信号的导向矢量约束在一个不确定集上面,通过优化找到一个比名义导向矢量更加准确的导向矢量来提高波束形成器的稳健性。其中最具有代表性的是稳健Capon波束形成算法,其主要思想是在一定不确定区域内寻找使得阵列输出功率最大的那个导向矢量作为最佳估计值,以球形不确定集为例
Sa={a∣∥aˉ0−a∥2<ε}{{S}_{a}}=\left\{ a|{{\left\| {{{\bar{a}}}_{0}}-a \right\|}_{2}}<\varepsilon \right\}Sa={aaˉ0a2<ε}
其中,ε\varepsilonε为大于0的常数,不确定集Sa{{S}_{a}}Sa描述的是以aˉ0{{\bar{a}}_{0}}aˉ0为球心半径为ε\varepsilonε的球形区域,那么稳健的Capon波束形成可以描述为
{min⁡w  wHRws.t.   ∥aˉ0−a∥2<ε\left\{ \begin{aligned} & \underset{w}{\mathop{\min }}\,\ {{w}^{H}}Rw \\ & s.t.\ \ \ {{\left\| {{{\bar{a}}}_{0}}-a \right\|}_{2}}<\varepsilon \\ \end{aligned} \right.wmin wHRws.t.   aˉ0a2<ε
为了排除平凡解a=0a=0a=0, 需要ε<M\varepsilon <\sqrt{M}ε<M
通过拉格朗日乘数法对其进行求解可以得到
a^=(R−1λ+I)−1aˉ0=aˉ0−(I+λR)−1aˉ0\hat{a}={{\left( \frac{{{R}^{-1}}}{\lambda }+I \right)}^{-1}}{{\bar{a}}_{0}}={{\bar{a}}_{0}}-{{\left( I+\lambda R \right)}^{-1}}{{\bar{a}}_{0}}a^=(λR1+I)1aˉ0=aˉ0(I+λR)1aˉ0
带入约束函数取等可以得到
∥(I+λR)-1aˉ0∥=ε\left\| {{\left( I+\lambda R \right)}^{\text{-}1}}{{{\bar{a}}}_{0}} \right\|\text{=}\varepsilon(I+λR)-1aˉ0=ε
最终求得的稳健Capon波束形成的权系数为
w=R−1a0a0HR−1a0=(R+1λI)−1aˉ0aˉ0H(R+1λI)−1R(R+1λI)−1aˉ0w=\frac{{{R}^{-1}}{{a}_{0}}}{a_{0}^{H}{{R}^{-1}}{{a}_{0}}}=\frac{{{\left( R+\frac{1}{\lambda }I \right)}^{-1}}{{{\bar{a}}}_{0}}}{\bar{a}_{0}^{H}{{\left( R+\frac{1}{\lambda }I \right)}^{-1}}R{{\left( R+\frac{1}{\lambda }I \right)}^{-1}}{{{\bar{a}}}_{0}}}w=a0HR1a0R1a0=aˉ0H(R+λ1I)1R(R+λ1I)1aˉ0(R+λ1I)1aˉ0
从形式上看,稳健Capon波束形成(Robust Capon Beamforming, RCB)算法属于对角加载算法范畴,只不过是将求解加载系数的问题转化为了确定不确定集系数问题,将通过不确定集约束间接估计出加载系数。

仿真参数设置

参数名称参数值
阵元数10
期望信号角度−5∘-5^{\circ}5
干扰信号角度−30∘-30^{\circ}3030∘30^{\circ}30
SNR10dB
INR20
快拍数60

基于上述仿真参数,可以得到基于不确定集的波束方向图为
在这里插入图片描述
从图中可以看出,形成的方向图在期望信号方向形成了最大增益,在干扰方向上形成了零陷,同时可以通过增加误差来进一步显示该方法的优越性,这里就不再叙述。
代码如下:

clear;
close all;
clc;
warning off

%% 初始化
M = 10;             %阵元数
fs = 5000;          % 采样频率
f = 1000;           % 信号频率
snap = 60;         % 快拍数
T = 0.5;           %采样时间
t = 1/fs:1/fs:T;
c = 340;
lamda = c/f;              %波长
d = 0.5*lamda;          %阵元间距
theta0 =-5;                %期望信号角度
theta1 =-30;                %干扰角度
theta2 = 30;                %干扰角度
snr=10;                     %信噪比
inr1 =20;                   %干噪比
inr2 = 20;                   %干噪比
snr_noise = 0;              %噪声功率1,0dBW

%% 导向矢量
a0 = exp(-1j*2*pi*d*sind(theta0)*(0:M-1)'/lamda);
a1 = exp(-1j*2*pi*d*sind(theta1)*(0:M-1)'/lamda);
a2 = exp(-1j*2*pi*d*sind(theta2)*(0:M-1)'/lamda);

%% 信号、干扰和噪声
tar_sig = wgn(1,length(t), snr);
inf1 = wgn(1,length(t),inr1); 
inf2 = wgn(1,length(t),inr2); 
noise = wgn(M,length(t),snr_noise);

%% 阵列接收信号
rec_sig = a0*tar_sig + a1*inf1 + a2*inf2 + noise; 
interference = a1*inf1 + a2*inf2;
sig = a0 * tar_sig;

%% 协方差矩阵
Rx = rec_sig(:,1:snap)*rec_sig(:,1:snap)'/snap; 
Rs = sig(:,1:snap)*sig(:,1:snap)'/snap; 
Ri = interference(:,1:snap)*interference(:,1:snap)'/snap; 
Rn = noise(:,1:snap)*noise(:,1:snap)'/snap; 

%% RCB算法
epsilon = 3; 
R_inv = inv(Rx); 
cvx_begin
    variable a(M) complex;
    minimize norm(sqrtm(R_inv)*a)
subject to
   norm(a0-a) <= epsilon;
cvx_end
w_rcb = R_inv*a/(a'*R_inv*a);
theta = -90:0.1:90; % scan angle
p = exp(-1j*2*pi*d*(0:M-1)'*sind(theta)/lamda);
y = w_rcb'*p;
yy = 20*log10(abs(y)/max(abs(y)));
%% 绘图
figure(1);
plot(theta,yy,'linewidth', 2);
xlabel('角度(\circ)');ylabel('归一化增益(dB)')
grid on;
xlim([-90 90])
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值