ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

相控阵天线MATLAB仿真:从阵因子到波束扫描的雷达系统核心

2026/9/4 11:23:23 拓冰建站 浏览量
相控阵天线MATLAB仿真:从阵因子到波束扫描的雷达系统核心 开篇为什么第15章值得单独写一篇笔记读《雷达系统分析与设计 MATLAB版 第3版》读到第15章“相控阵天线”这一部分时我停了好一阵子。前面几章内容是经典的雷达方程、目标检测、波形设计到了这一章才开始真正触到现代雷达最核心的物理硬件——相控阵天线。可以说前面的章节是在回答“雷达怎么把信号发出去、收回来、检测到目标”而第15章是在回答“雷达用什么把波束指向目标并且能做到电子扫描而不是机械转动”。这中间的差别直接决定了雷达是“上一代”还是“当代主流水准”。这一章的内容在全书里属于“雷达的一些特殊主题”下的第五部分。虽然标题看着像补充阅读但实际分量一点都不轻。相控阵天线覆盖了阵列天线的基础理论、方向图综合、波束扫描、栅瓣抑制、单元互耦、馈电误差等内容配套的MATLAB工具箱和代码示例也很丰富。对刚接触雷达系统的同学来说这一章是理解现代雷达尤其是相控阵雷达的必经之路对有工程背景的从业者来说这一章里的公式推导和代码实现也非常值得重新过一遍。我自己读完的最大感受是这本书在前面章节给的是“雷达系统视角”而第15章终于切换到“电磁场与天线视角”两者一结合很多之前理解不透的概念才真正串起来了。所以这篇笔记我打算对照书中的第15章内容把相控阵天线这部分的核心逻辑、MATLAB仿真实操、我实际踩过的坑和排查经验一并整理出来。文章主要针对正在读这本书、或者刚接触相控阵雷达天线的学生和初级工程师如果你有一定天线基础也可以直接跳到我后面的实操和问题排查部分。1. 内容整体设计与思路拆解1.1 第15章相控阵天线在全书中的位置与作用Mahafza这本书的写作风格比较像“雷达系统百科全书”前面章节已经把雷达方程、噪声、检测概率、模糊函数、波形设计、目标回波模型都讲透了。到了第15章作者把视角从“系统整机”拉低到“天线分系统”这其实是一次很重要的视角切换。前文讲雷达方程的时候天线参数是以天线增益G直接代入的读者只需要知道G是怎么算出来的或者直接给一个值。而到了相控阵这一章天线不再是一个“黑盒参数”而是一个由成百上千个单元组成的阵列。阵列的几何排布、每个单元的激励幅度和相位、工作频率与单元间距的关系共同决定了整个雷达系统的波束形状、扫描范围、副瓣电平和栅瓣位置。这意味着第15章实际上是在“解释天线是如何实现雷达方程里那个G的”并且进一步说明——相控阵天线还能通过控制单元相位使波束快速指向不同方向。如果把全书比作搭积木前面的章节搭的是雷达系统的“数字底子”第15章搭的是“空间电磁底子”。两者缺一不可尤其是做系统仿真或总体设计时如果只看系统级公式而忽略了阵列天线的工作机理设计出来的指标很可能无法实现或者相互矛盾。1.2 为什么用MATLAB做阵列天线仿真而不是其他工具这本书的配套代码和示例全部基于MATLAB这个选择不是偶然的。相控阵天线的核心计算涉及方向图乘积定理、阵列流型矢量、扫描角下的场强叠加这些在MATLAB里用矩阵运算可以写得非常干净。相比之下专业电磁仿真软件如HFSS、CST更适合做全波仿真计算量巨大需要一个单元一个单元地网格剖分而在系统方案论证和算法验证阶段我们更关心的是“波束指向哪里、副瓣多高、扫描时栅瓣什么时候出现”这时候基于方向图乘积定理的MATLAB计算已经足够而且要快得多。我做仿真时也试过用Python做同样的事情NumPy完全能算但这本书的配套代码、示例数据、工具箱以及雷达系统模型Phased Array System Toolbox都是MATLAB生态的直接用MATLAB可以省去大量自行封装底层函数的时间。尤其Phased Array System Toolbox里已经有现成的相控阵天线对象比如phased.URA均匀矩形阵列、phased.ULA均匀线阵这些对象封装了方向图计算和波束扫描功能自己写代码时拿来做参照系非常方便。1.3 相控阵天线设计的核心矛盾与设计考量读第15章我最大的体会是相控阵天线的设计实际上是在几个核心矛盾之间做权衡。第一矛盾是波束宽度与阵列尺寸的矛盾阵列越大波束越窄角度分辨率越高但成本、加工难度和重量也随之增大。第二矛盾是单元间距与栅瓣的矛盾单元间距太大会在扫描时出现栅瓣产生虚假目标方向而单元间距太小会导致单元间互耦增强同时单元数量不变情况下阵列物理口径变小、波束变宽。第三矛盾是副瓣电平与主瓣宽度的矛盾用幅度加权的办法压低副瓣通常会导致主瓣略微展宽。书中通过方向图乘积定理很优雅地展现了这些矛盾的本质阵列天线的总方向图等于“单元因子×阵因子”单元因子由单个天线单元决定阵因子由阵列的排布和激励决定。这样一来设计任务就分解成了两个相对独立的问题单元怎么设计阵列怎么排布和激励。而MATLAB仿真的价值也恰恰在这里——修改单元间距、幅度加权函数、扫描角度可以立刻看到阵因子方向图的变化把抽象的数学关系变成直观的曲线图。2. 核心细节解析与实操要点2.1 均匀线阵的方向图与阵因子公式第15章对均匀线阵ULA的推导是后续所有阵列分析的基础。书中给出的阵因子公式是[ AF(\theta) \frac{1}{N} \cdot \frac{\sin\left(\frac{N \pi d}{\lambda} (\sin\theta - \sin\theta_0)\right)}{\sin\left(\frac{\pi d}{\lambda} (\sin\theta - \sin\theta_0)\right)} ]这里面 (\theta_0) 是波束指向角(d) 是单元间距(\lambda) 是工作波长(N) 是单元数量。我第一次自己推这个公式的时候最关键的一步是理解“相位差”是怎么变成“阵因子”的。假设每个单元的激励幅度相同相邻单元之间的相位差是 (\Delta\phi)那么各单元辐射场在空间某点的叠加就是一系列相位递增的矢量求和。这个求和就是等比数列求和化简后就是这个 (\sin(Nx)/\sin(x)) 的形式。而 (\Delta\phi) 和波束指向角 (\theta_0) 的关系是[ \Delta\phi \frac{2\pi d}{\lambda} \sin\theta_0 ]这个式子就是相控阵“电扫描”的数学基础只要改变相邻单元的馈电相位差波束指向就会改变。书里的代码用MATLAB直接生成了不同扫描角下的方向图这个我强烈建议读者自己动手跑一遍只有看到主瓣随着相位差“走”起来才真正理解什么是电子扫描。2.2 均匀面阵与二维波束扫描线阵只能在一个平面内扫描实际雷达系统尤其是机载雷达、地面防空雷达需要方位和俯仰两个维度的扫描因此必须使用面阵。书中把线阵的结论推广到了矩形栅格排列的平面阵。面阵的方向图可以看作“两个线阵方向图的乘积”——一个对应x方向的排列一个对应y方向的排列。这个“乘积”关系在MATLAB里实现起来非常直观。你可以把阵列单元的坐标定义成网格点然后用二维循环或者矩阵运算算出每个角度下的合成场强。我自己常用的做法是用meshgrid生成角度空间然后对每个阵元坐标计算其相对参考点的相位差最后叠加。这样写出来的代码比较通用修改阵列形状不用动核心逻辑。不过需要特别提醒面阵方向图的可视化比线阵复杂得多。线阵可以画极坐标方向图面阵的方向图是二维角度的函数一般用俯仰角-方位角平面上的颜色图colormap来表示。这一点书里有配图说明建议对照着看。如果自己用MATLAB做可视化可以用surf或者pcolor把方向图幅度画成三维曲面再在底部加一个二维投影能清楚看到主瓣和副瓣的空间分布。2.3 栅瓣条件与扫描盲区栅瓣是相控阵天线最需要警惕的问题之一。简单说栅瓣就是主瓣之外的其他“大瓣”这些瓣同样具有较高的增益会导致雷达把某个方向进来的干扰或者杂波当作主瓣方向的信号来处理造成测角模糊。书中给出的栅瓣条件是当相邻单元之间的空间相位差满足 (2\pi) 的整数倍时阵因子会出现额外的主峰。工程上最常用的判据是[ \frac{d}{\lambda} \le \frac{1}{1 |\sin\theta_{\max}|} ]其中 (\theta_{\max}) 是最大扫描角。如果最大扫描角设为60度那么 (\sin\theta_{\max}0.866)单元间距必须满足 (d/\lambda \le 0.536)。这个约束非常苛刻直接决定了阵列单元的排布密度也解释了为什么相控阵雷达往往单元数量巨大——因为间距有限制、一个阵面尺寸又有限要保证足够的增益和波束窄度只能增加单元数量。我用MATLAB仿真过 (d/\lambda 0.7) 的线阵扫描到30度左右就能看到明显的栅瓣出现在方向图两侧。这个现象在理论上很好理解但亲眼看到仿真结果时还是有一种“原来如此”的感觉。建议读者在仿真时故意设置几个不合理的参数直观感受一下栅瓣是如何产生、如何移动的这对理解公式帮助极大。2.4 幅度加权与副瓣抑制相控阵天线还有一个核心能力就是通过控制单元的激励幅度来压低副瓣。书中介绍了常用的泰勒加权、余弦加权等幅度分布函数。这些加权函数的核心思想是边缘单元的激励幅度小于中心单元的幅度使得阵列口径上的电流分布更平滑从而减少能量向副瓣方向泄漏。但天下没有免费的午餐幅度加权在压低副瓣的同时会带来两个副产物一是主瓣略微变宽这是口径效率下降的必然结果二是增益会有所损失因为部分单元的幅度被降低了。书中用MATLAB对比了均匀激励和不同加权方式下的方向图这个对比结果非常直观。我在仿真时发现一个容易踩坑的地方MATLAB里实现加权时要分清“幅度加权”和“相位加权”。波束扫描靠相位加权副瓣控制靠幅度加权两者是正交的、可以同时使用的。很多人初学时会混在一起结果怎么调都得不到预期的方向图。正确做法是先设计好幅度分布与扫描角无关只与单元位置有关再在每个单元上叠加由扫描角决定的相位增量。3. 实操过程与核心环节实现3.1 从零写一个均匀线阵方向图仿真我自己学习这一章的时候没有直接套用书中现成代码而是自己从零写了一遍感觉收获非常大。下面给出一个最基础版本的实现思路和代码读者可以照着敲一遍然后再去看书中更完善的版本。% 均匀线阵方向图仿真阵列因子方式 % 参数设置 N 16; % 阵元数量 d_over_lambda 0.5; % 单元间距以波长为单位 theta_0 30; % 波束指向角度 theta -90:0.1:90; % 观察角度范围 % 转换为弧度 theta_rad theta * pi / 180; theta0_rad theta_0 * pi / 180; % 相位差 psi 2 * pi * d_over_lambda * (sin(theta_rad) - sin(theta0_rad)); % 阵因子用等比数列求和公式注意N1时单独处理 AF zeros(size(psi)); for i 1:length(psi) if abs(psi(i)) 1e-10 AF(i) N; % 主瓣方向上的极限值 else AF(i) sin(N * psi(i) / 2) / sin(psi(i) / 2); end end % 归一化方向图dB AF_dB 20 * log10(abs(AF) / N); AF_dB(AF_dB -40) -40; % 方便显示截断到-40dB % 绘图 figure; plot(theta, AF_dB, LineWidth, 1.5); grid on; xlabel(角度 (度)); ylabel(归一化方向图 (dB)); title([均匀线阵方向图, N num2str(N) , d/λ num2str(d_over_lambda) , 扫描角 num2str(theta_0) °]);这段代码的核心就是计算相位差 (\psi)然后用等比数列求和公式得到阵因子。注意代码里对 (\psi0) 的情况做了特殊处理因为此时公式的分子分母同时趋近于0直接计算会得到NaN。跑完这段代码你会看到一个主瓣刚好出现在30度方向两侧有若干副瓣最靠近主瓣的副瓣大约在-13dB左右——这个值正是均匀激励线阵的理论副瓣电平书中有提到。如果减少N波束会变宽如果增大d/λ你会看到栅瓣开始出现。3.2 面阵方向图的MATLAB实现线阵理解之后再往面阵扩展就不太费劲了。面阵方向图的计算思路是把每个单元在空间的位置坐标作为输入计算其到目标方向的相对相位延迟然后叠加所有单元的辐射贡献。下面是一个矩形面阵均匀矩形阵列URA的简化实现。这里假设单元方向图是全向的即单元因子为1这样得到的实际上是阵因子方向图。% 均匀矩形面阵方向图仿真阵因子 Nx 8; % x方向单元数 Ny 8; % y方向单元数 dx 0.5; % x方向间距波长归一化 dy 0.5; % y方向间距波长归一化 theta_0 20; % 波束指向俯仰角度 phi_0 30; % 波束指向方位角度 % 生成角度网格 az -90:1:90; % 方位角度 el -90:1:90; % 俯仰角度 [AZ, EL] meshgrid(az, el); % 角度转换为弧度 AZ_rad AZ * pi / 180; EL_rad EL * pi / 180; theta0_rad theta_0 * pi / 180; phi0_rad phi_0 * pi / 180; % 计算单元坐标 xs ((0:Nx-1) - (Nx-1)/2) * dx; ys ((0:Ny-1) - (Ny-1)/2) * dy; % 波束指向方向对应的单位矢量 u0 [sin(theta0_rad)*cos(phi0_rad), sin(theta0_rad)*sin(phi0_rad), cos(theta0_rad)]; % 初始化方向图 AF zeros(size(AZ)); % 遍历所有观察方向 for i 1:length(el) for j 1:length(az) u [cosd(el(i))*cosd(az(j)), cosd(el(i))*sind(az(j)), sind(el(i))]; s 0; for m 1:Nx for n 1:Ny pos [xs(m), ys(n), 0]; % 相对波束指向的相位补偿 观察方向的相位累积 phase 2*pi*(dot(pos, u) - dot(pos, u0)); s s exp(1j * phase); end end AF(i,j) s; end end % 归一化并取dB AF_dB 20*log10(abs(AF)/(Nx*Ny)); AF_dB(AF_dB -40) -40; % 绘图 figure; surf(az, el, AF_dB, EdgeColor, none); xlabel(方位角 (度)); ylabel(俯仰角 (度)); zlabel(方向图 (dB)); title(矩形面阵方向图); colorbar; view(2); % 俯瞰视角这段代码循环比较多实际计算会比较慢。我自己跑的时候NxNy8、角度范围1度步进大概要十几秒。如果只是用来学习这个速度可以接受如果想做大阵列仿真就要用矩阵化方式改写或者直接使用Phased Array System Toolbox中的phased.URA对象计算效率高得多。3.3 利用Phased Array System Toolbox快速搭建阵列模型如果你装了MATLAB的Phased Array System Toolbox可以省去上面这些手动计算的麻烦。这个工具箱提供了统一的相控阵建模接口使用起来非常方便。% 利用工具箱创建均匀线阵并绘制方向图 array phased.ULA(NumElements, 16, ElementSpacing, 0.5); fc 10e9; % 工作频率10GHz c physconst(LightSpeed); lambda c / fc; % 波束指向角 steer_ang 30; % 计算方向图 ang -90:0.5:90; resp pattern(array, fc, ang, 0, Type, powerdb, Normalize, true, Weights, ... steervec(getElementPosition(array)/lambda, steer_ang)); % 绘图 figure; plot(ang, resp, LineWidth, 1.5); grid on; xlabel(角度 (度)); ylabel(归一化方向图 (dB)); title(Phased Array System Toolbox - ULA方向图);注意这里的steervec函数用来计算波束指向某个方向时的单元权矢量它本质上就是在计算那组相位增量。phased.ULA对象封装好了单元位置和方向图计算函数这就省去了自己写循环和坐标变换的时间特别适合快速验证系统级方案。3.4 参数选择与计算过程一个具体算例为了更好地说明参数是怎么定的我拿一个典型场景来算假设雷达工作在X波段频率为10GHz波长 (\lambda 3) cm。系统要求在方位面最大扫描角为60度波束宽度半功率不超过2度。根据均匀线阵的半功率波束宽度经验公式[ \theta_{\text{3dB}} \approx \frac{0.886\lambda}{N d \cos\theta_0} ]这里 (\theta_00)法向波束要求 (\theta_{\text{3dB}} \le 2^\circ)则[ N d \ge \frac{0.886\lambda}{\sin(2^\circ)} \approx \frac{0.886 \times 0.03}{0.0349} \approx 0.762 \text{ m} ]这意味着阵列的口径至少需要0.76米。再根据栅瓣条件最大扫描角60度时要求 (d/\lambda \le 0.536)取d0.5λ1.5cm那么单元数[ N \ge 0.762 / 0.015 \approx 51 ]所以至少需要51个单元工程上一般取64元2的幂次方便馈电网络设计。这个计算过程在书中没有完全展开但理解了原理之后自己可以推导出来这对总体设计非常有帮助。如果直接用MATLAB仿真你会发现64元阵列在法向的波束宽度大约是1.6度左右和上面计算的预期基本吻合。3.5 实际仿真中方向图乘积定理的验证书里提到阵列总方向图单元因子×阵因子。这个“乘积”关系在我的仿真中印象最深刻的一次是我一开始用全向单元的假设仿真阵列得到的是干净的阵因子方向图后来把单元换成偶极子方向图后再仿真看到总方向图被单元因子“调制”后副瓣发生变化远离法向的副瓣明显降低了。如果用代码演示% 单元因子示例偶极子 element_factor abs(cosd(theta)); % 偶极子方向图近似模型 % 阵因子前面已经算好的AF_dB注意要转回线性 AF_lin 10 .^ (AF_dB / 20); % 总方向图 total_lin AF_lin .* element_factor; total_dB 20 * log10(total_lin / max(total_lin)); figure; plot(theta, AF_dB, b--, LineWidth, 1.2); hold on; plot(theta, total_dB, r-, LineWidth, 1.5); grid on; legend(阵因子, 总方向图(单元因子×阵因子)); xlabel(角度 (度)); ylabel(归一化方向图 (dB));这里用到一个简单偶极子方向图模型实际工程中单元因子需要通过电磁仿真或者实测获得。但即便是一个近似模型也能清楚看到方向图乘积定理的效果。4. 常见问题与排查技巧实录4.1 方向图副瓣不对称怎么回事我在第一次做线阵仿真时发现副瓣竟然左右不对称。排查后发现问题出在我把波束指向角设置在30度但观察角度范围是-90到90度。主瓣在30度那么右侧可观察范围只有60度左侧有120度所以左右副瓣呈现的数量自然不同。这不是代码错误而是观察范围不对称造成的视错觉。解决方法是把观察范围扩大到-180到180度或者只关注主瓣附近的副瓣情况。另一种副瓣不对称的情况出现在面阵仿真中这时要检查波束指向的方位角是否使阵列在x和y方向上的有效口径发生了变化。扫描角越大波束投影到阵列平面上的有效口径越小副瓣结构也会随之变化。这些是正常物理现象不算错误。4.2 计算方向图时出现NaN波束指向方向没有值这个问题几乎每个照着公式敲代码的人都会遇到。原因很简单在波束指向方向上所有单元的相位差为0阵因子公式的分子分母同时为0直接计算就是NaN。解决办法在前面代码里已经体现就是对 (\psi \approx 0) 的情况做单独处理取极限值 (N)。在MATLAB中还可以用sinc函数来避免这个问题因为MATLAB的sinc函数在0点处有定义。用sinc函数简化阵因子计算% 用sinc函数计算阵因子避免NaN AF N * sinc(N * psi / (2*pi)) ./ sinc(psi / (2*pi));MATLAB自带的sinc函数定义为 (\sin(\pi x)/(\pi x))所以参数要除以2π。这个写法简洁且不会出现NaN推荐使用。4.3 振幅加权的实现错误把幅度也乘了相位这个问题我前面提到过但因为它太典型了值得再强调一次。很多初学者在实现泰勒加权时会把加权系数直接乘到复激励上然后把复激励代入方向图计算。这种做法本身没有错——因为复激励本来就包含幅度和相位两个分量幅度加权会改变幅值分布相位加权会改变相位分布两者在复数域是“叠加”的。真正容易出错的地方在于先用steervec计算了扫描相位然后在同一个向量上又用乘法叠加了幅度加权系数。这时候要特别注意幅度加权系数是实数相位是复数指数乘完后应该是加权系数乘以复相位。如果代码里对相位和幅度都做了“相乘”就会把加权系数也变成角度的函数方向图结果就错了。正确做法是先分别计算幅度分布 (w_{amp}) 和扫描相位 (w_{phase})然后得到总激励 (w w_{amp} \cdot w_{phase})。在MATLAB里w_amp是一个实数向量w_phase exp(1j * phase_vector)逐元素相乘就是总激励。4.4 面阵扫描时波束出现“偏斜”或者指向不准确面阵波束指向不准确最常见的原因是角度定义不一致。在用球坐标系定义雷达目标的方位角和俯仰角时不同教材、不同工具箱采用的坐标约定可能不同。有的定义俯仰角从z轴正方向开始度量有的定义俯仰角从xy平面开始度量两者相差90度。在MATLAB的phased.URA对象里默认的俯仰角定义是“从x轴正方向向z轴方向旋转的角度”和一般雷达工程中“俯仰角从水平面起算”的定义不一样。这就导致很多刚从系统课程转到MATLAB仿真的人输入了预期的角度画出来却完全不对。我的排查思路是先用一个已知简单场景做标定。比如设置波束指向为0度方位、0度俯仰这时方向图最大值应该出现在阵列法向也就是z轴方向如果最大值出现在其他位置说明角度定义有偏差。再设置扫描角为90度方位看看波束是不是跑到x轴方向。这样逐步验证就能摸清工具箱的角度约定。4.5 仿真结果和书中不一致原因可能在哪里如果你照着书里的代码跑但得到的方向图和书上的不完全一样不用急着怀疑自己代码写错了。这种不一致最常见的原因有三个第一是归一化方式不同有的方向图用峰值归一有的用阵列增益绝对值归一两种画法在纵轴范围和副瓣数值上会有差异第二是坐标约定不同尤其方位角和俯仰角的前后顺序会影响pattern函数的输出第三是单元因子的设定不同书上有些图示包含单元方向图有些只画阵因子对不上很正常。我的建议是在对比前先把“自己画的是什么”搞清楚。如果只关注阵因子就固定单元因子为1如果画总方向图就要明确单元因子用了什么模型。然后统一归一化方式再对比曲线形状和副瓣位置这样对结果的判断才可靠。下面把这一章仿真最常遇到的几个问题整理成速查表方便遇到问题时快速定位现象可能原因排查方法方向图主瓣不在预期扫描角角度定义不一致/相位差公式符号错误检查坐标约定扫描角为0时确认主瓣在法向出现NaN或较大跳变ψ0时公式未特殊处理用sinc函数或if语句处理极限情况栅瓣过早出现d/λ设置过大或扫描角超出栅瓣条件范围核算d/λ与最大扫描角是否满足约束条件副瓣不对称观察角范围不对称/单元因子不均匀扩大观察范围检查单元因子设置加权后波束指向偏移幅度加权和相位加权混用分离幅度向量与相位向量最后再相乘面阵方向图扭曲角度网格定义与工具箱约定不一致用法向波束、轴向波束做标定测试4.6 提速技巧避免双重循环的矩阵化写法我前面给出的面阵仿真代码用了三层嵌套循环这是为了展示原理实际仿真中速度太慢。如果阵列单元数量到上千、角度采样到数百循环方案几乎不可用。这时候必须矩阵化。以均匀线阵为例矩阵化的核心是把“每个单元在每个观察角度上的相位”算成一个二维矩阵然后沿单元维度求和。伪代码如下% 线阵矩阵化优化 N 1024; % 单元数量 d_lambda 0.5; theta -90:0.1:90; theta_rad theta * pi / 180; % 单元位置 pos ((0:N-1) - (N-1)/2) * d_lambda; % 相位矩阵N x length(theta) phase_matrix 2 * pi * pos. * sin(theta_rad); % 阵因子 AF sum(exp(1j * phase_matrix), 1);这样写1024单元、1801个角度的计算在普通PC上都是毫秒级完成。面阵也可以类似处理把x和y方向的相位矩阵相加后再对两个维度求和即可。这个优化思路对后面做大型阵列仿真非常重要建议从一开始就按矩阵化风格写代码。5. 从仿真到工程这一章内容的扩展思考5.1 相控阵天线与毫米波雷达的结合读这一章时我一直联想到当前非常热的毫米波雷达技术。77GHz车载毫米波雷达、4D毫米波雷达的核心“感觉器官”就是小型的相控阵天线。由于波长只有4毫米左右阵列单元可以做得很小一个手掌大小的PCB板上就能集成几十个天线单元配合MIMO技术实现角度估计。第15章讲的阵列方向图合成、栅瓣抑制、波束扫描这些概念在毫米波雷达里全部用得上。只不过车载雷达更多使用“数字波束形成”DBF而非传统模拟移相器波束是在数字域通过加权形成的角度估计往往配合MUSIC、ESPRIT等超分辨算法来做。但无论算法怎么变阵列天线的“空间采样”本质没有变第15章的阵因子理论仍然是分析的基础。我一直觉得从这本书的第15章切入毫米波雷达的阵列设计是一条很顺的学习路径。5.2 相控阵天线与LFMCW雷达测距测速书里前面的章节有讲过线性调频连续波LFMCW雷达的测距测速原理到了第15章把LFMCW波形和相控阵天线结合起来就是一个典型的现代雷达系统架构。LFMCW负责距离和速度测量相控阵天线负责角度测量两者通过“距离-角度”二维处理统一起来。在MATLAB里你可以先用phased.FMCWWaveform生成波形再用phased.URA定义天线阵列然后做完整的收发链路仿真。我试着做过一次代码量并不大但模型一旦通了对雷达系统体制的理解会有一个质的飞跃。书后面的章节也会涉及这种联仿所以第15章读透非常关键。5.3 关于低副瓣设计的进一步思考相控阵天线的低副瓣设计在实际工程中是衡量雷达抗干扰能力的重要指标。第15章从幅度加权的角度介绍了怎么压低副瓣但实际工程中副瓣还受很多非理想因素影响比如单元失效、馈电幅相误差、天线罩影响等。书中在后续章节提到了一些误差分析的内容但这一章没有展开。我在实际项目中最深刻的体会是仿真中副瓣做到-35dB很容易但实物的副瓣能到-30dB就已经很好了。原因就在于仿真中每个单元的幅度和相位都可以精准控制而实际馈电网络、移相器、功放组件都存在误差。用MATLAB也可以模拟这种随机误差的影响——给每个单元的幅度和相位加上一定标准差的高斯扰动然后观察方向图副瓣抬升的情况。这个仿真很简单但对理解系统误差预算非常有帮助强烈推荐一试。6. 关于这本书和这一章的个人体会写到这里我觉得回头可以总结一下我对这本书和这一章的整体评价。Mahafza这本书的优点在于“系统”它不会在一开始就把你扔进电磁场方程的深水里而是用系统级的语言把雷达的每个分系统串起来让读者先看到森林再逐棵看树。第15章相控阵天线就是其中一棵很重要的树。从编排顺序来看作者把“相控阵天线”放在“特殊主题”部分可能是考虑到天线理论需要一定的电磁场基础但实际上这一章的数学门槛并不算高——只需要基础的三角函数、复数运算和阵列求和。只要把方向图乘积定理吃透后面所有内容都顺理成章了。我也理解有些人会觉得这一章内容太偏向理论和系统设计离得比较远。但实际上如果你要做雷达总体方案论证不可避免要回答“用多大的阵面”“多少个单元”“扫描范围最大多少”这类问题而这些问题的答案恰恰要从第15章的公式和约束条件出发。我甚至觉得第15章应该和雷达方程那一章连着读雷达方程决定你需要的天线增益天线增益和阵面尺寸、单元数又由相控阵理论决定两者闭环才是完整的系统设计逻辑。如果你正在读这本书我建议不要只停留在看懂公式而是动手把几个仿真例子敲一遍然后在参数上做一些“反常规”的修改比如把单元间距调到0.7λ、把扫描角调到60度以上、把泰勒加权换成分贝泰勒加权等亲眼看一看方向图会发生什么变化。这种“破坏性实验”带来的理解深度比单纯读书要牢固得多。我自己当年就是在反复试错中才真正把栅瓣、副瓣、主瓣展宽这些概念从公式变成了直觉。最后再分享一个小技巧在MATLAB里调试方向图仿真时先画幅度线性的方向图再画dB归一化方向图。线性图能帮助你判断各波瓣的相对大小是否合理dB图更适合看副瓣的细节和低电平特征。两个图配合着看很多问题一眼就能定位。这个习惯我一直用到现在也推荐给你。