You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何查找3D辐射图的主瓣与旁瓣峰值点

二维辐射方向图主瓣/旁瓣峰值检测实现方案

针对规则theta-phi网格下的二维幅值数据,不需要把二维数组强行拉成一维,以下两种方案都可以稳定提取所有峰值点:

方案1:基于局部最大值滤波的原生二维检测(优先推荐)

该方案完全适配meshgrid生成的规则网格数据,不需要拆分一维序列,检测效率和准确率更高。核心逻辑是:一个有效二维峰值点,必然是其指定邻域范围内的幅值最大值,再通过幅值阈值过滤噪声毛刺即可。
核心实现代码:

import numpy as np
from scipy.ndimage import maximum_filter, generate_binary_structure

# 以下三个变量为你已有的数据:theta_mesh、phi_mesh是meshgrid输出的二维坐标数组,Z是对应位置的信号幅值
# 1. 定义峰值判定邻域:2阶二维结构对应8邻域,采样点密集时可替换为更大尺寸邻域,例如np.ones((5,5), dtype=bool)
neighborhood = generate_binary_structure(2, 2)

# 2. 提取所有邻域局部最大值点
local_max_mask = maximum_filter(Z, footprint=neighborhood) == Z

# 3. 设置幅值阈值过滤低电平噪声,示例取主瓣峰值的10%(对应-20dB),可根据实际旁瓣电平调整
amp_threshold = Z.max() * 0.1
valid_peak_mask = local_max_mask & (Z >= amp_threshold)

# 4. 提取峰值点对应的角度、幅值信息
peak_theta = theta_mesh[valid_peak_mask]
peak_phi = phi_mesh[valid_peak_mask]
peak_amp = Z[valid_peak_mask]

# 可选:按幅值降序排序,第一个点即为主瓣,其余点为各级旁瓣
sort_index = np.argsort(peak_amp)[::-1]
main_lobe = (peak_theta[sort_index[0]], peak_phi[sort_index[0]], peak_amp[sort_index[0]])
side_lobes = list(zip(peak_theta[sort_index[1:]], peak_phi[sort_index[1:]], peak_amp[sort_index[1:]]))

方案2:复用scipy.signal.find_peaks的适配方案

如果你已经熟悉find_peaks的参数调优逻辑,可以通过“双方向一维检测取交集”的方式适配二维场景:一个有效二维峰值,必须同时在theta方向、phi方向的一维切片上满足峰值判定条件。
核心实现代码:

import numpy as np
from scipy.signal import find_peaks

# 配置find_peaks参数,可根据需求设置高度、最小峰间距、峰值突出度等规则
find_peaks_params = {
    "height": Z.max() * 0.1,
    "prominence": 0.05
}

# 沿theta轴逐切片检测一维峰值
theta_peak_mask = np.zeros_like(Z, dtype=bool)
for phi_idx in range(Z.shape[1]):
    peak_pos, _ = find_peaks(Z[:, phi_idx], **find_peaks_params)
    theta_peak_mask[peak_pos, phi_idx] = True

# 沿phi轴逐切片检测一维峰值
phi_peak_mask = np.zeros_like(Z, dtype=bool)
for theta_idx in range(Z.shape[0]):
    peak_pos, _ = find_peaks(Z[theta_idx, :], **find_peaks_params)
    phi_peak_mask[theta_idx, peak_pos] = True

# 两个方向均判定为峰值的点,即为二维有效峰值
valid_peak_mask = theta_peak_mask & phi_peak_mask
# 后续提取坐标、排序主瓣旁瓣的逻辑与方案1完全一致

检测注意事项:

  • 邻域尺寸/最小峰间距需要匹配网格采样密度:如果角度采样步长为1°,33邻域即可满足需求;如果采样步长小于0.2°,建议将邻域尺寸调整到77以上,避免噪声毛刺被误判为旁瓣。
  • 幅值阈值需要匹配天线实际旁瓣电平:常规天线旁瓣电平比主瓣低13dB~40dB,阈值设置过低会引入大量噪声假峰,设置过高会漏检弱旁瓣。
  • 球坐标下需要处理phi边界:phi=0和phi=2π对应同一个切面,检测完成后需要对边界位置的重复峰值做去重处理。

内容的提问来源于stack exchange,提问作者SAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:31:28