目录
0 前言
本博客是作者在学习国防科技大学的《阵列信号处理》慕课中的学习感悟,希望能够帮助有需要的朋友
本篇简单介绍了LCMV自适应波束形成,并且给出了公式结论,重点对《阵列信号处理》中的LCMV方向图增益尝试了仿真复刻
1 LCMV自适应波束形成
本文所有公式以及部分图片均来自于《阵列信号处理》慕课PPT
1.1 介绍
LCMV(Linearly Constrained Minium Variance)自适应波束形成,也称线性约束最小方差自适应波束形成,其本质上就是对MVDR(Minimum Variance Distortionless Response)自适应波束形成的扩展
一般的自适应波束形成器,例如MVDR、MMSE、MSINR自适应波束形成器,其应用场景均为单目标方向,多干扰方向,即其只能对单一目标信号方向进行信号增强,但实际应用中可能会遇到需要对多目标信号方向进行增强的场景,因此在MVDR波束形成器上进行了拓展,使其能够应用于多目标方向的增强
1.2 公式
先来复习一下MVDR的准则与公式:
MVDR满足的准则为:
其最终推得的结论:
然后是LCMV的准则和公式:
其最终推得的结论:
经过对比两种波束形成的准则和公式,发现LCMV仅仅是对MVDR准则上进行了多目标的扩展
式中:是干扰信号与噪声信号的协方差矩阵
是一个由几个方向矢量堆叠起来的矩阵,如果是最简单的情况,使用方向性约束无畸变约束的情况下,如果信号方向分别为
,其
应该为:
是一个常数矢量,在上述情况下,
注意:这里的指的是目标方向的数量,如果有三个目标方向,这里的
就是3,与后文仿真中的
意思完全不同,仿真中的
表示快拍数,即进行了
次阵列采样
1.3 慕课LCMV方向图增益
慕课中提供了LCMV的方向图增益图片,如图所示:
该仿真以80°、100°、120°为信号目标方向,以19°、60°、150°为信号干扰方向
由图可以发现,该方向图增益在三个目标方向均取到了最大值0,在三个干扰方向仍然存在零陷,有良好的抑制效果
2 MATLAB仿真
2.1 代码
%三清
clc;
clear;
close all;
% 参数设置
N = 16; %均匀直线阵列阵元个数
lamda = 1; %假设波长为1m
L = 1000; %快拍个数
d = lamda/2;%阵元间距假设为半波长
fs = 1000; %采样频率
f0 = 50; %信号频率
t = [0:L-1]/fs; %时间序列
theta_target = [80 100 120]; %目标方向
theta_interference = [19 60 150];%干扰方向
%信噪比和干噪比
SNR = 30; % 期望信号信噪比(dB)
INR = [30, 40, 45]; % 干扰干噪比(dB)
% 生成阵列响应向量
a = @(theta) exp(1i * 2 * pi * d * (0:N-1)' * cosd(theta) / lamda);
%设置参考信号,第一个阵元接收到的信号即为参考信号
s = sqrt(10^(SNR/10)) * exp(1i*2*pi*f0*t);
% 这里将三个目标方向的参考信号假设成相同的,可以根据需要自行更改
s = [s;s;s];
%生成方向矢量
vs = a(theta_target);%生成信号方向矢量
vi = a(theta_interference);%生成干扰方向矢量
% 构建目标信号
xs = vs * s;
% 构建干扰信号
%interrupt作为中间变量,其作用为将不同方向干扰的不同幅值考虑上
interrupt = zeros(length(theta_interference),L);
for k = 1:length(theta_interference)
interrupt(k,:) = sqrt(10.^(INR(k)/10)) * (randn(length(1),L) + 1i*randn(length(1),L));
end
xi = vi * interrupt;
% 构建噪声信号,幅值可以自己设置,也可以自己选择有无噪声
% xn = sqrt(2) * (randn(N,L) + 1i * randn(N,L));
xn = zeros(N,L);
% 构建接收信号,等于目标信号加上干扰信号,虽然没啥用
x = xs + xi + xn;
% 构建干扰和噪声信号,用于接下来的求解
x_i_plus_n = xi + xn;
% 计算干扰信号和噪声信号的协方差矩阵
R_i_plus_n = (x_i_plus_n * x_i_plus_n')/L;
% 为使矩阵满秩,加上一个小量,基本不影响结果
R_i_plus_n = R_i_plus_n + 1e-6 * eye(N);
% 这里选择方向性约束无畸变约束
f = ones(length(theta_target),1);
% LCMV波束形成,获取加权值
w_opt = R_i_plus_n \ vs * ((vs' * (R_i_plus_n \ vs)) \ f);
%扫描角度设置,从0扫描到180度,这里细分为3600份,也可以分的更细致一点
theta = linspace(0,180,3600);
%生成方向图
v = a(theta);%生成角度扫描的方向矢量,角度从0扫描到180度
B = abs(w_opt' * v);
%生成方向图增益
G_u = 10*log10(B.^2/max(B)^2);
% 后处理绘图
figure;
plot(theta,G_u,"LineWidth",1.5,"Color",[176, 66, 174]/255);%绘制曲线,设置粗细
xlim([0 180]); %限制角度从0到180
ylim([-90 5]); %限制幅度从-90到5
grid on; %绘制网格
xlabel("角度/°");%绘制x轴标签
ylabel("归一化幅度/dB");%绘制y轴标签
title("方向图增益",'FontWeight', 'bold',"FontSize",12);%绘制标题,加粗,设置大小
set(gca,"LineWidth",1);%设置坐标轴粗细
set(gca,"FontSize",12);%设置坐标轴字体大小
set(gca, 'FontWeight', 'bold');%加粗坐标轴文本
% 在干扰方向角度添加直线,方便观察
for k = 1:length(theta_interference)
xline(theta_interference(k), '--', '干扰方向',"Color",[181, 171, 15]/255,"LineWidth",1.5,"FontSize",12,'FontWeight', 'bold');
end
% 在目标方向角度添加直线,方便观察
for k = 1:length(theta_target)
xline(theta_target(k), '-.', '目标方向','LabelVerticalAlignment','bottom',"Color",[201, 88, 38]/255,"LineWidth",1.5,"FontSize",12,'FontWeight', 'bold');
end
legend("LCMV",'','',''); %绘制图例
2.2 仿真LCMV方向图增益
无噪声仿真方向图增益:
含噪声仿真方向图增益,由于噪声的随机性,每次运行出来的图片结果可能有些许差异,但其在目标方向上的最大值增益永远存在,在干扰方向上的零陷抑制永远存在
观察两张方向图增益发现,其都在目标方向80°、100°、120°产生了最大增益,在干扰方向19°、60°、150°产生了零陷抑制,与预期基本吻合
3 典型约束设计
LCMV自适应波束形成实际上也能采取许多不同的约束条件,这会直接导致与
的值
先来回顾一下LCMV的结论公式:
3.1 方向性约束条件
这里介绍一种最简单的无畸变约束,也就是上文仿真中使用的约束条件
无畸变响应也是MVDR波束形成器所采用的准则,如果在LCMV波束形成器中采用无畸变响应约束条件,其与
的值如下:
3.2 零点约束条件
如果已知干扰信号的方向,需要对这几个方向的信号进行抑制,其
与
的值如下:
3.3 导数约束条件
(这部分作者还未完全理解)
通过控制峰值点或零点附近的方向图,去掉参考点敏感的问题
如果目标方向在方向,对主波束的指向进行约束,其
与
的值如下:
4 结语
作者水平有限,如文中有错误,请大家积极评论指出,如文中有不足,请大家积极评论补充。
如有文中程序无法运行,请第一时间告知!