龙伯透镜简介

龙伯透镜是一种折射率不均匀介质透镜
这种透镜的介质折射率分布具有球对称性,即折射率仅与到球心的距离有关。它的工作原理是龙伯光学理论,由于早期低损耗低介电常数材料工艺不成熟,直到上世纪 70 年代末才应用于工程。

龙伯透镜的工作原理如下图所示。其中点 F 为馈电点,亦是透镜面上的焦点。要使透镜辐射口面具有高效率,必须使 AB 上为等相位面波前
因此,从 F 点发出的每一射线 FNPQ 必须具有等电长度。或者反过来说,平行波束的射线经过介质折射后都聚焦于同一点 F,这就是龙伯透镜内介质折射率确定的依据(费马定律)。

对于一个半径为 RRR 的龙伯透镜,透镜内部的折射率 n(r)n(r)n(r) 为径向尺寸 rrr 的函数,它在 rrr 处的介电常数可表示为
ϵ(r)=n(r)2=2−(rR)2\epsilon(r) = n(r)^2 = 2 - (\frac{r}{R})^2 ϵ(r)=n(r)2=2−(Rr​)2

根据这个介电常数分布公式,下面我们在 2.4 GHz 下设计一个圆柱形龙伯透镜,假设透镜的半径为 1.5λ1.5\lambda1.5λ,将透镜内部离散化为 30 层具有不同介电常数的介质,则介电常数的计算程序如下:

%% 龙伯透镜参数设置
c = 3e8;        % 光速
freq = 2.4e9;      % 工作频率
lambda = c/freq*1e3;   % 波长 mm
R = 1.5*lambda;        % 透镜半径  mm
N = 30;     % 离散层数
r = 0:R/N:R;    % 各层介质的半径分布
r1 = [0, r(2:end)-R/(2*N)];     % 各层介质的中心处的径向距离
epsilon_r = 2 - (r1/R).^2;     % 各层介质的介电常数分布(对应介质中心处径向距离)
%%%% 绘图
theta = linspace(0, 2*pi, 50);
[theta_mat, r_mat] = meshgrid(theta, r);
[~, epsilon_r_mat] = meshgrid(theta, epsilon_r);
[x_mat, y_mat, z_mat] = pol2cart(theta_mat, r_mat, epsilon_r_mat);   % 极坐标系转换为直角坐标系
surf(x_mat, y_mat, z_mat);

安装 CST-MATLAB API

CST-MATLAB API 可以很方便地实现 Matlab 与 CST 之间的交互。

点击 MATLAB 主页的附加功能,直接搜索 “CST”,找到 “hgiddenss/CST_App”,点击添加到 MATLAB,详细安装图解如下。

在 CST 中自动构建龙伯透镜

首先需要创建 CST 项目,注意,此时应确保 CST 软件为打开状态。

%% 创建CST项目
CST = CST_MicrowaveStudio(cd, 'LuneburgLens.cst'); % 在当前目录下创建 CST 项目

定义不同介电常数材料

%% 定义不同介电常数材料
mu = 1;   % 磁导率
c_map = parula(length(epsilon_r));   % 材料颜色列表
for i = 1:Nmaterial = ['Material_', num2str(i)];CST.addNormalMaterial(material, epsilon_r(i+1), mu, c_map(i,:));    % 添加材料
end

创建透镜中的离散介质层

%% 创建透镜中的离散介质层
z = [-0.25, 0.25].*lambda;    % 圆柱形龙伯透镜高度为二分之一波长
for i = 1:Nname = sprintf('cylinder_%d',i);component = 'Component 1';material = ['Material_', num2str(i)];CST.addCylinder(r1(i+1), r1(i), 'z', 0, 0, z, name, component, material);   % 添加圆柱体
end

设置仿真参数

%% 设置仿真参数
%%% 设置仿真频率
CST.setFreq(2,3)
%%% 添加两个线源,分别位于 (0,R) 和 (1/sqrt(2)R,1/sqrt(2)R)
CST.addDiscretePort([0, 0], [R, R], z, 0.1, 50);
CST.addDiscretePort([R, R]*cosd(45), [R, R]*cosd(45), z, 0.1, 50);
%%% 设置边界条件
CST.setBoundaryCondition('xmin','open add space','xmax','open add space','ymin',...'open add space','ymax','open add space');
CST.setBoundaryCondition('Zmin', 'Electric', 'ZMax', 'Electric');  % 相当于透镜在z方向上无限延展
%%% 设置对称面,减小计算区域
CST.addSymmetryPlane('Z', 'electric');
%%% 设置计算区域
CST.setBackgroundLimits([lambda, lambda], [lambda, lambda], [0 0]);
%%% 添加场监视器
CST.addFieldMonitor('EField', freq/1e9);
CST.addFieldMonitor('farfield', freq/1e9);
%%% 选择时域求解器
CST.setSolver('td');
%%% 开启仿真
CST.runSimulation;

仿真结果

馈源 1 对应的近场分布:

馈源 1 对应的远场分布:

馈源 2 对应的近场分布:

馈源 2 对应的远场分布:

参考文献

[1] 刘璟. 多波束龙伯透镜天线技术研究[D].电子科技大学,2010.
[2] CST_App 的 Github 项目地址:https://github.com/hgiddenss/CST_App.

利用 Matlab 在 CST 中自动构建龙伯(Luneburg)透镜相关推荐

  1. matlab 龙格现象,利用MATLAB分析数值积分中的龙格(Runge)现象(1)

    实验目的: 观察Lagrange插值及数值积分中的龙格(Runge)现象.了解数值不稳定现象. 实验题目:(1)对于函数f(x)=1/(1+x^2),-4<=x<=4进行Lagrange插 ...

  2. 利用matlab从TXT中读数据1

    TXT是纯文本文件,常用的几种函数有load函数,importdata函数,dlmread函数,textread函数. 科学计数法如1.03乘10的8次方,可简写为"1.03e+08&quo ...

  3. TeamCity+Gradle实现自动构建App安装包和补丁包

    相信大家在用AS打包的时候,最烦的就是打包要很久,如果可以自动化打包岂不是很方便,所以我之前也是被安排做了这个任务.利用TeamCity+Gradle去实现自动构建App安装包和补丁包,这里做个记录. ...

  4. 【完整示例】采用jenkins pipeline实现自动构建并部署至k8s

    前言 在日常开发中,经常会有发布的需求,而且经常会碰到各种环境,比如:开发环境.测试环境.生产环境.虽然可以使用手动构建.上传服务器部署的方式,但在微服务架构下一个项目经常包含多个微服务的部署,如果用 ...

  5. 简述网络调研的作用_利用龙伯球透镜天线提升高铁4G网络覆盖

    透镜天线,一种能够通过电磁波,将点源或线源的球面波或柱面波转换为平面波从而获得笔形.扇形或其他形状波束的天线.通过合适设计透镜表面形状和折射率 n,调节电磁波的相速以获得辐射口径上的平面波前.透镜天线 ...

  6. 用Matlab求解高等数学中的问题(不定积分,定积分,多元微积分,微分方程,级数问题)

    用Matlab求解高等数学中的问题 一.求解不定积分 利用matlab符号工具箱中的求积函数int, 可求函数的不定积分,int函数的调用格式如下: int(S) int(S,v) 说明: (1)in ...

  7. 利用matlab实现POD分解(在一维信号或二维流场矢量中的应用)

    利用matlab实现POD分解(在一维信号或二维流场矢量中的应用) 0 前言 0.1 matlab中特征值计算 0.2 matlab中SVD分解计算 0.3 信号的正交性 1 一维信号POD分解 1. ...

  8. gitlab 自动推送代码到gitee_Gitlab 利用 Webhook+jenkins 实现自动构建与部署

    之前部署了Gitlab的代码托管平台和Jenkins的代码发布平台.通常是开发后的代码先推到Gitlab上管理,然后在Jenkins里通过脚本构建代码发布. 这种方式每次在发版的时候,需要人工去执行j ...

  9. matlab sheet名字,MATLAB得到excel多个非默认sheet名_怎样利用matlab去读取一个excel表中多个sheet的数据并导入一个sheet中?...

    如何用matlab读取一个excel表格中的若干个工作表 如果数字: xlsread('e:/shiyanshuju/shiyanbiaoge','sheet1','B1:D1440') 最好个表格放 ...

最新文章

  1. 医院电脑瘫痪 病人排长队苦等5小时
  2. JFET直耦级联放大电路:MPF102,2SK102
  3. 私有云相对更流行的公有云和混合云有什么优势?
  4. 深入理解BN、合并conv+BN公式推导
  5. 解析Visual C# 7.2中的private protected访问修饰符
  6. linux常用网络命令详解,linux网络命令详解(鸟哥)
  7. java怎么编程方程_[编程入门]自定义函数求一元二次方程-题解(Java代码)
  8. 突然!OPPO再放大招:瀑布屏了解一下
  9. 转!!存储过程和触发器
  10. 现代操作系统读书笔记
  11. Word小技巧总结(持续更新中……)
  12. HDFS Rack Awareness详解
  13. (一)关于爬虫之请求
  14. vb.net 换行符的转换
  15. 在HTML页面里调用PHP的方法
  16. Introduction to Programming I
  17. ajax判断远程服务器是否存在某文件
  18. 商品交易系统产品介绍
  19. 关于题目15820831的答案问题
  20. Python网络爬虫与信息提取(15)—— 新浪网新闻爬虫并分类整理

热门文章

  1. 基于51单片机的倒计时秒表proteus仿真设计
  2. 怪物的AI脚本(1)
  3. 三菱PLC FX系列 结构化编程/FBD.4工位转盘带4个步 进,PLC程序有完整的注释,有威伦触摸屏程序,电气图纸,I/O表,电气BOM.
  4. 地下水位监测系统-地下水超采综合治理
  5. centos7安装luarocks
  6. JAVA java学习(2)——————java下载安装与环境配置
  7. 振南的znFAT FAT32文件系统
  8. 现代优化算法(五): 蚁群算法
  9. java调用webService接口的几种方法
  10. ListView高效率刷新