前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >阵列波束形成与维纳滤波

阵列波束形成与维纳滤波

作者头像
不去幼儿园
发布2024-12-03 12:47:19
发布2024-12-03 12:47:19
15200
代码可运行
举报
文章被收录于专栏:强化学习专栏强化学习专栏
运行总次数:0
代码可运行

本篇文章是博主在通信等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对通信等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在通信领域笔记: 通信领域笔记(7)---《阵列波束形成与维纳滤波》

阵列波束形成与维纳滤波

一、阵列波束形成基础知识

波束形成是维纳滤波器理论在空间阵列信号处理中的应用形式。现通过对比,将来源于时间信号处理的许多方法方便地移植到空间信号处理领域。

波束形成的目的就是从天线阵列接收到的信号来重构出源信号。要准确地重构出源信号,一般来说要注意到两个方面:一是增加期望信号在接收信号中的贡献,即要将天线阵列方向图的主瓣对准期望信号的来波方向:二是抑制干扰信号在接收信号中的作用,即尽可能在干扰来波方向上形成很深的零点。阵列波束形成的示意图如图 1 所示。

波束形成的基本思想就是将各阵元的输出信号进行加权求和,使阵列波束在期望方向上形成峰值,在干扰方向上形成零点。

1.基本假设

信号通过无线信道的传输情况相当复杂,其严格的数学模型的建立需要对信道进行完整地描述,但是这样处理问题往往非常复杂,不利于考查问题的实质。为了得到比较简洁的数学模型,做了以下假设:

关于天线阵列的假设 天线阵列由位于空间已知坐标处的无源阵元按一定的形式排列而成。假设阵元的接收特性仅与其位置有关而与尺寸无关,阵元本身尺寸大小为零,即可等效成一个点,并且阵元都是全向阵元,增益相等,都为 OdB.

相互之间的互耦忽略不计。阵元接收信号时将产生噪声,假设其为加性高斯白噪声,各阵元上的噪声相互统计独立,且噪声与信号统计独立。

关于信号源的假设 假设空间信号的传播介质是均匀且各向同性,电磁波在介质中将按直线传播。另外,我们只考察阵列处于空间信号源辐射的远场中的情况,因此信号到达阵列时可以看作为一束平行的平面波,信号到达阵列各阵元的不同延时仅由阵列的几何结构和信号的来波方向决定。


二、维纳滤波与波束形成

一个天线阵列可以用来接收单个信号,也可以用来接收多个信号,即多波束形成。这里考察最简单的情形:线阵等距,只有一个入射信号,没有干扰信号,并且阵元背景噪声为相互独立高斯白噪声,且与信号独立。

容易看出,在这种情况下,最优权值的表示相当简单,就是阵列方向向量,仅仅幅度有了变化。值得注意的是,这里我们做了一系列很强的假设才得到如此简明的表达形式,如信号的平稳性,相互独立的等功率高斯白噪声,以及信噪声不相关等等。在实际应用中,这此假设往往不能满足,还需要其他一些处理方法。


三、MVDR 波束形成器

MVDR 波束形成器即最小方差无畸变响应波束形成器(minimum variance distortionless response),也称作 Capon 波束形成器,最早是由 Capon 提出的。

由此优化问题的数学模型可知,如果阵列接收到的只有期望信号和噪声,最优权值的方向图将在期望方向上形成一定高度的主瓣,同时尽量压低旁瓣,

抑制 噪声功率;如果同时有方向性干扰存在,则最优权值的方向图将在干扰方向上形 成一个零点,从而抑制干扰功率。 MVDR 波束形成器能够自适应地抑制干扰,并且同传统的波束形成器相比具 有更高的空间分辨率,因此得到很广泛的应用。下面我们考查一下 MVDR 波束形成器和维纳滤波之间的联系。

维纳滤波是极小化均方误差:

同解。上式即为 MVDR 波束形成器的优化目标函数。因此 MVDR 波束形成器实际是一个加了约束条件的维纳滤波器,由此也可进一步体会到维纳滤波器具有的广泛性意义。

依据案例背景,设计一个 MVDR 波束形成器,仿真实现从天线阵列接收信号来重构出源信号的过程。采用等距线阵,只有一个入射信号,没有干扰信号,并且阵元背景噪声为相互独立高斯白噪声,且与信号独立。信号的入射方向为信号的入射方向为 0 ,阵元个数 M,阵元间距 d,期望信号为 s(t) 等自行设置。


四、 MVDR 波束形成器 Matlab 仿真

4.1 MATLAB代码实现

(1)参数设置

代码语言:javascript
代码运行次数:0
复制
% 参数 Parameters
M   = 12;               % 阵元数目
c   = 3e8;              % 光速
f   = 10e9;             % 频率
l   = c/f;              % 波长
d   = l/2;              % 阵元间隔
phi = [10,20,30,40]*pi/180;   % 信号角度
Kt  = 1;                % 目标信号数目
snr = 20;               % 信噪比
inr = 10;               % 干噪比
Ac  = 3601;             % 角度采样数

(2)计算阵元位置和方向矩阵

代码语言:javascript
代码运行次数:0
复制
% 计算阵元位置
R = d * (0:M-1)';

% 计算方向矩阵
K = length(phi);        % 信号数目
A = zeros(M,K);         % 初始化方向矩阵
for k = 1:K
    for m = 1:M
        A(m,k) = exp(1j * 2 * pi * R(m,1)* sin(phi(k))/l);
    end
end

(3)构造从天线阵列接收信号

代码语言:javascript
代码运行次数:0
复制
% 构造信号
Ts = 16;              % 快拍数  
Kj = K - Kt;            % 干扰信号数目
s = zeros(K,Ts);        % 信号
sd = zeros(1,Ts);       % 期望信号
for k = 1:Kt
    for i = 0:Ts-1
        s(k,i+1) = sqrt(10^(snr/10)) * exp(1j * 2 * pi * f * i/(2*Ts)); 
        % s(k,i+1) = exp(1j * 2 * pi * f * i/(2*Ts)); 
    end
     awgn(s(k),snr)
    sd = sd + s(k,:);
end
sd = sd/Kt;
if Kj ~= 0
    for k = Kt+1:K
        for i = 0:Ts-1
            s(k,i+1) = sqrt(10^(inr/10)/2) * (randn(1) + 1j*randn(1)) * exp(1j * 2 * pi * f * i/(2*Ts));
            % s(k,i+1) = exp(1j * 2 * pi * f * i/(2*Ts));
        end
    end
end

(4)设计 MVDR 波束形成器重构出源信号

代码语言:javascript
代码运行次数:0
复制
% 接收数据向量
n = (randn(M,Ts)+1j*randn(M,Ts))/sqrt(2);
x = A * s+n;

% MVDR
J = A(:,Kt+1:K) * s(Kt+1:K,:);
Rnj = 1/Ts * (J*J'+n*n');
Rpriv = pinv(Rnj);%求伪逆
w = Rpriv*A(:,1)/(conj(A(:,1).')*Rpriv*A(:,1));

(5)绘图

代码语言:javascript
代码运行次数:0
复制
% 方向图
theta = linspace(-pi,pi,Ac);
y = zeros(1,Ac);
for i = 1:Ac
    a = exp(1j * 2 * pi * R(:,1)* sin(theta(i))/l);
    y(i) = conj(w.') * a;
end

ydB = 20*log10(abs(y)/max(abs(y)));

p=find(ydB==max(ydB));
% 绘图
figure('name','波束方向图','color',[1,1,1]);
set(gcf,'position',[458,342,290,200])
plot(theta * 180/pi,ydB,'color','b','linestyle','-','linewidth',1);
grid on
xlim([-90,90]);
ylim([-60,0]);
set(gca,'xtick',-90:30:90);
set(gca,'FontName','Times New Roman','FontSize',10.5);
xlabel('Direction of Arrival of the Signal (Degree)','FontSize',10.5);
ylabel('Magnitude Response (dB)','FontSize',10.5);
text(theta(p) * 180/pi,ydB(p),['(',num2str(theta(p) * 180/pi),',',num2str(ydB(p)),')'],'color','r'...
    )

4.2 基本参数下 Matlab 仿真结果

在阵元个数 M =12、阵元间距 d=1/2,信号角度 phi = [10,20,30,40]快拍数为1024 条件下的仿真结果,其中 10 度方向为目标信号,将其他方向的信号当做干扰信号。

首先生成目标信号,在信噪比为 0dB 情况下第一个阵元接收到的信号如图所示,可以看到信号到达阵元时由于噪声的影响,波形发生了明显的畸变,起伏明显。

阵列波束形成后得扫描得到的方位角如下图 4-2 所示,在目标信号方向得到的幅度最大,符合波束形成预期结果。

转换为 dB 表示后,可以明显看到整列波束形成后,在干扰信号的来波方向上产生了很深的零点,如图所示。

4.3 改变阵元个数

4.4 改变阵元间距

4.5 改变信号角度

五、 小结

通过 MVDR 波束形成器 Matlab 仿真,我们使用 MVDR 波束形成器能够有效地重构出源信号,验证了其在单入射、无干扰情况下的性能。通过调整阵元个数 M 和阵元间距 d,我们观察到对波束形成器性能的影响,进一步优化了系统的工作效果。同时,我们还分析了期望信号入射方向对波束形成器性能的影响,从而深入理解了算法在不同条件下的适用性。

实验结果表明,在阵元数量越多,波束形成后得到的方向谱估计越准确,并且分辨率越高,同时计算量以及系统的复杂程度也会增大;另外阵元之间的间距与会影响波束形成的结果,因为阵元之间的间距会影响信号到达不同阵元时的相位,间距过大时,会产生错误估计,间距过小会导致各阵元接收到的信号相位差距不大,导致分辨率降低,因此一般情况下都选择阵元间距为波长的一半。快拍数也会对波束形成的结果产生,很大的影响,采样次数太少直接导致结果准确率大大下降,过多的采样次数会增加运算量,因此需要找到一个合适的快拍数,平衡准确率和运算量之间的关系。

文章若有不当和不正确之处,还望理解与指出。由于部分文字、图片等来源于互联网,无法核实真实出处,如涉及相关争议,请联系博主删除。如有错误、疑问和侵权,欢迎评论留言联系作者,或者私信联系作者。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 阵列波束形成与维纳滤波
    • 一、阵列波束形成基础知识
      • 1.基本假设
    • 二、维纳滤波与波束形成
    • 三、MVDR 波束形成器
    • 四、 MVDR 波束形成器 Matlab 仿真
      • 4.1 MATLAB代码实现
    • 4.2 基本参数下 Matlab 仿真结果
    • 五、 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档