矩形均匀平面阵列(URA)方向图、峰值副瓣电平(SLL)和方向性系数的 MATLAB 快速计算工具。围绕理想阵列因子模型,专门为阵列幅相优化、单元间距扫描这类需要反复迭代的场景写的——希望它跑得快、接口干净,避免重复造轮子。
core/
├── Fast_URA_SLL.m 核心方向图与 SLL 计算
├── DirectivityFromUV.m 从 u-v 方向图算方向性系数(dBi)
└── Fast_URA_SLL.md Fast_URA_SLL 的详细中文说明
examples/
├── u_v_pattern_visualization.m u-v 平面方向图示例
└── TwoD_cut_plane_plot.m 最大波束所在切面的 2D 切片
log/
└── 修复记录、调试笔记等
阵列摆在 y-z 平面,法向沿 x。方向余弦 u、v 分别对应 y、z 方向,可见区是单位圆 u² + v² ≤ 1。
阵列因子直接在指定 u-v 网格上求和:
其中 w_{m,n} 来自输入复激励矩阵 Mag,d 是归一化阵元间距(单位波长)。默认单元方向图为 cos^n(θ),n=1。可见圆外的区域不参与峰值搜索。
只需要 MATLAB 本体。核心函数不依赖 Phased Array System Toolbox,也不依赖 Image Processing Toolbox。示例脚本用到 taylorwin 生成 Taylor 加权窗,需要 Signal Processing Toolbox;如果没有这个工具箱,把示例里的 taylorwin 换成自己的激励矩阵即可。
addpath('core');
ww = taylorwin(16, 4, -25);
Mag = ww .* ww.';
d = 0.5;
[sll_dB, radiation_dB, u, v, info] = Fast_URA_SLL(Mag, d);
D_dBi = DirectivityFromUV(radiation_dB, u, v);
fprintf('SLL = %.2f dB\n', sll_dB);
fprintf('Directivity = %.2f dBi\n', D_dBi);
disp(info);直接让核心函数顺便出图:
[sll_dB, radiation_dB, u, v, info] = Fast_URA_SLL(Mag, d, 1, 0.005, true);跑示例脚本:
run('examples/u_v_pattern_visualization.m') % u-v 平面方向图
run('examples/TwoD_cut_plane_plot.m') % 最大波束切面的 2D 切片示例脚本里已经写好相对路径 addpath,从仓库任何位置启动 MATLAB 都能正常运行。
[sll_dB, radiation_dB, u, v, info] = Fast_URA_SLL(Mag, d, n, du, flag)| 参数 | 含义 | 默认值 |
|---|---|---|
Mag |
二维复激励矩阵,大小 M × N |
必填 |
d |
归一化阵元间距,单位波长(0.5 = 半波长) |
必填 |
n |
单元方向图指数 cos^n(θ) |
1 |
du |
u-v 网格采样间隔 |
0.005 |
flag |
是否绘制归一化 u-v 方向图 |
false |
| 输出 | 含义 |
|---|---|
sll_dB |
峰值副瓣电平相对主瓣(dB,通常为负) |
radiation_dB |
归一化场方向图 20·log10(|E|/max|E|) |
u, v |
u-v 方向余弦采样向量 |
info |
主瓣 / 副瓣位置与采样参数等诊断信息 |
D_dBi = DirectivityFromUV(radiation_dB, u, v)du 决定 u-v 平面采样密度。du 越小越不容易漏检尖锐副瓣,但耗时也会涨。经验值:优化迭代里用 0.01 够用;常规计算 0.005;最终验证或副瓣很尖的情况下用 0.002 甚至 0.001。
适用于:任意二维复激励矩阵;正的归一化阵元间距;可见 u-v 圆域内的主瓣、副瓣、栅瓣理论计算;以及 cos^n(θ) 单元方向图近似下的快速评估。
不考虑:阵元互耦;真实单元方向图细节;馈电网络损耗与相位误差;边缘阵元环境差异;结构散射与全波电磁效应。所以这套工具适合理论模型阶段的快速判断,要和全波仿真或实测严格对齐时需要再补真实单元方向图、互耦、馈电误差等环节。
log/ 目录保留每次重要修复的分析笔记。当前最新的一笔:
2026-06-16— 修复Fast_URA_SLL在对称激励下漏检对角副瓣的 bug。旧版本严格>的局部极大筛选会把数值完全相等的对角对称副瓣对一起淘汰,导致 SLL 偏低、主轴上"误报"为最高副瓣。改为 regional-max 检测(>=且至少一个>),并把检测移到未截断的 dB 图上做。具体推导见log/。