
简介本资源面向电子信息、通信工程及相关专业的本科生、硕士生与教研人员提供基于Matlab模拟无穷小偶极子天线近场与远场的完整仿真代码帮助理解天线辐射特性、近远场分布规律及电磁场数值计算方法。压缩包共6个文件约1.08MB包含1个m脚本主程序、1个zip压缩包、1个txt说明文档以及3个png结果图其中m文件为核心仿真代码txt用于补充说明png直观展示运行结果便于快速核对与学习。目前已有24人学习下载适合课程设计、毕业设计及科研入门参考。读者可借助主程序复现偶极子天线近场与远场的电场、磁场分布观察不同参数下的方向图与场强变化并对照说明文档理解代码结构与物理含义从而掌握Matlab在天线仿真中的建模思路与实现方法为后续复杂天线阵列或电磁兼容分析打下基础。1. 无穷小偶极子天线的近场远场为什么你算的场总在 λ/10 处开始崩很多人第一次用 Matlab 模拟偶极子天线都会卡在同一个地方远场公式背得滚瓜烂熟方向图也能画出来可一旦把观察点往天线附近挪结果就开始离谱——增益虚高、相位乱跳、能量不守恒。问题不在代码在于你拿远场近似去算近场。无穷小偶极子天线infinitesimal dipole是天线理论里最干净的解析模型它的近场和远场有严格的闭式解正好拿来当标尺什么时候能用远场公式什么时候必须回到完整场表达式一测便知。这篇笔记就围绕 Matlab 复现这条边界展开从场分量推导、网格划分、近远场判据到可视化与常见翻车点给一套能直接抄的流程。适合正在做天线仿真、射频链路预算或者想用最短代码验证电磁场公式的工程师。2. 无穷小偶极子的完整场表达式先分清哪一项在近场说了算2.1 从矢量位到 E、H 分量三个距离项各管一段无穷小偶极子沿 z 轴放置长度 dl 远小于波长电流 I 均匀分布。标准推导从磁矢量位 A 出发得到球坐标下的场分量。这里不重复教科书推导直接给结论因为落地时你需要的是一眼能看出量级关系的表达式。电场两个分量E_r (η I dl cosθ / 2π) · (1/r²) · (1 1/(jkr)) · e^(-jkr)E_θ (jη k I dl sinθ / 4π) · (1/r) · (1 1/(jkr) - 1/(kr)²) · e^(-jkr)磁场只有一个分量H_φ (j k I dl sinθ / 4π) · (1/r) · (1 1/(jkr)) · e^(-jkr)关键在括号里那几项。1/r 项是辐射场随距离一次衰减远场主角1/r² 项是感应场近场主导1/r³ 项是静电场只在极近处才压得住前两项。E_θ 里同时含 1/r、1/r²、1/r³E_r 只有 1/r² 和 1/r³没有辐射项——这就是为什么轴向电场在远场可以忽略。判断近远场的常用门槛是 kr 1即 r λ/(2π) ≈ λ/6。工程上更保守取 λ/10 或 λ/2π 作为近场边界。低于这个距离1/r² 和 1/r³ 项不能丢高于它只保留 1/r 项误差就很小。很多人翻车就是把远场公式直接套到 r 0.05λ结果 E_r 被算成零方向图完全变形。2.2 为什么用无穷小偶极子做标尺解析解可验证选它不是因为简单而是因为它有闭式解任何数值方法FDTD、MoM、FEM都能拿它当基准。你用 Matlab 写一遍完整场再写一遍远场近似两条曲线一叠误差随 kr 的变化立刻可见。这比直接上 HFSS 跑一个真实天线更有诊断价值——真实天线的近场没有解析参照你连错在哪都不知道。另一个理由是参数少。只有 I、dl、f 三个输入波长由 f 决定η 和 k 都是常数。变量少意味着你能把注意力放在距离和角度上而不是被网格、边界条件、端口设置分散精力。等这套标尺跑通了再迁移到半波振子或阵列心里有底。3. 用 Matlab 把近场和远场算出来网格、参数与向量化写法3.1 参数设定与观察网格生成先定物理量。取 f 1 GHzλ 0.3 mdl λ/50满足无穷小条件I 1 A。自由空间 η ≈ 377 Ωk 2π/λ。观察区域用球坐标网格。r 从 0.01λ 到 5λ 对数分布θ 从 0 到 πφ 固定取 0偶极子轴对称φ 不影响幅度。用对数分布是因为近场变化剧烈线性网格在近处点太稀。% 无穷小偶极子近场/远场计算 - 参数与网格 c 3e8; % 光速 m/s f 1e9; % 频率 1 GHz lambda c / f; % 波长 0.3 m k 2*pi / lambda; % 波数 eta 377; % 自由空间波阻抗 I 1; % 电流幅度 A dl lambda / 50; % 偶极子长度远小于波长 % 观察网格r 对数分布theta 线性分布 r logspace(log10(0.01*lambda), log10(5*lambda), 400); theta linspace(1e-3, pi-1e-3, 200); % 避开 0 和 pi 的奇异点 [R, TH] meshgrid(r, theta);这里 theta 避开 0 和 pi是因为 E_r 和 E_θ 含 cosθ/sinθ 和 1/sinθ 因子端点会出 Inf 或 NaN。实际天线轴向场确实存在但公式在端点需要取极限数值上直接绕开更省事。3.2 完整场与远场近似的向量化实现Matlab 里不要写双重 for 循环直接矩阵运算。完整场按 2.1 的公式逐项写远场只保留 1/r 项。% 完整场表达式 kr k * R; exp_term exp(-1j * kr); Er_full (eta * I * dl * cos(TH) ./ (2*pi)) .* ... (1 ./ R.^2) .* (1 1./(1j*kr)) .* exp_term; Etheta_full (1j * eta * k * I * dl * sin(TH) ./ (4*pi)) .* ... (1 ./ R) .* (1 1./(1j*kr) - 1./(kr).^2) .* exp_term; Hphi_full (1j * k * I * dl * sin(TH) ./ (4*pi)) .* ... (1 ./ R) .* (1 1./(1j*kr)) .* exp_term; % 远场近似只保留 1/r 辐射项 Etheta_ff (1j * eta * k * I * dl * sin(TH) ./ (4*pi)) .* ... (1 ./ R) .* exp_term; Hphi_ff Etheta_ff / eta;注意 E_θ 完整式里三项的符号1/(jkr) 和 -1/(kr)²。符号写错是高频错误会导致近场相位完全反。写完拿一个点手算验证r λ/2π 时 kr 1三项分别是 1、-j、-1实部抵消只剩虚部这是近远场过渡的特征。3.3 近场与远场的误差量化光看图不够要给出误差随 kr 的曲线。定义 E_θ 的相对误差% 取 theta 90 度这一行做误差分析 idx90 round(numel(theta)/2); Etheta_full_90 Etheta_full(idx90, :); Etheta_ff_90 Etheta_ff(idx90, :); rel_err abs(Etheta_ff_90 - Etheta_full_90) ./ abs(Etheta_full_90); figure; semilogx(r/lambda, rel_err*100, LineWidth, 1.5); xlabel(r / \lambda); ylabel(相对误差 (%)); title(远场近似相对误差随距离变化); grid on;跑出来你会看到r 0.1λ 时误差可能超过 30%r 0.5λ 降到 5% 以内r 2λ 基本小于 1%。这条曲线就是你的判据表比背 λ/2π 更直观。不同 theta 角误差不同theta 越接近 90° 误差越小因为轴向本来就没有辐射项。4. 近场和远场到底怎么分判据、可视化与三个必调参数4.1 kr 1 不是万能线按误差容忍度反推边界教科书说 kr 1 是远场但“远大于”太模糊。落地时应该反过来先定你能接受的误差再从 3.3 的曲线读出对应距离。比如要求幅度误差小于 5%从图上读 r ≈ 0.4λ要求相位误差小于 5°边界还要往外推。三个必调参数参数作用典型取值调错后果dl/λ决定“无穷小”是否成立≤ 0.02偏大时电流分布假设失效r 网格下限决定近场分辨率0.01λ太大会漏掉 1/r³ 主导区theta 避开量规避奇异点1e-3 rad太小出 NaN太大丢轴向信息dl/λ 是最容易被忽视的。无穷小偶极子的前提是电流均匀dl 超过 λ/10 后电流呈正弦分布公式不再适用。我一般取 λ/50 到 λ/100既满足条件又不至于让场强小到数值下溢。4.2 近场可视化为什么幅度图和相位图要分开看近场区幅度和相位都剧烈变化画在一张图里会互相掩盖。建议分开% 近场幅度分布theta-r 平面 figure; imagesc(r/lambda, theta*180/pi, abs(Etheta_full)); set(gca, YDir, normal); xlabel(r / \lambda); ylabel(\theta (度)); title(|E_\theta| 近场幅度分布); colorbar; % 近场相位分布 figure; imagesc(r/lambda, theta*180/pi, angle(Etheta_full)); set(gca, YDir, normal); xlabel(r / \lambda); ylabel(\theta (度)); title(E_\theta 相位分布); colorbar;幅度图上你会看到近场能量集中在 theta 90° 附近随 r 快速衰减相位图上近场相位随距离非线性滚动远场区才变成规整的 -kr 线性相位。相位图是判断近远场最灵敏的工具——远场相位斜率恒定近场斜率一直在变。4.3 从近场积分到远场方向图一致性检查一个可靠的验证方法用近场等效原理把近场面上算出的场积分得到远场再和直接远场公式对比。虽然无穷小偶极子有解析远场但走一遍积分流程能验证你的近场数据是否自洽。简化做法取 r λ 的球面作为等效面对 E_θ 和 H_φ 做远场变换。如果近场算对了积分结果应该和 3.2 的 Etheta_ff 在远区吻合。这一步在 Matlab 里用 trapz 对 theta 积分即可不需要复杂代码但能抓出符号错误和系数遗漏。5. 避坑与排查近场远场模拟里最常见的五个翻车点5.1 现象r 很小时结果为 NaN 或 Inf原因theta 网格包含 0 或 pi1/sinθ 和 cosθ/sinθ 发散。解决theta 端点内缩 1e-3 rad或者对端点单独取极限值。轴向场 E_r 在 theta0 处实际为有限值但公式形式在端点奇异数值上绕开最省事。5.2 现象近场幅度比远场还小原因E_θ 三项符号写错1/(jkr) 和 -1/(kr)² 的符号搞反导致近场项相互抵消。解决取 kr1 手算三项确认实部虚部关系或者用 3.3 的误差曲线反查符号错时误差曲线形状会异常。5.3 现象远场方向图在 theta0 处不为零原因用了 E_θ 的远场近似但 sinθ 在 0 处为零方向图应该为零。如果画出来不为零多半是网格端点处理错误或者归一化除了零。解决检查 theta 向量是否包含精确的 0归一化时用 max 而非端点值。5.4 现象dl 取 λ/10 后结果和解析解对不上原因无穷小条件被破坏电流均匀假设失效。解决dl 压到 λ/50 以下。如果必须用较长偶极子换用正弦电流分布模型那是另一套公式。5.5 现象相位图在远场区不是直线原因r 网格上限不够或者 exp(-jkr) 的符号写成了 exp(jkr)。解决确认时间约定是 e^(jωt) 还是 e^(-jωt)全文统一。Matlab 里常用 e^(-jkr) 表示外向波符号反了相位斜率就反。6. 把标尺用起来从无穷小偶极子迁移到真实天线的验证习惯这套代码的价值不在无穷小偶极子本身而在于它给你一条可量化的近远场边界。我现在的习惯是任何新天线模型上手先拿无穷小偶极子的解析场跑一遍同样的网格和误差分析确认自己的后处理流程没问题再换真实模型。这样能把“公式错”和“模型复杂”两类问题分开省下大量排查时间。具体迁移时把 3.2 的完整场替换成你的数值求解器输出3.3 的误差分析换成“数值解 vs 解析标尺”的对比。如果数值解在近场区偏离标尺先查网格分辨率远场区偏离查边界条件和辐射边界距离。无穷小偶极子的近场衰减是 1/r³ 和 1/r²如果你的数值解衰减更快说明网格吸收或边界反射在作祟。最后一个技巧把 kr 作为横轴而不是 r所有频率的结果会归一化到同一条曲线上。这样你换频率时不用重新标定边界直接读 kr 值就行。我一般把 kr1 标成近场红线kr10 标成远场绿线中间是过渡区任何结果落在这个区间都要多看一眼。这套流程我用了几年最大的教训是不要相信任何没做过近远场一致性检查的远场结果。方向图好看不代表近场算对了而近场错了远场只是碰巧对。希望帮到你。本文还有配套的精品资源点击获取