# sensorLearning **Repository Path**: babakara/sensor-learning ## Basic Information - **Project Name**: sensorLearning - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-22 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 阵列信号处理与波束形成 ## matlab官方视频教程 [这里是视频连接](https://www.bilibili.com/video/BV17z421R7kN?spm_id_from=333.788.videopod.sections&vd_source=b253d3d5eedc6e2f23384942db4084d8) 传统的雷达使用蝶形天线,类似聚光,本来就是电磁波,因此双曲线阵面聚焦波束平行超一个方向,形成了具有指向性的窄波束,但是这样要改变方向就只能通过旋转天线实现波束方向的变化。机械结构体积大、存在磨损和使用寿命问题,过快的旋转难以实现。 于是,就有了相控阵雷达,就是通过阵列的方式实现窄波束。 通过数字信号处理方法,可以不用旋转机械,而是通过阵列的方式实现波束方向的变化。这里用各向同性辐射图的单阵元来做,首先组成一个线阵,阵元间距为 $$\lambda/2$$ 就会在垂直方向形成**主波束**,两侧形成**旁瓣**,通过matlab的sensorArrayAnalyzer进行模拟,随着阵元数量增加主波束的增益得到加强,旁瓣增益减弱,波束变窄,旁瓣变多。 ![线阵8阵元](img/lineArray_8.png) ![线阵16阵元](img/lineArray_16.png) 3d视角,信号是蜗牛形状的。那么如果我们用面阵是否可以实现X轴和Z轴都聚焦呢,让主波束更贴近Y轴。 ![线阵16-3d](img/lineArray_16_3d.png) 面阵16*16 ![面阵16-16-3d](img/URA_16_16_3d.png) ![面阵16-16-2d](img/URA_16_16_2d.png) 除了间距,现在的基元都是同相的. 最后,还有一个要点,就是阵列中的基元相位改变,如果相位改变,就能够旋转主波束了. # 第二节 通过调整基元的赋值可以调整旁瓣数量和强度, 对波束和旁瓣进行调整. 增益和相位构成了信号的两个特征参数.并用复数表示 ![复数信号](img/iq.png) 用n*2的array表示各基元的增益和相位,作为权重矩阵. MVDR算法,通过最大化主波束增益,保持信号方向角,同时抵抗其他方向噪声,如何设定基元的权重. ![mvdr](img/mvdr.png) # 针对通信系统的数字波束成型 MIMO phasearray 利用多路径效应 多信道波束成型 ![多信道](img/多信道.png) 多个路径发射相通的信号,来增强接收器的信号强度 5G可以发射数百个信道,同时指向数百个方向发射信号,这样某些被阻断了,其他方向仍然有信号. ![城市中信道](img/多信道2.png) ![折中方案](img/折中.png) # 针对雷达系统的波束成型 2D阵列,实现两个角度的调整. 相控阵, 像探照灯一样大范围扫描 相控阵, 数字波束形成 可以控制每个RF射频链的相位,增益和信号形状. 雷达方向分辨率和波束宽度有关 雷达距离分辨率和频率有关 自适应波束形成, 宽波束快速扫描,扫描到物体了调成窄波束跟踪 MPVR,多功能相控阵 # 阵列DOA 对于 512 元这样的大规模线阵,计算目标方位角(DOA, Direction of Arrival)的核心物理基础是**空间相位差**。由于目标回波到达不同阵元的时间(路径)存在微小差异,这种距离差在相干系统中就体现为相位差。 ### 1. 几何原理与数学推导 假设这是一个均匀直线阵(ULA),阵元间距为 $d$,信号波长为 $\lambda$,目标信号与阵法法线的夹角为 $\theta$。 1. **路径差(Path Difference):** 相邻两个阵元之间,信号传播的路径差为 $\Delta L = d \sin\theta$。 2. **相位差(Phase Difference):** 路径差对应的相位变化 $\Delta \phi$ 为: $$\Delta \phi = \frac{2\pi}{\lambda} \cdot \Delta L = \frac{2\pi d \sin\theta}{\lambda}$$ 3. **方位角解算:** 通过测量相邻阵元的相位差 $\Delta \phi$,可以反推方位角 $\theta$: $$\sin\theta = \frac{\Delta \phi \cdot \lambda}{2\pi d} \implies \theta = \arcsin\left( \frac{\Delta \phi \cdot \lambda}{2\pi d} \right)$$ ### 2. 工程实现:从“相位差”到“空间 FFT” 虽然理论上可以用两个阵元的相位差来计算,但在 **512 线阵**这种高分辨率系统中,工程上很少只对比两个点,而是利用全部 512 个数据点进行**空间 FFT(Angle-FFT)**或**数字波束形成(DBF)**。 这是因为: * **信噪比提升:** 512 个阵元相干叠加,可以获得 $10\log_{10}(512) \approx 27\text{dB}$ 的阵列增益。 * **分辨率:** 512 线阵的角分辨率极高,大约为 $\Delta \theta \approx \frac{0.886 \lambda}{N d \cos\theta}$。 **计算流程:** 1. **数据排列:** 将 512 个接收通道在同一时刻的复数 IQ 数据排成一列向量 $\mathbf{X} = [x_1, x_2, \dots, x_{512}]^T$。 2. **加窗(Windowing):** 为了抑制空间旁瓣(防止强目标干扰弱目标),通常会加切比雪夫窗或汉明窗。 3. **空间 FFT:** 对该向量进行 512 点(或补零至 1024 点以获得更平滑的曲线)的 FFT。 4. **峰值搜索:** 找到 FFT 结果中能量最大的点,记其索引为 $k_{max}$。 5. **映射角度:** FFT 的频率轴对应的是空间频率,索引 $k$ 与角度 $\theta$ 的关系为: $$\sin\theta = \frac{k_{max}}{N} \cdot \frac{\lambda}{d}$$ (注:通常设计 $d = \lambda/2$ 以避免相位模糊)。 ### 3. 关键工程挑战 * **相位模糊(Ambiguity):** 如果阵元间距 $d > \lambda/2$,会出现“栅瓣”,即同一个相位差对应多个可能的角度。 * **通道不一致性:** 实际硬件中,512 个通道的电缆长度、放大器增益和相位偏置不可能完全相同。在进行角度计算前,必须进行**通道校准**,补偿每个通道自带的初始相位 $\phi_{offset}$。 * **多径干扰:** 在水面环境(USV)中,水面反射会形成干涉,导致相位中心偏移。此时简单的 FFT 可能会失效,需要使用更高级的空间谱估计算法。 ## 阵列流型矢量 在声呐和雷达阵列信号处理中,array_manifold 函数计算的是阵列流型矢量(Array Manifold Vector),也常被称为导向矢量(Steering Vector)。 针对你猜测的“放在循环内部是不是某种加和公式”,这里澄清一下:它本身不是加和,而是计算“相位补偿”。 真正的“加和”(空间波束合成)发生在后面的矩阵乘法 ```matlab SP1(ii,:) = steer(ii,:,1)*X_filterd1 ``` 中。 以下为你详细拆解其背后的物理意义、理论公式以及与代码的对应关系。一、 物理意义:什么是阵列流型(导向矢量)? 当远场的目标发出声波(平面波)到达阵列时,由于各个基元(水听器)在空间中的物理位置不同,声波到达不同基元会存在波程差(也就是时间差)。 在窄带信号处理中,这个时间差表现为相位差。 array_manifold 函数的作用就是:针对某个特定的波束扫描方向(DOA),计算出声波到达所有基元相对于“参考点”(代码中选定为第1个基元)的理论相位差。 有了这个相位差,接收端在做波束形成时,就可以把这些相位“反向补偿”回去。当所有基元的相位被补偿到一致时,信号就会同相叠加(相干积累),从而形成一个指向该方向的“波束”。二、 理论公式(对应声呐信号处理文献)在《声呐信号处理引论》(李启虎)或经典教材《Optimum Array Processing》(H.L. Van Trees)中,任意平面阵(二维阵列)的导向矢量推导如下: 1. 空间几何关系假设声波是一束平面波,来自方位角 $A$(Azimuth),俯仰角 $E$(Elevation,代码中固定为 $\pi/2$,即目标在水平面内)。波的传播方向单位矢量 $\vec{u}$ 可以表示为: $$\vec{u} = [\cos A \sin E, \sin A \sin E, \cos E]^T$$ 因为水平面内 $E = \pi/2$,所以 $\sin E = 1, \cos E = 0$,上式简化为: $$\vec{u} = [\cos A, \sin A]^T$$ 1. 波程差与相位差设参考基元在坐标原点 $(0,0)$,第 $i$ 个基元的物理坐标为 $\vec{r}_i = [x_i, y_i]^T$。声波到达第 $i$ 个基元相对于原点的空间波程差(距离)为位置矢量在传播方向上的投影: $$d_i = \vec{r}_i \cdot \vec{u} = x_i \cos A + y_i \sin A$$ 对应的时间延迟 $\tau_i = d_i / c$。 在频域,时间延迟等价于乘以一个复指数相位偏置。对于波长为 $\lambda$ 的信号(波数 $k = 2\pi/\lambda$),相位差 $\Delta \phi_i$ 为: $$\Delta \phi_i = -k d_i = - \frac{2\pi}{\lambda} (x_i \cos A + y_i \sin A)$$ 3. 最终的阵列流型矢量将包含 $N$ 个基元的阵列的相位差写成向量形式,就是标准的阵列流型矢量 $\mathbf{a}(A)$: $$\mathbf{a}(A) = \begin{bmatrix} 1 \\ \exp\left(-j \frac{2\pi}{\lambda} (x_2 \cos A + y_2 \sin A)\right) \\ \vdots \\ \exp\left(-j \frac{2\pi}{\lambda} (x_N \cos A + y_N \sin A)\right) \end{bmatrix}$$ 宽带多通道(5频带)系统。不同频带的波长 $\lambda$ 不同,要想让 5 个频带的信号都能准确指向同一角度,每个频段需要的相位补偿量是不同的。这个大循环的目的,是提前建表(Pre-computation):将 512 个波束、5 个频段对应的“空间导向矢量($a$)”与“幅度修正窗($win$)”融合,算出一个巨大的静态权重矩阵 steer。真正的波束加和(Spatial Summation),也就是著名的 $\mathbf{w}^H \mathbf{X}$ 操作,发生在后面这一步: ```matlab % 这里的矩阵乘法,就是将 256 个基元接收到的信号与权值相乘并累加 SP1(ii,:) = steer(ii,:,1) * X_filterd1; ``` ## 加权和阵列流型的计算 直接回答你的问题:**是的,在你目前给出的代码框架中,加权 $w$ 和阵列流型矢量 $a$ 都是【完全与接收信号无关的】(Data-Independent / Signal-Independent)。** 不过,要稍微纠正一点:它们并不**仅仅**和弧形阵的几何形状相关,而是由**阵列形状、物理声学参数和指定的空间网格**共同决定的。 我们可以把这种机制称为**“静态空间预滤波”**。下面为你详细拆解它们的依赖关系,以及这种设计的工程意义。 ### 1. 它们具体依赖于什么? 既然与信号(代码中的 `X_filterd`)无关,那它们到底由什么决定? * **阵列流型矢量 $a$(相位补偿)取决于:** 1. **阵列物理拓扑:** 也就是你导入的 `array_rev`(基元的 $x, y$ 坐标)。 2. **空间扫描方向:** 当前想要指向的波束角度 `DOA_p(i)`。 3. **系统工作频率:** 对应的声波波长 $\lambda$。 * **结论:** $a$ 纯粹描述了**空间几何关系与物理声场法则**,只要阵列造好了、频率定下来了,它就是一个纯数学的客观事实。 * **加权 $w$(幅度非对称补偿)取决于:** 1. **阵列物理拓扑:** 阵元的横向坐标分布 `s`。 2. **空间扫描偏角:** 当前扫描角偏离中心法线的角度 `ang = doa_deg - 90`。 3. **人为预设的经验参数:** 比如衰减系数 `alpha_max`、非线性增长率 `p` 以及基础的汉宁窗。 * **结论:** $w$ 纯粹体现了**工程师为了克服弧形阵阴影区和孔径投影畸变而设计的一种“补偿策略”**。 ### 2. 为什么设计成“与信号无关”?(工程意义) 在声呐工程实现中,将 $w$ 和 $a$ 设计为与信号无关具有极其重要的实战价值: * **可以离线建表(Pre-computation):** 正如你在代码中看到的,关于 $w$ 和 $a$ 的计算被放在了处理实时数据 `X` 之前的那个嵌套大循环里。这意味着,在声呐系统开机时,或者在编译阶段,就可以提前把所有 512 个波束、5 个频段的权重矩阵 `steer` 全部计算好并存在内存中。 * **计算极其轻量、实时性极高:** 到了真正处理流式声学数据(在线阶段)时,代码只需要做极其简单的矩阵乘法:`SP1(ii,:) = steer(ii,:,1) * X_filterd1;`。这种确定性的乘加运算(MAC)非常适合在 GPU、FPGA 或 DSP 上进行大规模并行加速(这就是为什么你的 CUDA 验证结果能跑得通且快的原因)。 ### 3. 拓展:什么才是“与信号相关”的加权? 为了让你对这个概念有更立体的理解,对比一下学术界常说的**自适应波束形成(Adaptive Beamforming, ABF)**。 在自适应阵列处理(如著名的 **MVDR / Capon 算法**)中,加权矢量 $\mathbf{w}$ 就**是与信号高度相关的(Data-Dependent)**。它的核心思想是:根据当前水下环境中实际接收到的干扰和噪声,实时改变自己的窗函数形状。 在 MVDR 中,权重的计算公式通常是: $$\mathbf{w}_{\text{MVDR}} = \frac{\mathbf{R}^{-1} \mathbf{a}}{\mathbf{a}^H \mathbf{R}^{-1} \mathbf{a}}$$ 这里的 $\mathbf{R}$ 就是**接收数据协方差矩阵(Data Covariance Matrix)**,是由实测信号 $X$ 实时算出来的。 **对比总结:** * **你的代码(常规波束形成 CBF):** “不管环境里有什么干扰,我只按物理几何算好的权重,死死盯住我要看的方向。”(稳健、计算快,但波束较宽,旁瓣固定)。 * **自适应波束形成(ABF):** “我先听一下当前环境,如果左边有一个强干扰源,我就临时改变权重 $w$,在左边砸出一个‘零陷’(Nulling),把干扰屏蔽掉。”(分辨率高、抗干扰强,但计算量大,求逆矩阵容易发散)。 在阵列信号处理(特别是雷达和水声/声呐领域)中,用机器学习(ML)或深度学习(DL)取代传统的 PSF 建模和 CLEAN/去卷积算法,是近五六年来最火热的“革命性”方向。 学术界目前主要分为三大流派。为了方便你查阅和跟进,我将这些方法背后的核心支撑理论、代表性高影响力论文以及持续深耕的国内外顶尖团队为你梳理如下: ### 一、 三大主流技术流派与支撑论文 #### 1. 模型驱动的深度展开网络(Deep Unfolding / Unrolled Networks) 这是目前阵列信号处理界**最受推崇**的方法。它不是把网络当成纯粹的“黑盒”,而是将传统的迭代优化算法(比如 CLEAN 算法、ISTA 稀疏恢复算法)的每一步迭代,直接“展开”成神经网络的一层。 * **为什么好:** 它保留了传统物理模型的解释性(不用盲目猜 PSF),但利用数据训练代替了传统算法中人工设定的步长(如你代码里的 `loop_gain`)和阈值,收敛极快,且彻底消除了残余旁瓣。 * **支撑论文:** * *Algorithm Unrolling: Interpretable, Efficient Deep Learning for Signal and Image Processing* (IEEE Signal Processing Magazine, 2020) —— 这是一篇必须精读的综述,详细讲解了如何把迭代物理算法变成神经网络。 * *Learned ISTA (LISTA)* —— 早期起源,现已被广泛爆改为处理复数阵列信号的模型。 * *Deep Unfolding of Atomic Norm Minimization for DoA Estimation* —— 解决“网格失配”问题(传统 CLEAN 强依赖于你划分的 512 个波束网格,目标不在网格中心就会出现能量泄漏),实现连续空间的高分辨估计。 #### 2. 数据驱动的超分辨与端到端 CNN(Data-Driven Super-Resolution) 把阵列接收到的多通道数据(协方差矩阵或原始复数 I/Q 数据)直接作为一张“图”喂给卷积神经网络(CNN),让网络直接输出干净的空间谱或目标的角度坐标,完全抛弃 PSF 的概念。 * **为什么好:** 极度粗暴且有效。在极低信噪比和强多径干扰(相干源)下,传统算法全军覆没,而训练好的 CNN 依然能稳健输出。 * **支撑论文:** * *DeepMUSIC: Multiple Signal Classification via Deep Learning* (IEEE Sensors Journal) —— 极具代表性的跨界之作,用深度学习重构了传统的 MUSIC 算法空间谱。 * *Deep Learning for Direction of Arrival Estimation: A Review of Hybrid Model-Data Fusion* (最新 SPIE 等顶会的综述) —— 探讨了从传统 CNN 到 YOLO-DOA 等类似目标检测的端到端框架。 #### 3. 深度图像先验与生成式重建(Deep Image Prior, DIP / GANs) 完全无监督。不需要海量的“脏图-干净图”数据集对,直接利用一个随机初始化的神经网络的结构偏置,硬生生把单张脏图中的旁瓣和噪声给过滤掉。 * **为什么好:** 解决了国防、水下领域**“缺乏真实标签数据”**的死穴。 * **支撑论文:** * *Deep Image Prior* (CVPR 2018) —— 计算机视觉领域的开山之作,后被大量引入雷达和声呐的单快拍去卷积操作。 * *ISAR Super-Resolution and Clutter Suppression Using Deep Learning* (MDPI) —— 探讨了在强杂波和噪声下,如何用残差网络(ResNet)保持雷达/声呐复数信号的幅相完整性并实现超分辨。 --- ### 二、 值得重点关注的顶尖团队(按领域) 考虑到你在从事 USV(无人船)和水下算法研发,建议你在 Web of Science 或 IEEE Xplore 上重点追踪以下课题组的最新动态: #### 🌎 国际顶尖团队(偏基础理论与雷达) * **Yonina C. Eldar 团队 (Weizmann Institute of Science, 以色列):** * **地位:** “深度展开(Deep Unfolding)”在信号处理领域的绝对权威。如果你想研究如何把严谨的数学模型和深度学习结合,看她的文章就够了。 * **Visa Koivunen 团队 (Aalto University, 芬兰) & Geert Leus 团队 (TU Delft, 荷兰):** * **地位:** 传统阵列信号处理的泰斗,近年来大规模转向利用深度学习解决稀疏阵列(类似你代码中大偏角导致的等效稀疏)和网格失配问题。 * **H. V. Poor 团队 (Princeton University, 美国):** * **地位:** 信息论与信号处理大牛,近年来在 DeepMUSIC 等纯数据驱动的阵列参数估计上有很多高引论文。 #### 🇨🇳 国内领军团队(高度契合你的应用场景) 国内在**水声/雷达 + 深度学习**的结合上处于世界绝对的第一梯队,非常贴近工程落地: * **西安电子科技大学(雷达信号处理全国重点实验室):** * **核心人物:** 廖桂生教授、黄磊教授等团队。 * **方向:** 他们在雷达超分辨成像、基于深度学习的 DOA 估计、抗干扰方面有极多实战型成果,其网络架构经常被平移到水声领域。 * **哈尔滨工程大学(水声工程学院):** * **地位:** 国内水声领域的“黄埔军校”。 * **方向:** 强烈建议检索该校关于**“水声目标高分辨方位估计”、“基于 CNN/深度学习的声呐图像增强”**的硕博论文,里面有很多针对实际海试数据的去旁瓣和去多径 DL 算法细节。 * **西北工业大学(航海学院):** * **方向:** 同样是水下兵器和水声工程的核心力量,常年发表基于机器学习的阵列信号处理、水下多目标跟踪(结合强化学习)的论文。 * **清华大学(通信领域):** * **核心人物:** 戴凌龙教授团队。 * **方向:** 虽然主要做 5G/6G Massive MIMO(大规模天线阵列),但他们将深度学习用于超大型阵列波束赋形和信道估计的代码开源度极高,核心数学原理与你的 256 基元水声弧形阵列完全互通。 **给你的研发建议:** 纯黑盒的 CNN 需要你用 Gazebo/ROS 跑出海量且完备的水下回波数据集(这通常很难穷尽所有海底地形),而 Deep Unfolding 只需要你把现在的 `PSF` 模型和 `loop_gain` 迭代塞进 PyTorch,将其转化为可学习的参数,网络极其轻量,非常适合部署在你们目前使用的 Orin NX 等边缘计算平台上。