
简介这份资源围绕阵列天线方向图展开面向无线通信、天线设计方向的学习者与工程人员帮助理解单元个数、阵元间距与波长变化对辐射特性的影响。压缩包共4个文件以m脚本为主整体约2KB体积轻量便于在MATLAB环境中直接运行与修改参数。内容涉及2单元、4单元、8单元等不同阵列规模以及λ/2、λ、λ/4等间距条件下的方向图对比可直观观察主瓣宽度、增益变化与旁瓣抑制效果。已有2136人学习下载说明其在相关课程实验与自学场景中具有一定参考价值。读者可借助这些脚本复现不同参数组合下的方向图曲线对照理解波束赋形与相位控制的基本规律并在此基础上调整参数开展扩展实验为阵列配置选型与性能分析提供可操作的练习素材。1. 阵列天线方向图对比一份能直接跑起来的 MATLAB 资源包做阵列天线仿真的人大概都经历过这个阶段公式推了一遍代码写了一版方向图出来却和预期对不上主瓣宽度、副瓣电平、栅瓣位置全凭感觉调。这份资源包把均匀线阵、均匀面阵、非均匀间距阵、加权阵几种典型结构的方向图计算整理成一套可运行的 MATLAB 脚本每个脚本对应一种阵列形式参数集中在文件头部改完直接出图。它解决的不是“方向图是什么”这种教科书问题而是“我手上这个阵元数、间距、加权方式方向图到底长什么样、副瓣压到多少、扫描时会不会冒栅瓣”这类落地问题。适合正在做阵列综合、波束成形入门验证或者需要快速对比不同布阵方案的高年级学生和一线射频工程师。资源本身不依赖工具箱之外的第三方库MATLAB R2018b 以上版本即可跑通。2. 方向图计算的底层逻辑从阵因子到归一化增益2.1 阵因子为什么是方向图的核心阵列方向图由阵元方向图和阵因子共同决定。工程上做对比时通常假设阵元为全向或理想余弦方向图把注意力放在阵因子上因为阵因子决定了主瓣指向、副瓣电平、零点和栅瓣这些关键指标。均匀线阵的阵因子写成AF(θ) Σ w_n · exp(j·k·d·n·sinθ)n 0…N-1其中 k 2π/λd 为阵元间距w_n 为第 n 个阵元的复加权。这个式子是后面所有脚本的骨架区别只在于 w_n 怎么取、d 是否等间距、求和维度是一维还是二维。资源包里每个脚本开头都有一段注释把当前阵列的阵因子表达式写清楚改参数前先对一遍公式能省掉大量“图不对但不知道哪错”的时间。归一化处理是另一个容易翻车的点。方向图通常按最大辐射方向归一化即除以 |AF(θ)| 的最大值得到 0 dB 主瓣。如果直接画线性幅度副瓣和主瓣的差距看不出来如果归一化时取了错误的角度范围主瓣可能被截断。脚本里统一用AF_norm 20*log10(abs(AF)/max(abs(AF)))并在注释里标明扫描角度范围要覆盖主瓣和至少前三个副瓣。2.2 四种阵列形式的参数映射资源包覆盖的四种形式参数含义各不相同混用会直接导致结果失真。下面这张表是各脚本头部参数的实际含义照着填不会错阵列形式关键参数典型取值影响指标均匀线阵N、d/λN8d0.5λ主瓣宽度、栅瓣均匀面阵Nx、Ny、dx、dy8×80.5λ二维波束形状非均匀间距阵间距向量 d_vec0.4λ~0.7λ 混合副瓣电平加权阵权向量 w汉明窗/切比雪夫副瓣抑制、主瓣展宽均匀线阵的 d 超过 0.5λ 就会出现栅瓣这是物理规律不是代码 bug非均匀间距阵的间距向量长度必须等于 N-1少一个元素求和维度就对不上加权阵的权向量长度必须等于阵元数且归一化方式要和阵因子公式一致。这些约束在脚本里用assert做了检查跑之前会先报错而不是出一张错图。2.3 一个最小可运行示例以均匀线阵为例核心计算部分不到二十行但每一行都有对应的物理含义% 均匀线阵方向图计算 N 8; % 阵元数 d 0.5; % 阵元间距单位波长 theta -90:0.1:90; % 扫描角度度 k 2*pi; % 波数d 已按波长归一化 % 阵因子求和每个阵元的相位差为 k*d*n*sin(theta) AF zeros(size(theta)); for n 0:N-1 AF AF exp(1j*k*d*n*sind(theta)); end % 归一化并转 dB AF_norm 20*log10(abs(AF)/max(abs(AF))); plot(theta, AF_norm); xlabel(角度 (度)); ylabel(归一化增益 (dB)); ylim([-40 0]); grid on;这段代码里d用的是波长归一化值所以k直接取 2π不需要再除 λ。sind而不是sin是因为 theta 以度为单位换成弧度会得到完全错误的周期。ylim([-40 0])是刻意截断的低于 -40 dB 的副瓣在工程上意义不大截断后主瓣和近区副瓣的对比更清楚。如果要做扫描对比把exp(1j*k*d*n*sind(theta))改成exp(1j*k*d*n*(sind(theta)-sind(theta0)))theta0 为扫描角这是相控阵波束扫描的标准写法。3. 四种阵列的对比实操改参数、出图、读指标3.1 均匀线阵与面阵的对比流程线阵脚本跑通后面阵脚本的改动集中在双重求和。面阵的阵因子是两个方向线阵阵因子的乘积当行列加权可分离时脚本里用矩阵运算实现% 均匀面阵方向图8x8间距 0.5 波长 Nx 8; Ny 8; dx 0.5; dy 0.5; theta -90:1:90; phi 0:1:360; % 构建角度网格 [TH, PH] meshgrid(theta, phi); AF zeros(size(TH)); for m 0:Nx-1 for n 0:Ny-1 AF AF exp(1j*2*pi*(m*dx*sind(TH).*cosd(PH) n*dy*sind(TH).*sind(PH))); end end AF_norm 20*log10(abs(AF)/max(abs(AF(:)))); surf(TH, PH, AF_norm); shading interp;这里max(abs(AF(:)))的(:)不能省二维矩阵直接取 max 得到的是行向量归一化会按列进行图会歪。meshgrid的顺序是 theta 在外、phi 在内和surf的坐标顺序一致反过来画出来是转置的。面阵的栅瓣条件比线阵严格dx 和 dy 任一超过 0.5λ 都会在对应切面出现栅瓣脚本里对两个间距分别做了检查。对比线阵和面阵时重点看三个指标主瓣的 -3 dB 宽度、第一副瓣电平、扫描到 ±60° 时主瓣是否明显展宽。8 元均匀线阵、0.5λ 间距、等幅加权时第一副瓣约 -13.2 dB这是等幅阵的经典值如果跑出来不是这个数先查归一化和角度步长。面阵在同样参数下两个主切面的副瓣和线阵一致但对角切面的副瓣会略高这是二维布阵的固有特性不是脚本问题。3.2 非均匀间距与加权的调参方法非均匀间距阵的目的是打散周期性把栅瓣能量分散成多个低副瓣。资源包里的间距向量是手动给定的改法有两种一是围绕 0.5λ 做小幅随机扰动二是按特定比例递增。前者实现简单但副瓣不稳定后者可控性更好。脚本里给了一组示例间距[0.42 0.55 0.48 0.61 0.45 0.58 0.51]对应 8 阵元的 7 个间距跑出来的第一副瓣比等间距低 3~5 dB代价是主瓣略微展宽。加权阵的调参更直接权向量换成窗函数即可% 汉明加权均匀线阵 N 16; d 0.5; w hamming(N); % 生成汉明权 w w / sum(w); % 权归一化保证主瓣增益为 0 dB theta -90:0.1:90; AF zeros(size(theta)); for n 0:N-1 AF AF w(n1) * exp(1j*2*pi*d*n*sind(theta)); end AF_norm 20*log10(abs(AF)/max(abs(AF)));w w/sum(w)这一步是为了让主瓣峰值归一化到 0 dB如果不除不同窗之间的主瓣高度不可比。汉明窗能把副瓣压到 -43 dB 左右但主瓣宽度大约是等幅阵的 1.5 倍这是副瓣抑制的固有代价。切比雪夫加权可以在给定副瓣电平下得到最窄主瓣但权向量需要用chebwin(N, 副瓣dB)生成副瓣设得越低主瓣越宽脚本注释里给了 -20 dB 和 -30 dB 两组参考值。3.3 出图后怎么读指标图出来只是第一步读指标才是对比的目的。主瓣宽度按 -3 dB 点量脚本里用find定位归一化增益首次低于 -3 的两个角度差值即波束宽度。副瓣电平取主瓣之外的最大峰值注意要排除主瓣附近的过渡区否则会把主瓣肩部误判为副瓣。栅瓣的判断看 ±90° 范围内是否出现与主瓣同量级的峰值等幅均匀阵在 d0.5λ 时必然出现加权阵在 d 更大时也会出现加权只能压幅度不能消栅瓣。扫描角的对比容易被忽略。把扫描角设到 60°均匀线阵的主瓣会从 12.8° 展宽到约 25°增益下降 1~2 dB这是扫描损失脚本里单独画了扫描前后的对比曲线。如果扫描到 60° 后副瓣明显抬高说明间距偏大需要回到 0.5λ 以下重新布阵。这些指标在四类阵列之间横向对比时建议固定 N 和 d只改布阵或加权方式否则变量太多读不出结论。4. 避坑与排查方向图跑歪的五个常见原因4.1 角度单位混用导致周期错乱现象方向图出现密集振荡主瓣位置和理论值对不上。原因sin和sind混用theta 以度定义却用了弧度函数周期被压缩了 57 倍。解决全脚本统一用sind/cosd或者在入口处theta deg2rad(theta)后统一用弧度函数二选一不要中途切换。4.2 归一化取错维度现象面阵方向图整体偏移最大值不在 0 dB。原因二维矩阵用max(abs(AF))得到行向量除法按列广播等价于每列单独归一化。解决改成max(abs(AF(:)))先拉成一维再取最大值。线阵是一维向量不受影响所以这个坑往往在从线阵切到面阵时才暴露。4.3 间距向量长度不匹配现象非均匀间距阵报维度错误或者求和结果只有一半阵元的贡献。原因N 个阵元对应 N-1 个间距间距向量少一个元素时循环越界或提前截断。解决脚本里加assert(length(d_vec) N-1)改参数时先过断言。这个检查看起来多余但改间距做对比时最容易漏。4.4 加权向量未归一化现象不同加权方式的主瓣高度不一致副瓣对比失去意义。原因窗函数生成的权向量和不为 1主瓣峰值随权向量总和变化。解决加权后统一w w/sum(w)再做阵因子求和。注意切比雪夫权的和不一定为 1同样要归一化。4.5 扫描角公式漏减参考相位现象设了扫描角但主瓣仍指向 0°。原因阵因子里的相位项只写了k*d*n*sind(theta)没有减去k*d*n*sind(theta0)扫描角没有进入相位差。解决改成exp(1j*k*d*n*(sind(theta)-sind(theta0)))theta0 为期望扫描角。这个错误在只做接收方向图时不容易发现一做发射扫描就露馅。5. 进阶用法把单点对比变成批量扫描的验证习惯单张方向图只能看一个工况真正做选型对比时我习惯把参数扫一遍再下结论。资源包里的脚本都是单次运行结构改成批量扫描不需要重写在外面套一层循环即可。比如对比不同阵元数对主瓣宽度的影响% 批量扫描阵元数记录 -3dB 波束宽度 N_list [4 8 16 32]; bw zeros(size(N_list)); for idx 1:length(N_list) N N_list(idx); d 0.5; theta -90:0.05:90; AF zeros(size(theta)); for n 0:N-1 AF AF exp(1j*2*pi*d*n*sind(theta)); end AF_norm 20*log10(abs(AF)/max(abs(AF))); % 找主瓣两侧 -3dB 点 below find(AF_norm -3); bw(idx) theta(below(end)) - theta(below(1)); end disp(table(N_list, bw, VariableNames, {N,Beamwidth_deg}));这段代码的关键在theta步长取 0.05°步长太粗时 -3 dB 点定位误差能到 1° 以上对比 N4 和 N32 时这个误差会盖过真实差异。below(end)和below(1)取的是所有低于 -3 dB 的角度首尾前提是主瓣只有一个且副瓣都低于 -3 dB等幅阵满足这个条件加权阵副瓣压得深也满足但如果副瓣高于 -3 dB极端加权或栅瓣这个取法会出错需要先找主瓣峰值再向两侧搜索。批量跑完我一般会看三件事波束宽度是否随 N 近似按 1/N 下降、第一副瓣是否稳定在 -13.2 dB 附近、扫描 60° 时增益损失是否在 2 dB 以内。三个都对上说明脚本和参数都没问题可以放心拿去做方案对比。有一次我偷懒没做批量验证直接拿单点图去汇报结果换了个阵元数后副瓣冒到 -8 dB回头查是间距设成了 0.6λ栅瓣被当成了副瓣。从那以后我每次改完参数都强制跑一遍批量扫描把波束宽度和副瓣电平打成表再出图图可以骗人表不会。希望这套脚本和排查清单能帮你在阵列对比上少走几个弯路。本文还有配套的精品资源点击获取