【雷达原理】数字波束形成(DBF)

news2024/11/15 13:54:29

目录

  • 一、数字波束形成
    • 1.1 DBF原理
    • 1.2 工程应用实现方式
      • 1.2.1 预先存储权矢量
      • 1.2.2 利用DFT/FFT实现DBF
  • 二、DBF应用
    • 2.1 通道间相干积累
    • 2.2 测量目标角度
  • 三、MATLAB代码

一、数字波束形成

数字波束形成(Digital Beam Forming,DBF) 技术,是针对阵列天线,利用阵列天线的孔径,通过数字信号处理在期望的方向形成接收波束。
DBF的物理意义:虽然单个天线的方向图是全向的,但对阵列多个接收通道的信号,利用数字处理方法,对某一方向的入射信号,补偿由于传感器在空间位置不同而引起的传播波程差导致的相位差,实现同相叠加,从而实现该方向的最大能量接收,完成该方向上的波束形成,来接收有用的期望信号,这种把阵列接收的方向增益聚集在一个指定的方向上,相当于形成了一个“波束”。
可以通过改变权值,使得波束指向不同的方向,并实现波束的扫描。通过多通道的并行处理也可以同时形成多个波束,还可以选择合适的窗函数来降低副瓣电平。

1.1 DBF原理

对于 N N N 个间距为 d d d 的阵元组成的接收阵列,考虑 p p p 个远场的窄带信号入射到该阵列上,假设阵元数和通道数相等,即各阵元接收到信号后经过各自的传输信道送到信号处理器,则接收信号矢量可表示为:
X ( t ) = A ⋅ S ( t ) + N ( t ) ( 1 − 1 ) X(t)=A·S(t)+N(t) (1-1) X(t)=AS(t)+N(t)11
其中, X ( t ) = [ x 1 ( t ) , x 2 ( t ) , . . . . . . , x N ( t ) ] T X(t)=[x_{1}(t),x_{2}(t),......,x_{N}(t)]^T X(t)=[x1(t),x2(t),......,xN(t)]T ,为 N × 1 N×1 N×1 维阵列接收快拍信号矢量,; S ( t ) = [ s 1 ( t ) , s 2 ( t ) , . . . . . . , s p ( t ) ] T S(t)=[s_{1}(t),s_{2}(t),......,s_{p}(t)]^T S(t)=[s1(t),s2(t),......,sp(t)]T ,为 p × 1 p×1 p×1 维信号矢量; N ( t ) N(t) N(t) N × 1 N×1 N×1 维噪声信号矢量; A = [ a ( θ 1 ) , a ( θ 2 ) , . . . . . . , a ( θ p ) ] A=[a(θ_{1}),a(θ_{2}),......,a(θ_{p})] A=[a(θ1),a(θ2),......,a(θp)] N × p N×p N×p 维导向矢量矩阵。

i i i 个信号的导向矢量为:
a ( θ i ) = [ 1 , e j 2 π d s i n θ i / λ , . . . , e j 2 π ( N − 1 ) d s i n θ i / λ ] T a(θ_{i})=[1,e^{j2πdsinθ_{i}/λ},...,e^{j2π(N-1)dsinθ_{i}/λ}]^T a(θi)=[1,ej2πdsinθi/λ,...,ej2π(N1)dsinθi/λ]T
在DBF过程中,假设信号的到达方向为 θ θ θ ,则在该方向的导向矢量为:
a ( θ ) = [ 1 , e j 2 π d s i n θ / λ , . . . , e j 2 π ( N − 1 ) d s i n θ / λ ] T a(θ)=[1,e^{j2πdsinθ/λ},...,e^{j2π(N-1)dsinθ/λ}]^T a(θ)=[1,ej2πdsinθ/λ,...,ej2π(N1)dsinθ/λ]T
由式(1-1)知,对于单一信号源,有 X ( t ) = A ⋅ S ( t ) + N ( t ) X(t)=A·S(t)+N(t) X(t)=AS(t)+N(t),波束形成技术与时间滤波类似,即对采样数据 X ( t ) X(t) X(t) 进行加权求和,加权后的输出信号为:
y ( t ) = W H ⋅ X ( t ) = W H ⋅ a ( θ ) ⋅ s ( t ) + W H ⋅ N ( t ) ( 1 − 2 ) y(t)=W^{H}·X(t)=W^{H}·a(θ)·s(t)+W^{H}·N(t) (1-2) y(t)=WHX(t)=WHa(θ)s(t)+WHN(t)12
式中, W = [ W 1 , W 2 , , . . . , W N ] T W=[W_{1},W_{2},,...,W_{N}]^T W=[W1,W2,,...,WN]T ,为DBF的权矢量。

W = a ( θ 0 ) W=a(θ_{0}) W=a(θ0) ,即对方向为 θ 0 θ_{0} θ0 的信号进行同相相加时,输出 y ( t ) y(t) y(t) 的模值最大。该过程就是利用了波束形成技术实现对方向为 θ 0 θ_{0} θ0 的选择,即空域滤波

等距线阵空域滤波的结构如图1所示,
图1 等距线阵空域滤波结构图
图1 等距线阵空域滤波结构图
对一个阵元数 N = 16 N=16 N=16 等距线阵,阵元间距为半波长,假设波束指向分别为-30°,0°,30°,经过DBF处理后,在指定的方向形成主瓣,其余方向形成旁瓣,数字波束形成方向图如图2所示。
在这里插入图片描述
在这里插入图片描述
图2 数字波束形成方向图
由图2可看出,未加窗时,阵列的波束形成方向图的副瓣电平为-13.15dB,采用对权矢量进行加窗处理,可以降低副瓣电平,例如加泰勒窗后,副瓣电平降低为-30.06dB,但其主瓣的3dB宽度为8.2°,相比未加窗处理的主瓣展宽了1.8°。

接收天线的阵元数不同,数字波束形成方向图也有较大区别,以波束指向为0°,未加窗处理为例,取阵元数分别为 N = 8 、 N = 16 、 N = 32 N=8、N=16、N=32 N=8N=16N=32 时,得到数字波束形成方向图如图3所示。
在这里插入图片描述
由图3可以看出,当阵元数成倍数增加时,其方向图的3dB宽度成倍数减小;旁瓣数量会随着阵元数的增加而增加;副瓣电平均相同。

1.2 工程应用实现方式

1.2.1 预先存储权矢量

采用公式(1-2)进行DBF处理需要 N 2 N^2 N2 次复数乘法运算,当波束扫描的角度间隔较小,即波位数量较多时,计算量是极大的,不利于实时计算。
因此实际工程应用时,要设置合理的波束扫描间隔,并充分挖掘硬件的性能(并行计算),可以通过提前计算出权矢量的数值,预先存储在文件中,在使用时进行导入即可计算。

1.2.2 利用DFT/FFT实现DBF

在不同的方向进行DBF处理时需要采用不同的权矢量,对方向 θ θ θ 的权矢量为:
W ( θ ) = [ 1 , e − j 2 π d s i n θ / λ , . . . , e − j 2 π d s i n θ ( N − 1 ) / λ ] T ( 1 − 3 ) W(θ)=[1,e^{-j2πdsinθ/λ},...,e^{-j2πdsinθ(N-1)/λ}]^T(1-3) W(θ)=[1,ej2πdsinθ/λ,...,ej2πdsinθ(N1)/λ]T13
将DBF处理搜索的波位的角度按下式进行量化:
s i n θ k = λ k N d , k = 0 , 1 , . . . , N − 1 ( 1 − 4 ) sinθ_{k}=\frac{λk}{Nd},k=0,1,...,N-1(1-4) sinθk=Ndλkk=0,1,...,N114
则得到的权矢量为 W ( θ k ) W(θ_{k}) W(θk)
W ( θ k ) = [ 1 , e − j 2 π N k , . . . , e − j 2 π N ( N − 1 ) k ] T ( 1 − 3 ) W(θ_{k})=[1,e^{-j\frac{2π}{N}k},...,e^{-j\frac{2π}{N}(N-1)k}]^T(1-3) W(θk)=[1,ejN2πk,...,ejN2π(N1)k]T13
由式(1-3)可知,DBF的权矢量 W ( θ k ) W(θ_{k}) W(θk) 为离散傅里叶变换(DFT)的旋转因子 W N n k W_{N}^{nk} WNnk ,因此可以利用DFT或者FFT实现DBF处理,同时得到N个波位的DBF结果。

采用快速傅里叶变换(FFT)可以减少DFT的计算时间复杂度,其复数乘法的运算次数为 ( N / 2 ) l o g N (N/2)logN (N/2)logN

案例:
设有32个阵元组成间距为半波长的等距线阵,同一距离单元的两个目标的方位角分别为-20°和30°,对接收信号利用128点FFT进行DBF处理,得到的结果如下:
在这里插入图片描述
x坐标代表角度维,每个点的角度精度为Ag_point =0.8952,仿真计算得到的目标角度为:A1=-Ag_point *(23-1)=-19.6954°,A2=Ag_point *(128-97) =27.75°。与实际设定角度存在一定范围的差异,由角度分辨率有关。

二、DBF应用

2.1 通道间相干积累

2.2 测量目标角度

三、MATLAB代码

1.DBF方向图

clc;
clear;
close all;

%% DBF方向图
N = 16;
d_lambda = 0.5;
theta = (-90:0.1:90);

% 1、不同波束指向
theta0 = -30;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
figure;
plot(theta,20*log10(pattern/max(pattern)),'b-');
hold on;

theta0 = 0;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
plot(theta,20*log10(pattern/max(pattern)),'r-.');
theta0 = 30;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
plot(theta,20*log10(pattern/max(pattern)),'m--');
xlabel('方位/°');ylabel('归一化方向图/dB');xlim([-90 90]);ylim([-50 0]);
legend('\theta=-30','\theta=0','\theta=30');
title(['阵元数N=',num2str(N)]);

% 2、固定波束指向时,对比加窗前后效果
theta0 = 0;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
figure;
plot(theta,20*log10(pattern/max(pattern)),'b-');
hold on;

select = 3;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta,select);
plot(theta,20*log10(pattern/max(pattern)),'k--');
xlabel('方位/°');ylabel('归一化方向图/dB');xlim([-90 90]);ylim([-50 0]);
legend('未加窗','加泰勒窗');
title(['阵元数N=',num2str(N)]);

% 3、固定波束指向时,对比不同阵元数的波束形成方向图
theta0 = 0;
N = 8;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
figure;
plot(theta,20*log10(pattern/max(pattern)),'b-');
hold on;

N = 16;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
plot(theta,20*log10(pattern/max(pattern)),'r-.');
N = 32;
pattern = Antenna_Pattern(N,d_lambda,theta0,theta);
plot(theta,20*log10(pattern/max(pattern)),'k--');
xlabel('方位/°');ylabel('归一化方向图/dB');xlim([-90 90]);ylim([-50 0]);
legend('N = 8','N = 16','N = 32');
title('波束指向0度,未加窗');

2.雷达系统仿真模型

clc;
clear;
close all;

%%  雷达系统仿真模型
setParameter();     %  设置雷达系统参数

global para;
% 设置目标参数
set_TarInfo.tarNum = 2;
set_TarInfo.tar_R0 = [500,500];                 % 目标距离
set_TarInfo.tar_V0 = [0,0];                             % 目标速度
set_TarInfo.tar_Ag = [-20,30];                         % 目标角度
set_TarInfo.Rcs = [1,5];                                % 目标rcs
set_TarInfo.SNR = 10;                                           % 信噪比

% 雷达发射和接收信号模型
para.Tx_Num = 1;        % 发射阵元数目
para.Rx_Num = 32;        % 接收阵元数目
global NumChirp;
NumChirp = 1;
rawData = RadarSigModel_MultiCh(set_TarInfo);

%% 雷达信号处理
global NumADC;

fs = para.fs;
u = para.u;
c = para.c;
Rx_Num = para.Rx_Num;

Nfft1 = 2^ceil(log2(NumADC));                           % 距离维FFT点数
Nfft3 = 128;                                             % 通道间FFT点数
R_point = (fs/Nfft1)*c/(2*u);                           % 距离点精度
Ag_point = 2/Nfft3*180/pi;                              

% 距离维FFT
win1 = hamming(NumADC);       % 加汉明窗
fft_Data = zeros(Nfft1,Rx_Num);
for ii = 1:Rx_Num
	fft_Data(:,ii) = fft(rawData(:,:,ii).*win1,Nfft1);
end

% 角度维FFT
win3 = hamming(Rx_Num);       % 加汉明窗
fft3_Data = zeros(Nfft1,Nfft3);
for jj = 1:Nfft1
	fft3_Data(jj,:) = fft(fft_Data(jj,:).*win3',Nfft3);
end

figure;
mesh(mag2db(abs(fft3_Data)));xlabel('角度维');ylabel('距离维');

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1914722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大数据Spark--核心编程

文章目录 IDEA 配置Spark环境增加scala插件创建Maven项目,配置pom.xml配置log4j.properties Spark 三大数据结构RDDRDD概念核心属性执行原理基础编程RDD创建RDD 并行度与分区RDD转换算子Value类型双Value类型Key - Value类型reduceByKey和groupByKey的区别&#xff…

为什么说java只要还是泛型擦除,就不要吹自己高性能?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!关于“Java只要还是泛型擦除…

内存迎来革命性升级,只装一条就能组成双通道

相信用过台式机的同学或多或少都遇到过一个情况,那就是按下开机键后,除了显示器不亮,哪儿都亮。 拿着自己的故障满世界发帖求助,得到最多的回答就是,断电拔下内存用橡皮擦擦擦金手指再装回。而这样的操作确实能解决大部…

漏洞挖掘 | 记某证书站任意账号接管漏洞

下文中所述漏洞已修复 在前段时间的漏洞挖掘中,上了某证书站,打点的一处逻辑漏洞 访问某一站点,发现了一处登录页 点击登录按钮之后,发现该站点大概率是自写站点,存在逻辑漏洞的可能性大大增大,利用前期信…

西门子S7-1500PLC与ABB变频器通讯及控制程序

文章目录 前言一、硬件组态二、编写通讯程序1.新建数据类型“ABB_UDT”2.新建DB块“变频DB”3.新建FC块“轴流风机” 二、编写模拟量转换程序1.编写速度设定程序2.编写速度反馈程序3.编写电流反馈程序4.编写力矩反馈程序 三、编写启/停控制程序总结 前言 本文基于某实际项目&a…

Linux和Windows配置公钥到服务器上【免密登录/传输文件】

文章目录 1.Windows配置公钥到服务器上1.1.生成SSH密钥对(如果尚未生成):1.2.复制公钥到远程服务器:1.3.手动复制公钥到远程服务器:1.4.测试SSH连接: 2.Linux配置公钥到服务器上2.1生成SSH密钥对&#xff0…

开发个人Go-ChatGPT--6 OpenUI

开发个人Go-ChatGPT–6 OpenUI Open-webui Open WebUI 是一种可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容的 API。 功能 由于总所周知的原由,OpenAI 的接口需要密钥才…

手撸俄罗斯方块(五)——游戏主题

手撸俄罗斯方块(五)——游戏主题 当确定游戏载体(如控制台)后,界面将呈现出来。但是游戏的背景色、方块的颜色、方框颜色都应该支持扩展。 当前游戏也是如此,引入了 Theme 的概念,支持主题的扩…

iOS UITableView自带滑动手势和父视图添加滑动手势冲突响应机制探索

场景 我们有时候会遇到这样的一个交互场景:我们有一个UITableView 放在一个弹窗中,这个弹窗可以通过滑动进行展示和消失(跟手滑动的方式),然后这个UITableView放在弹窗中,并且可以滚动,展示一些…

成都晨持绪:抖音电商带货需要交钱吗

在抖音这个充满创意与可能的平台上,电商带货成为了一种新兴而又时尚的职业。然而,伴随着无数的点击与转发,有一个问题始终萦绕在人们心头——抖音电商带货需要交钱吗? 如画卷展开,抖音平台以其独特的算法和庞大的用户基础构建了一…

spark shuffle写操作——UnsafeShuffleWriter

PackedRecordPointer 使用long类型packedRecordPointer存储数据。 数据结构为:[24 bit partition number][13 bit memory page number][27 bit offset in page] LongArray LongArray不同于java中long数组。LongArray可以使用堆内内存也可以使用堆外内存。 Memor…

构建高精度室内定位导航系统,从3DGIS到AI路径规划的全面解析

室内定位导航系统是一种利用多种技术实现室内精准定位和导航的智能系统,即便没有卫星信号,也能实现精准导航。维小帮室内定位导航系统是基于自研的地图引擎与先进定位技术,结合智能路径规划算法,解决了人们在大型复杂室内场所最后…

python怎么判断字符串以什么结尾

在python编辑器中新建一个data.py。 写上自己的注释。 然后新建一个变量testname。 利用endswith来判断字符串是不是以“ar”结尾。 将结果打印出来。 选择“run”->“run”。 运行该程序,如果是,就会返回true。

深度探讨:无法恢复主文件表的挑战与解决方案

在数字时代,数据的安全与恢复成为了不容忽视的重要议题。其中,主文件表(Master File Table, MFT)作为文件系统的核心组件,一旦受损或无法恢复,将直接导致数据访问的障碍,给用户带来巨大困扰。本…

Vue在一个页面调用另一个同级页面的方法

1、建个中转站 2、然后在两个页面都引入它,注意引入路径。 import Utils from src/utils/way 3、调用方的写法 //eg :Utils.$emit(demo, msg) 4、被调用方的写法 //eg :Utils.$on(demo, val>{})

Playwright使用教程【附爬取Leetcode题目URLs以及有道翻译小软件】

前言 playwright是微软设计的一款工具,可以爬取网页,还可以自动化测试自己编写的网站,而且不像bs4、request编写爬虫那么复杂,也不需要考虑反爬技术,只需要知道最基础的前端知识,就可以高效、便捷的编写爬…

【算法训练记录——Day43】

Day43——动态规划Ⅴ 1.kamacoder52_携带研究材料2.leetcode518_零钱兑换Ⅱ3.leetcode377_组合总和Ⅳ 完全背包 1.kamacoder52_携带研究材料 思路:这里每种材料可以选择无数次,因此属于完全背包, 首先回顾一下01背包的核心代码 for(int i 0…

vue3 + tsx 表格 Action 单独封装组件用法

前言 先上图看右侧列 action 的 UI 效果: 正常来说,如果一个表格的附带 action 操作,我们一般会放在最右侧的列里面实现,这个时候有些UI 框架支持在 SFC 模板里面定义额外的 solt,当然如果不支持,更通用的…

医疗器械网络安全 | 漏洞扫描、渗透测试没有发现问题,是否说明我的设备是安全的?

尽管漏洞扫描、模糊测试和渗透测试在评估系统安全性方面是非常重要和有效的工具,但即使这些测试没有发现任何问题,也不能完全保证您的医疗器械是绝对安全的。这是因为安全性的评估是一个多维度、复杂且持续的过程,涉及多个方面和因素。以下是…

7.10号小项目部分说明

总体说明 糖锅小助手 我这次主要对上次糖锅小助手界面添加了一个侧边栏(侧边输入框放置了三个按钮,可以跳转到其他ai聊天界面,还可以退出聊天界面回到登录界面)和一个日期输入框(日期输入框获取时间,根据时…