ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

无穷小偶极子天线建模:Matlab近场远场解析与仿真校验

无穷小偶极子天线建模:Matlab近场远场解析与仿真校验 简介本资源面向电子信息、通信工程及相关专业的本科生、硕士生与教研人员提供基于Matlab模拟无穷小偶极子天线近场与远场分布的完整仿真代码帮助理解天线辐射特性、电磁场分布规律及近远场转换等核心知识点。压缩包共6个文件包含1个m脚本主程序、1个zip压缩包、1个txt说明文档及3个png结果图整体约1.08MB结构精简便于快速定位与运行。其中m文件为核心仿真代码txt提供使用说明png直观展示运行结果适合课程设计、实验报告与科研入门参考。目前已有24人学习下载。读者可获得可直接运行的Matlab源码、清晰的近远场仿真结果图以及配套说明便于对照学习天线建模思路与参数设置方法也可在此基础上修改频率、电流等参数开展扩展实验为后续天线阵列与电磁仿真学习打下基础。1. 无穷小偶极子天线建模为什么它值得你花一个下午跑通做天线仿真的人迟早会撞上同一个问题全波仿真软件跑一个结构要几十分钟甚至几小时可你只是想验证一个馈电点附近的场分布趋势或者给学生讲清楚近场和远场到底差在哪。这时候无穷小偶极子infinitesimal dipole就是那个最趁手的解析模型——它把电流元假设成一段长度远小于波长的理想线元电流均匀分布于是麦克斯韦方程组能直接给出闭式解。这份基于 Matlab 的资源包干的就是把近场和远场的解析表达式落成可跑的脚本让你在几秒内看到场随距离、随角度的变化而不是等 HFSS 或 CST 出结果。它适合三类人一是电磁场课程的学习者需要把课本上那堆公式变成能画出来的图二是做天线设计的工程师想拿解析解当基准去校验全波仿真的数值结果三是需要快速估算近场耦合、远场方向图的人。资源本身不依赖任何工具箱纯 Matlab 基础函数就能跑这意味着你装完 Matlab 直接就能用不用折腾附加组件。下面我从模型怎么来的、脚本怎么跑、参数怎么调、坑在哪一层层拆开。2. 从电流元到闭式解近场远场表达式怎么落到代码里2.1 无穷小偶极子的场分量推导逻辑无穷小偶极子放在球坐标系原点沿 z 轴放置长度 dl 远小于波长 λ电流 I 均匀分布。它的磁场只有 φ 分量电场有 r 和 θ 两个分量。近场和远场的区别不在公式本身而在 1/r 的高次项谁占主导。完整表达式里磁场 Hφ 正比于 (1/r jk/r²) 乘以一个相位因子电场 Er 正比于 (1/r² jk/r³)Eθ 正比于 (1/r jk/r² 1/r³)。当 kr 远大于 1也就是距离远大于 λ/2π 时1/r 项压倒一切剩下的就是大家熟悉的远场辐射场当 kr 小于 1高次项不能丢近场的储能特性就出来了。脚本要做的第一件事就是把这些分量在给定频率、电流、长度下算出来。常见做法是定义一个波数 k 2π/λ然后对每个采样点 r 和 θ 分别计算。这里有个容易翻车的地方很多人直接把远场公式套到近场区域结果画出来的图在 r 很小时完全不对还以为是代码写错了。实际上远场公式本身就是近场公式在 kr 1 时的近似你拿近似去算精确区域当然对不上。2.2 脚本结构与关键参数设置资源包里的主脚本一般长这样先定义物理常数和天线参数再生成 r 和 θ 的网格然后逐点算场分量最后画图。下面这段是我按常见实现整理出来的骨架你可以对照手里的脚本看结构是否一致。% infinitesimal_dipole.m % 无穷小偶极子近场与远场计算 c 3e8; % 光速 (m/s) f 1e9; % 工作频率 1 GHz lambda c / f; % 波长 k 2*pi / lambda; % 波数 dl lambda / 50; % 偶极子长度远小于波长 I 1; % 电流幅度 (A) eta 377; % 自由空间波阻抗 (Ohm) % 采样范围近场到远场 r linspace(lambda/100, 5*lambda, 500); theta linspace(0, pi, 180); [R, T] meshgrid(r, theta); % 场分量含近场高次项 H_phi (I * dl * sin(T) / (4*pi)) .* (1j*k./R 1./R.^2) .* exp(-1j*k*R); E_r (I * dl * cos(T) / (2*pi)) .* (eta ./ R.^2 1./(1j*k*R.^3)) .* exp(-1j*k*R); E_theta (1j * eta * I * dl * sin(T) / (4*pi)) .* ... (k./R 1./(1j*R.^2) - 1./(k*R.^3)) .* exp(-1j*k*R); % 远场近似只保留 1/r 项 E_theta_ff (1j * eta * k * I * dl * sin(T) / (4*pi)) .* exp(-1j*k*R) ./ R;这段代码的逻辑很直白先把波长、波数、波阻抗这些由频率和介质决定的量算出来再用 meshgrid 生成距离和角度的二维采样网格。H_phi、E_r、E_theta 三个表达式里括号内各项分别对应 1/r、1/r²、1/r³ 的贡献指数项是相位。远场近似那行只保留了 1/r方便你对比近似和精确解的差距。参数方面f 决定波长dl 必须远小于 λ一般取 λ/50 到 λ/100 都行取大了均匀电流假设就不成立r 的起点建议从 λ/100 开始太靠近原点场值会发散这是模型本身的奇点不是数值问题。2.3 近场与远场的分界怎么判断分界点没有绝对标准工程上常用 kr 1 即 r λ/2π 作为近远场过渡的参考。1 GHz 时 λ 约 0.3 米λ/2π 约 4.8 厘米。你可以把 r 的采样范围设成从 λ/100 到 5λ然后在图上标出这条分界线看场分量在两侧的行为差异。近场区 E_r 和 E_theta 量级相当储能为主远场区 E_theta 主导E_r 迅速衰减到可以忽略。脚本里如果只画 E_theta 的幅度你会看到它在近场区先降后升再按 1/r 下降这个非单调行为就是高次项在作怪很多第一次跑的人会以为程序有 bug。3. 跑通脚本从参数扫描到方向图与场分布可视化3.1 近场区域场强随距离的变化曲线拿到脚本后第一件事不是改代码而是先按默认参数跑一遍确认能出图。然后做距离扫描固定 θ 90°让 r 从 λ/100 变到 5λ画 |E_theta| 随 r 的变化。你会看到近场区曲线抖动远场区平滑下降。下面这段是画距离扫描的常用写法。% 距离扫描固定 theta 90 度 theta0 pi/2; r_scan linspace(lambda/100, 5*lambda, 1000); H (I * dl * sin(theta0) / (4*pi)) .* (1j*k./r_scan 1./r_scan.^2) .* exp(-1j*k*r_scan); E_th (1j * eta * I * dl * sin(theta0) / (4*pi)) .* ... (k./r_scan 1./(1j*r_scan.^2) - 1./(k*r_scan.^3)) .* exp(-1j*k*r_scan); figure; semilogy(r_scan/lambda, abs(E_th), LineWidth, 1.5); xlabel(距离 r / \lambda); ylabel(|E_\theta| (V/m)); title(近场到远场电场幅度变化); grid on;这里用 semilogy 是因为场强跨了好几个数量级线性坐标看不清近场细节。r_scan/lambda 把距离归一化到波长方便你换频率时不用改横轴含义。跑完这张图你就能直观看到 kr 1 附近曲线斜率的变化远场区应该接近 -1 次方斜率近场区斜率更陡。3.2 远场方向图与近场球面分布远场方向图是天线的基本指标。无穷小偶极子的远场方向图是标准的 sinθ 形状跟方位角 φ 无关所以三维方向图是个甜甜圈。脚本里可以用 polarplot 画 E 面方向图也可以用 surf 画三维。近场分布则要复杂得多因为 E_r 和 E_theta 同时存在且相位不同合成场的空间分布会随距离变化。常见做法是取一个固定 r画 |E| 在 θ 从 0 到 π 的分布对比近场和远场两个 r 值下的形状差异。% 远场方向图E 面 theta_plot linspace(0, 2*pi, 360); E_far abs(sin(theta_plot)); % 归一化远场方向图 figure; polarplot(theta_plot, E_far, LineWidth, 1.5); title(无穷小偶极子远场方向图 (E 面)); % 近场与远场球面分布对比 r_near lambda / (2*pi) / 2; % 近场区 r_far 5 * lambda; % 远场区 theta_s linspace(0, pi, 180); E_near_val abs((1j * eta * I * dl * sin(theta_s) / (4*pi)) .* ... (k./r_near 1./(1j*r_near.^2) - 1./(k*r_near.^3)) .* exp(-1j*k*r_near)); E_far_val abs((1j * eta * k * I * dl * sin(theta_s) / (4*pi)) .* ... exp(-1j*k*r_far) ./ r_far); figure; plot(theta_s*180/pi, E_near_val/max(E_near_val), r, ... theta_s*180/pi, E_far_val/max(E_far_val), b--, LineWidth, 1.5); legend(近场 r\lambda/4\pi, 远场 r5\lambda); xlabel(\theta (度)); ylabel(归一化幅度);归一化处理是为了让两条曲线能放在同一张图里比形状。近场曲线在 θ 接近 0 和 π 时不会像远场那样归零因为 E_r 分量在轴向有贡献这是近场和远场最直观的区别之一。如果你发现近场曲线在轴向翘起来别慌那是对的。3.3 参数扫描频率、长度、电流对场的影响想验证模型边界最直接的办法是扫参数。频率升高波长变短同样的物理距离对应的 kr 变大近远场分界向原点收缩。dl 增大到接近 λ/10 时均匀电流假设开始失效解析解和全波仿真的偏差会明显变大这时候脚本结果只能当定性参考。电流 I 只影响幅度不改变分布形状扫它意义不大但可以用来验证线性。下面是一个频率扫描的片段。freq_list [0.5e9, 1e9, 2e9]; figure; hold on; for f0 freq_list lam c / f0; k0 2*pi / lam; r0 linspace(lam/100, 5*lam, 800); E0 abs((1j * eta * I * dl / (4*pi)) .* ... (k0./r0 1./(1j*r0.^2) - 1./(k0*r0.^3)) .* exp(-1j*k0*r0)); plot(r0/lam, E0, LineWidth, 1.5); end legend(0.5 GHz,1 GHz,2 GHz); xlabel(归一化距离 r/\lambda); ylabel(|E_\theta|);横轴用 r/λ 归一化后三条曲线应该基本重合因为物理规律只依赖 kr 这个无量纲量。如果跑出来不重合检查一下 dl 是不是也跟着频率变了——如果 dl 固定为某个绝对长度那不同频率下 dl/λ 不同曲线自然分叉。这个细节很多人第一次扫频时会忽略。4. 避坑与排查跑无穷小偶极子脚本时最容易翻车的五件事4.1 近场场值发散图上一片空白现象r 起点设成 0 或非常小的值画出来的场强是 Inf 或 NaN图像空白。原因解析表达式里有 1/r² 和 1/r³ 项r 趋近 0 时数学上就是奇点这是模型本身的特性不是代码错误。解决把 r 的起点设在 λ/100 到 λ/1000 之间根据你要看的细节决定。如果确实需要靠近原点的值单独用对数坐标画并接受原点附近数值不可信的事实。4.2 远场公式套近场曲线形状对不上现象用只保留 1/r 的远场公式去算 r λ/10 处的场画出来的方向图和精确解差很多。原因远场公式是 kr 1 时的渐近近似kr 小于 1 时高次项贡献不可忽略。解决近场区域必须用完整表达式脚本里把精确解和远场近似都算出来画在一起对比你就能看到近似从哪个距离开始可用。一般 kr 10 以后远场公式误差小于 1%。4.3 dl 取太大均匀电流假设失效现象dl 取到 λ/4 甚至更大脚本还能跑但结果和全波仿真对不上。原因无穷小偶极子的前提是 dl λ电流沿长度均匀分布。dl 大了之后电流相位沿天线变化均匀假设不成立。解决dl 控制在 λ/50 以内做参数研究时如果要增大 dl心里清楚这是在突破模型边界结果只能定性看趋势。4.4 相位因子符号写反方向图镜像现象远场方向图或者场随距离的变化趋势和预期相反。原因exp(-1jkr) 和 exp(1jkr) 对应不同的波传播方向约定写反了相位就反了。解决统一用 exp(-1jkr) 表示外向波这是工程上最常见的约定。如果你从不同教材抄公式先确认它们的时谐因子是 exp(jωt) 还是 exp(-jωt)两者混用必翻车。4.5 网格太粗近场细节被抹平现象近场区曲线看起来平滑得不像话高次项导致的非单调行为没出来。原因r 或 θ 的采样点太少meshgrid 分辨率不够。解决近场区域采样要密r 方向至少几百个点θ 方向至少 180 个点。远场区域可以稀疏一些。如果画三维图卡顿先降分辨率看趋势确认后再提高分辨率出正式图。5. 进阶技巧用解析解校验全波仿真与自定义场分量输出跑通基础脚本之后这个资源真正的价值在于当基准。我一般会拿它做两件事一是校验 HFSS 或 CST 的远场结果二是生成自定义的近场分布数据给后续处理用。校验的做法很简单在 HFSS 里建一个同样频率、同样长度的偶极子提取远场方向图和增益和 Matlab 解析解归一化后叠在一起。如果全波仿真在远场区对不上优先检查辐射边界距离和网格收敛性而不是怀疑解析解。解析解在无穷小偶极子这个理想模型下是精确的对不上通常是数值设置的问题。自定义输出方面你可以把 E_r、E_theta、H_phi 的复数值导出成 mat 文件供其他脚本做近场耦合分析或 SAR 估算。导出时注意保留幅度和相位别只存 abs否则后续算功率流就没法做了。下面这段是导出示例。% 导出近场复数值供后续处理 r_out linspace(lambda/100, lambda, 200); theta_out linspace(0, pi, 90); [R_out, T_out] meshgrid(r_out, theta_out); E_r_out (I * dl * cos(T_out) / (2*pi)) .* ... (eta ./ R_out.^2 1./(1j*k*R_out.^3)) .* exp(-1j*k*R_out); E_th_out (1j * eta * I * dl * sin(T_out) / (4*pi)) .* ... (k./R_out 1./(1j*R_out.^2) - 1./(k*R_out.^3)) .* exp(-1j*k*R_out); save(dipole_nearfield.mat, R_out, T_out, E_r_out, E_th_out, f, dl, I);保存时把频率、长度、电流一起存进去下次加载不用回忆参数。我吃过这个亏隔了两周回来想复现一张图发现 mat 文件里只有场值没有参数只能从头再跑一遍。从那以后我每次导出数据都强制把元信息一起写进文件这个习惯帮我省了很多后悔药。还有一个容易被忽略的点近场到远场的过渡不是突变的kr 在 1 到 10 之间有一段过渡区场的行为既不像纯近场也不像纯远场。如果你要做精确的近场耦合估算过渡区必须用完整表达式不能图省事切到远场公式。这个区间在低频时对应的物理距离可能很大比如 100 MHz 时 λ/2π 约 0.48 米过渡区能延伸到好几米做电磁兼容分析时尤其要注意。最后说一个验证技巧用坡印廷矢量看能量流。近场区径向坡印廷矢量的时间平均值接近零能量主要在源附近来回振荡远场区径向坡印廷矢量恒为正能量真正辐射出去。你可以在脚本里算 Re(E × H*) 的径向分量画出来一看就明白近远场的物理本质差别。这个验证比单纯看场强曲线更有说服力也更能帮你理解为什么天线近场分析不能只看幅度。希望帮到你。本文还有配套的精品资源点击获取
返回列表