尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
相控阵超声声场计算绕不开瑞利积分:原理、离散化与工程实践
简介围绕相控阵超声、瑞利积分与pencil法展开内容侧重声场计算、波束控制及成像仿真适合声学、医学超声及雷达通信方向的工程师与研究人员参考。压缩包体积约3KB核心材料为“附录6 相控阵”包含完整理论推导、仿真参数设置、计算示例及实验验证过程从阵元相位配置、瑞利积分求声场到pencil法简化积分再到波束形成与TGC信号处理均有涉及。具体包括按阵元数量、间距、发射脉冲等参数设定发射相位并考虑声波在介质中的折射与反射对声场分布的影响最终通过接收回波结合逆运算重建图像可帮助读者快速掌握相控阵超声从物理模型到数值仿真的完整链路。已有391人学习下载对于希望缩短理论到仿真距离、提高相控阵成像精度的从业者是一份高密度技术笔记。1. 相控阵超声声场为什么绕不开瑞利积分做相控阵超声的人迟早会撞上瑞利积分。无论是算聚焦延时、看焦点尺寸还是评估某个自定义阵列的偏转能力瑞利积分都是那个“绕不开的底层层”。它并不神秘——本质是把每个阵元表面看成无数个点源把每个点源对空间某点的贡献做叠加得到整个阵面的声场。这个思路在 Helmholtz 方程线性假设下成立即声压随激励幅度线性叠加、介质不产生新的频率分量。对绝大多数相控阵超声检测场景水浸、楔块耦合、钢件内部这个假设足够可靠。它解决的问题很具体给一组阵元的延时、幅度和几何位置算出任意焦点处的声压幅值、波束宽度和旁瓣水平。适合的人是那些需要自己设计探头参数、评估检测覆盖能力、或者在做全聚焦TFM之前先验证声场合理性的工程师。反直觉的一点是瑞利积分不是“精确解”但工程上比很多所谓的简化公式可用得多因为它保留了衍射对焦点的真实影响尤其是近场和偏转角度大的场景几何声学根本不够用。2. 瑞利积分的数学模型与离散化实现2.1 连续卷积形式到离散点源叠加瑞利积分的常见形式是p(x, y, z, t) (jρ0c / λ) ∫∫S [v_n(x, y) exp(-j k r)] / r dS其中 S 是阵元表面v_n 是表面法向振速r 是表面点到场点 (x, y, z) 的距离k 2πf/c 是波数。这个式子的物理含义是每个面元 dS 视为一个辐射球面波的点源振幅正比于该点的振速相位由距离 r 决定叠加后形成总声场。它成立的条件是介质均匀、声压满足标量波动方程、阵元表面为刚性活塞式振动。相控阵探头每个阵元的宽度通常远大于波长几倍到几十倍用均匀振速近似足够。把积分换成有限求和就是仿真代码的第一版框架。每个阵元划分成若干个矩形小面元每个小面元中心视为点源对声场中感兴趣的点累加贡献。这个做法的好处是阵元几何可以任意定义不规则阵列、楔块分层、曲面探头都能靠改网格来完成。import numpy as np def rayleigh_pressure(elem_centers, elem_size, grid_points, freq, c, rho0): 通过瑞利积分离散化计算相控阵声场 elem_centers: (N, 2) 每个阵元中心的 (x, y)单位 m elem_size: (width, height)阵元的有效辐射尺寸 grid_points: (M, 3) 需要计算声压的空间点 freq: 中心频率 Hz c: 声速 m/s rho0: 介质密度 kg/m^3 lam c / freq k 2 * np.pi / lam p_total np.zeros(len(grid_points), dtypenp.complex128) for idx, center in enumerate(elem_centers): subdiv 8 # 每个阵元划分 8x8 面元 dx elem_size[0] / subdiv dy elem_size[1] / subdiv for i in range(subdiv): for j in range(subdiv): # 面元中心坐标 xs center[0] (i - subdiv/2 0.5) * dx ys center[1] (j - subdiv/2 0.5) * dy dS dx * dy # 到场点距离 diff grid_points[:, :2] - np.array([xs, ys]) r np.sqrt(diff[:, 0]**2 diff[:, 1]**2 grid_points[:, 2]**2) # 避免除零 r[r 1e-6] 1e-6 p_total 1j * rho0 * c * (k / (2 * np.pi)) * np.exp(-1j * k * r) / r * dS return p_total代码里的关键是subdiv这个参数每个阵元划分的面元数量直接决定计算精度和耗时。面元尺寸要小于 0.3λ 才能让离散误差不明显。上面代码把每个阵元固定切成 8×8但实际使用时应该按尺寸除以波长来计算。参数rho0 * c是介质的声阻抗率对纵波声场只影响绝对幅值不影响相对分布如果只关心焦点位置和波束形状可以省略。2.2 精度控制面元尺寸与采样间隔的配合瑞利积分离散化的误差来源主要有两个一是面元划分不够细导致球面波叠加时出现相位混叠二是场点网格间距过大导致焦点峰被漏采。面元尺寸的经验阈值是≤0.25λ此时旁瓣误差能压到 ±0.5dB 以内。场点网格间距则要≤λ/4尤其在焦点附近否则波束宽度算出来会偏大或出现假旁瓣。另一个被忽略的问题是距离 r 的计算精度。场点坐标和源点坐标都是浮点数当 r 很大数十个波长以上时exp(-jkr) 的相位对 r 的微小误差极其敏感——k 本身是 2π/λr 误差 0.01λ 就能引起 3.6° 相位偏差。所以计算距离时不要用sqrt(x^2 y^2 z^2)直接算而是用hypot类函数。在高精度场景考虑先用 double 计算避免 float 截断。2.3 与近场公式、远场公式的适用边界对比相控阵声场计算有三层供选择近场可以用 ONeil 模型求轴上的解析值远场可以用 FFT 做 Fraunhofer 近似中间区域用瑞利积分硬算。参数里有一个无量纲量决定该用哪层L²/λ 称为瑞利距离或近场长度其中 L 是阵面最长尺寸。当目标点到阵面的距离小于 0.5 倍的 L²/λ 时Fresnel 或 Fraunhofer 近似会引入不可接受的旁瓣误差这就是瑞利积分的“主场”。大多数相控阵检测的近场长度在几十到几百毫米之间而检测区域恰好就在这个区间。与其用不恰当的简化不如把瑞利积分的计算效率和精度妥协处理好。常见做法是离焦平面做粗网格焦点附件做细网格分层计算后拼接。3. 相控阵焦点控制延时法则与瑞利积分的配合3.1 从声场反推延时的基本思路相控阵聚焦的本质是“逆向题”想让声波在某个位置同相叠加就应该让每个阵元的声波到达该位置时相位一致。设第 n 个阵元的中心坐标为 (x_n, y_n)焦点坐标为 (x_f, y_f, z_f)则焦点到该阵元的距离 d_n √[(x_f - x_n)² (y_f - y_n)² z_f²]。理想延时 τ_n d_n / c即“先给远阵元发波让波同时到焦点”。这个结论来自几何声学但验证它是否真的聚焦得好就必须回到瑞利积分去算焦点处的合成声压——因为真实声场里阵元不是点源阵元的有限尺寸会让焦点发生偏移尤其是偏转角度大的时候。def compute_delays(elem_centers, focus, c, num_elements): 计算聚焦延时单位为秒 elem_centers: (N, 2) 阵元中心 x, y focus: (x_f, y_f, z_f) 焦点坐标 distances np.hypot(elem_centers[:, 0] - focus[0], elem_centers[:, 1] - focus[1]) distances np.sqrt(distances**2 focus[2]**2) # 参考值取最远距离作为零延时基准 ref distances.max() delays (ref - distances) / c return delays # 例32 阵元阵元中心距 0.6mm焦点放在 (0, 0, 30mm) n 32 pitch 0.6e-3 centers_x (np.arange(n) - (n - 1) / 2) * pitch centers np.stack([centers_x, np.zeros(n)], axis1) tau compute_delays(centers, (0, 0, 30e-3), 5920, n) print(tau / 1e-6) # 微秒这里有一个常犯的错误先算焦点到各阵元的距离差然后直接除以声速。这样得到的延时是“从焦点出发到阵元的传播时间”但激励信号是从阵元出发的。严格来说信号发射时刻 参考时刻 (焦点到阵元的距离差)/c与上面的ref - distances等价但写成ref distance就不是同一回事了。实际硬件里延时分辨率和通道数由设备决定软件层输出的是一组相对延时最大值为零或最小值为零都可以但必须统一。3.2 焦点偏移规律电子偏转与几何偏转的差异延时法则只是理论值真实声场焦点会出现偏移这个偏移能用瑞利积分定量算出来。规律是当偏转角度小于 20° 时焦点偏移量很小接近几何声学预测偏转角度越大旁瓣抬升越明显焦点的实际位置会偏向阵列中心方向偏移。原因也很直观阵元本身的指向性不是全向的阵元宽度越接近波长阵元辐射的指向性越强偏转方向上的有效振速下降等效阵面上只有局部在起作用。用瑞利积分可以把这个效应算出来给全场点加延时激励扫描焦点附近小区域的最大声压看峰值位置和理论焦点差多少。这个操作其实就是一个简化版的相位校准仿真做一次就能知道要不要在延时里加校正量。中低频相控阵如 5MHz 以下通常不需要额外校正但高频小间距阵列10MHz 以上偏转角超过 25° 时必须考虑。3.3 焦距、孔径与瑞利距离的协调规则设计检测方案时焦距选哪个区间不是随意定的。常规探头的孔径 D 决定了瑞利距离 R D²/λ。焦点放在 R 以内时声场处于近场区焦点处的声压震荡很大——近场轴上本来就有极大极小值交替焦距偏小可能导致焦点位置刚好落在极小值区局部声压反而低。工程经验焦点放在 0.7R 到 2R 之间以焦平面声束宽度尽量窄为准。下表给出常用孔径和频率的近场长度便于快速估算频率/MHz阵元数×间距/mm孔径/mm钢中波长/mm近场长度/mm564×0.638.41.1841247532×0.825.61.1845541064×0.319.20.5926232.2532×1.0322.631389近场长度都偏大说明常规相控阵检测实际使用的聚焦深度远在近场内部。这恰好是瑞利积分最擅长覆盖的区域——近场公式在这里完全无法使用远场近似也不成立。4. 从单阵元到全矩阵瑞利积分驱动的相控阵成像路径4.1 全矩阵采集FMC与全聚焦方法TFM的声场视图相控阵不止能做到聚焦偏转还能做全矩阵采集FMC阵列中每个阵元轮流发射全部阵元同时接收得到 N×N 条 A 扫信号。全聚焦TFM算法把这 N² 条信号按到任意像素点的理论传播时间做相干叠加。这一步的空间分辨率取决于声场在焦点附近的聚焦能力本质上就是瑞利积分里每个阵元球面波叠加的结果。TFM 的成像质量由声场质量和延时计算精度共同决定。声场质量好指阵元的孔径和频率匹配焦点附近的焦斑小、旁瓣低而延时计算的精度则取决于声速模型——各向同性材料直接用纵波声速各向异性材料就要用施耐德模型先算出群速度角度曲线。瑞利积分在这一步的价值在于可以先仿真阵列在某材料中的声场验证能不能聚焦到目标区域再决定要不要上 FMC。def tfm_image(fmc_data, tx_elements, rx_elements, grid_x, grid_z, c, dt): 简易 TFM 成像只做纵波直通路径 fmc_data: (N*N, T) 每行是一条 A 扫 tx_elements: 第 i 条 A 扫的发射阵元编号 rx_elements: 第 i 条 A 扫的接收阵元编号 image np.zeros((len(grid_z), len(grid_x))) for iz, z in enumerate(grid_z): for ix, x in enumerate(grid_x): val 0.0 for i in range(len(tx_elements)): xt elements_x[tx_elements[i]] xr elements_x[rx_elements[i]] d_tx np.hypot(xt - x, z) d_rx np.hypot(xr - x, z) time_idx int((d_tx d_rx) / c / dt) if time_idx fmc_data.shape[1]: val fmc_data[i, time_idx] image[iz, ix] np.abs(val) return image这段代码是 TFM 的最简骨架实际工作时的差异在于真实验收数据要先做 Hilbert 变换取包络声速 c 如果是楔块耦合还得分段计算楔块内和工件内时间索引要加窗避免直达波混叠。而对很多工程师来说这个写法的价值在于能直接看到为什么焦区声场会影响成像——如果瑞利积分显示某个深度处声场旁瓣高TFM 图里同样的位置就会出现伪像重复。4.2 用瑞利积分做阵列性能预检的两条命令在买探头之前或者在编写检测工艺之前先跑一个瑞利积分脚本能把阵列性能看得一清二楚。常见做法是只算两条线阵面中轴线的声压分布以及焦点所在平面的横向声压分布。轴线分布告诉你焦点位置是否在实际可用的焦深内横向分布告诉你焦斑宽度和旁瓣高度。# 快速预检沿中轴线扫描找最大声压位置和 -6dB 焦点范围 z_axis np.linspace(5e-3, 60e-3, 500) points np.stack([np.zeros_like(z_axis), np.zeros_like(z_axis), z_axis], axis1) p_axis rayleigh_pressure(centers, elem_size, points, freq, c, rho0) amp np.abs(p_axis) focal_peak_idx np.argmax(amp) z_peak z_axis[focal_peak_idx] half_max amp.max() / 2 within_6db np.where(amp half_max)[0] print(f峰值焦点: {z_peak*1e3:.1f} mm) print(f-6dB 焦深范围: {z_axis[within_6db[0]]*1e3:.1f} 到 {z_axis[within_6db[-1]]*1e3:.1f} mm)运行这个脚本时把频率、阵元间距、阵元宽度分别做一次扫描能看到一组规律阵元间距大于 0.7λ 时偏转方向会出现栅瓣这是周期性阵列的固有属性阵元宽度过窄时灵敏度不足过宽时波束偏转能力下降。用这组曲线去跟设备供应商的探头参数表对一下基本能筛掉一半不合适的探头。4.3 影响成像分辨率的参数孔径、频带与相位畸变TFM 图像的横向分辨率由合成孔径决定而合成孔径的有效尺寸又和声场中偏离焦点后的能量衰减相关。用瑞利积分仿真一个 32 阵元阵列在 30mm 深度处的焦斑宽度再用 64 阵元阵列跑一遍可以看出增大孔径对焦点宽度的改善是明显的代价是近场范围变大近表面盲区增大。频带宽度对分辨率的影响也类似——宽频信号的中心频率决定焦斑尺寸但宽带信号在边界处叠加时会有波形畸变这个畸变在瑞利积分仿真里如果只用单频做是看不到的要做宽带仿真就得把多个频率的声场结果做加权叠加。相位畸变是工业检测里常见但常被忽略的问题。耦合层厚度不均、各向异性材料、楔块磨损都会让到达焦点的波前不再是理想球面瑞利积分在均匀介质假设下算出的只是理想声场。检测时若发现旁瓣异常升高可以反推相位误差量级再决定是否需要做相位校正或改用自适应聚焦。5. 边界条件与维数选择瑞利积分仿真的实用校验技巧瑞利积分看似简单但仿真结果对参数设置很敏感几个小习惯能避免算出表面合理实际离谱的结果。这里的技巧集中在三个方面维数选择、边界截断和散度校验。第一是维度选择。不少实现把阵元面积直接设为 dS算的是三维球面波扩散但有的文档里把公式改成了二维圆柱波幅值衰减规律不同。同一套代码如果混用二维和三维公式远场幅值会差一个 1/√r 因子轴向衰减趋势完全不同。实现前先确认探头阵元是矩形算三维声场每个点源的衰减是 1/r如果截面是对称柱面波衰减是 1/√r。检测钢中的矩形阵列一律按三维处理。第二是边界截断。网格范围开太大内存吃不消开太小边缘处的声场会被截断造成假干涉。推荐做法是让计算区域在横向延伸至少超过阵列孔径的 1.5 倍轴向覆盖 0.5 倍近场深度。焦点所在的平面网格间距必须小于 λ/4其余区域可以放宽到 λ/2分块计算后拼接。实际操作中先算粗网格定位焦点再在焦点附近加密一次速度能快 10 倍以上。# 散度校验总功率守恒 # 在场点离阵列足够远去取两个球面比较积分声强 r1, r2 80e-3, 100e-3 theta np.linspace(0, np.pi, 100) # 极角采样 s1 np.sum(np.abs(rayleigh_pressure(centers, elem_size, points_on_sphere(r1, theta), freq, c, rho0))**2) * r1**2 s2 np.sum(np.abs(rayleigh_pressure(centers, elem_size, points_on_sphere(r2, theta), freq, c, rho0))**2) * r2**2 print(f球面1归一化声强: {s1:.3e}, 球面2: {s2:.3e}, 比值: {s2/s1:.3f})第三是单频 vs 宽带。瑞利积分天然是单频计算工程中用的检测信号是宽带脉冲如果只看中心频率的声场焦点处的干涉图样会比脉冲激励更剧烈。做定量声场评估比如测量焦斑宽度时用 3-5 个频率点分别计算再按激励脉冲频谱加权叠加这个流程虽然耗时但结果和实测超声检测的灵敏度曲线吻合度明显更好。自制探头或调试楔块时这套流程值得跑一次形成自己常用探头的声场校准记录。最后一个小技巧是保存仿真数组时用原始二进制格式而不是 CSV处理 64×64×400 的网格点时能省下大量磁盘和读取时间。瑞利积分的计算速度通常以分钟计每次调参都从头算一遍不划算把已算好的区域缓存下来只重算修改过的参数对应的声场块。这套做法熟练之后测量前的工艺预检时间能压缩到几分钟以内。本文还有配套的精品资源点击获取
RELATED

相关推荐

UB-LSTM行为识别轨迹预测:从NGSIM数据到实车部署实践

UB-LSTM行为识别轨迹预测:从NGSIM数据到实车部署实践

简介:结合车辆行为识别的轨迹预测算法压缩包,面向动态交通环境下的智能车轨迹预测研究,聚焦LSTM与驾驶行为识别联合建模,适合交通运输、自动驾驶、智能车方向的算法研究者与硕士研究生参考。源代码覆盖数据处理、交互信息提取、模…

📅 2026/9/10 6:49:30
基于Ray的分布式推荐系统训练框架设计与实践

基于Ray的分布式推荐系统训练框架设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/10 6:49:30
开源AI Agent平台选型指南:10大框架对比与落地避坑

开源AI Agent平台选型指南:10大框架对比与落地避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/10 6:49:30
MORE NEWS

更多资讯

📰

随身WiFi避坑指南:原理、场景、硬件参数与套餐全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Arduino ESP32 安装完整指南:从进度条卡死到第一次点亮 Blink 一次走通

Arduino ESP32 安装完整指南:从进度条卡死到第一次点亮 Blink 一次走通 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 运行 Arduino ESP32 安装时&#xff0c…

📰

ComputeShader实战指南:GPU粒子更新、线程模型与Buffer绑定避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

微信小程序原创音乐管理系统:全栈开发与论文实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📰

Vitest 完整指南:让 Vite 驱动的前端测试快 10 倍

Vitest 完整指南:让 Vite 驱动的前端测试快 10 倍 【免费下载链接】vitest Next generation testing framework powered by Vite. 项目地址: https://gitcode.com/GitHub_Trending/vi/vitest 你有没有这种经历:本地改一行代码,测试框架…

📰

YOLOv5s口罩检测毕设闭环系统:从训练到Docker部署

简介:本资源是一套完整的YOLOv5口罩佩戴检测实战项目,面向计算机、人工智能及相关专业本科生毕业设计、课程设计与深度学习初学者,解决公共场所人员口罩佩戴状态自动识别这一典型目标检测应用场景。压缩包共149个文件,含40个Pytho…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬