LCMV自适应波束形成的MATLAB仿真

目录

0 前言

1 LCMV自适应波束形成

1.1 介绍

1.2 公式

1.3 慕课LCMV方向图增益

2 MATLAB仿真

2.1 代码

2.2 仿真LCMV方向图增益

3 典型约束设计   

3.1 方向性约束条件

3.2 零点约束条件

3.3 导数约束条件

4 结语


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满足的准则为:

\begin{cases}\min_\omega E\left[P_{i+n}\right]=\omega^HR_{i+n}\omega\\\mathrm{s.t.}\quad\boldsymbol{\omega}^H\boldsymbol{a}\left(\theta_0\right)=1&\end{cases}

        其最终推得的结论:

\mu=\frac{1}{\boldsymbol{a}\left(\theta_{0}\right)^{H}\boldsymbol{R}_{i+n}^{-1}\boldsymbol{a}\left(\theta_{0}\right)}

\omega_{opt}=\mu R_{i+n}^{-1}\boldsymbol{a}\left(\theta_{0}\right)

        然后是LCMV的准则和公式:

\begin{cases}\min_{\omega}\boldsymbol{\omega}^{H}\boldsymbol{R}_{i+n}\boldsymbol{\omega}\\s.t\quad \boldsymbol{\omega}^{H}\boldsymbol{C}=\boldsymbol{f}^{H}\quad C_{N\times L}\quad f_{L\times1}&\end{cases}

       其最终推得的结论:

\omega_{opt}=R_{i+n}^{-1}C\left(C^HR_{i+n}^{-1}C\right)^{-1}f

        经过对比两种波束形成的准则和公式,发现LCMV仅仅是对MVDR准则上进行了多目标的扩展

        式中:R_{i+n}是干扰信号与噪声信号的协方差矩阵

                C是一个由几个方向矢量堆叠起来的矩阵,如果是最简单的情况,使用方向性约束无畸变约束的情况下,如果信号方向分别为$\theta_{0},\theta_1,\theta_{2}$,其C应该为:\boldsymbol{C}=\left[\boldsymbol{a}\left(\theta_0\right),\boldsymbol{a}\left(\theta_1\right),\boldsymbol{a}\left(\theta_2\right)\right]

                f是一个常数矢量,在上述情况下,\boldsymbol{f}=\left[1,1,1\right]^H

        注意:这里的L指的是目标方向的数量,如果有三个目标方向,这里的L就是3,与后文仿真中的L意思完全不同,仿真中的L表示快拍数,即进行了L次阵列采样

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自适应波束形成实际上也能采取许多不同的约束条件,这会直接导致Cf的值

         先来回顾一下LCMV的结论公式: 

\omega_{opt}=R_{i+n}^{-1}C\left(C^HR_{i+n}^{-1}C\right)^{-1}f

3.1 方向性约束条件

        这里介绍一种最简单的无畸变约束,也就是上文仿真中使用的约束条件

        无畸变响应也是MVDR波束形成器所采用的准则,如果在LCMV波束形成器中采用无畸变响应约束条件,其Cf的值如下:

\begin{cases}\boldsymbol{C}=\left[\boldsymbol{a}\left(\theta_0\right),\boldsymbol{a}\left(\theta_0+\Delta\theta\right),\boldsymbol{a}\left(\theta_0-\Delta\theta\right)\right]\\\boldsymbol{f}=\left[1,1,1\right]^H&\end{cases}

3.2 零点约束条件

        如果已知干扰信号的方向$\theta_{1},\cdots,\theta_{M}$,需要对这几个方向的信号进行抑制,其Cf的值如下:

\begin{cases}\boldsymbol{C}=\left[\boldsymbol{a}\left(\theta_0\right),\boldsymbol{a}\left(\theta_1\right),\cdots,\boldsymbol{a}\left(\theta_M\right)\right]\\\boldsymbol{f}=\left[\boldsymbol{1},\boldsymbol{0},\cdots,\boldsymbol{0}\right]^H&\end{cases}

3.3 导数约束条件

       (这部分作者还未完全理解)

        通过控制峰值点或零点附近的方向图,去掉参考点敏感的问题

        如果目标方向在\theta_0方向,对主波束的指向进行约束,其Cf的值如下:

C=\left[1,\boldsymbol{a}\left(\theta_0\right),\boldsymbol{a}^{^{\prime}}\left(\theta_0\right)\right]_{N\times3}

\begin{aligned}&f=\left[1,0,0\right]^{H}\\&f=\left[1,0,\ddot{B}_{c}(\theta)\right]^{H}\\&f=\left[1,0,g_{c}\right]^{H}\end{aligned}

4 结语

        作者水平有限,如文中有错误,请大家积极评论指出,如文中有不足,请大家积极评论补充。

        如有文中程序无法运行,请第一时间告知!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值