FDTD数据导出到Matlab作图
FDTD计算得到的电场分布,但是FDTD通过另存为jpg或者截屏所得到的图片分辨率很低,得到的图片往往不能直接使用。因此,可以通过脚本输入到Maltab,然后再利用Matlab处理图片并输出。
1. FDTD原始结果
这里我们选用三角纳米片的电场分布仿真结果进行举例。图1是FDTD直接输出的结果(截图)。
2. FDTD结果导出到Matlab
FDTD数据导入到Matlab主要参考Lumerical官网的介绍文档matlabsave。
可以通过如下脚本实现电场的读取:
E=getresult("z=0","E");
E2=getelectric("z=0");
E1=sqrt(E2);
matlabsave("tri120.mat",E,E1);
其中E得到的是一个struct结果:
包含以下字段的 struct:
E: [48841×3 double]
Lumerical_dataset: [1×1 struct]
f: 4.2827e+14
lambda: 7.0000e-07
x: [221×1 double]
y: [221×1 double]
z: 0
struct中E是一个包含三个x, y, z三个方向的电场分布,是矢量信息,而通过getelectric并开根号得到的是电场的标量数值。值得一说的是,对结构体struct中内容的调用可以采用E.x等命令进行直接读取。
值得注意的是,FDTD和Matlab采用的矩阵规则不同,输出后的结果需要进行非共轭转置,才能够和FDTD的结果进行对应。
x,y, E 等的信息除了利用getdata或getresult获取以外,也可以通过右键单击,将结果输出到脚本,可以得到相同的效果。
3. Matlab作图
将电场结果,x,y,z数据导出到matlab中之后,作图可以有多种方案,contour,contourf,pcolor等均可以实现,pcolor更为方便。contourf和pcolor的语句如下:
% [C,h] = contourf(E,M) %counterf, M越大,越精细
h = pcolor(x,y,E) %pcolor
如图3为pcolor输出的结果。作图后,仍需进行如下调整:
set(h,'LineStyle','none'); %线型设置为无
colorbar %色标
colormap jet %色标模式选用jet
shading interp % 插值
版权声明:
本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
明明如月!
喜欢就支持一下吧
打赏
微信
支付宝