赞
踩
本文分为两部分:
可以采用脚本,如上图我们选择保存 mode5,脚本如下,直接在 Lumerical 中运行即可。
可以保存某个电场分量,也可以保存全部数据。
modename = 'mode5';
E = getresult(modename,'E'); # 保存全部电场数据
Ex = getresult(modename,'Ex'); # 保存x方向上的电场数据
filename="ElectricField785";
matlabsave(filename,E,Ex);
## 也可以先 copycard 到 d-card 之后保存
modename2 = 'mode_nir';
copydcard(modename,modename2);
Ex = getdata('::'+modename2,'Ex');
以全部电场数据处理为例,单方向电场比较简单,可自行测试:
clear;clc; % 读取数据 filename = 'ElectricField785.mat'; load(filename); data = E; Ex_dsave=Ex; x = data.x;y = data.y;E = data.E; % 重新排列 Nx = length(x);Ny = length(y); Nz = size(E, 1) / (Nx * Ny); Ex = reshape(E(:, 1), Nx, Ny, Nz); % x 分量 Ey = reshape(E(:, 2), Nx, Ny, Nz); % y 分量 Ez = reshape(E(:, 3), Nx, Ny, Nz); % z 分量 % 总电场 E = (Ex.^2 + Ey.^2 + Ez.^2).^0.5; % 要绘图的数据,这里我们以 Ex 为例,其实直接导出这个分量更方便 currentE = (real(Ex)); % 处理后就和直接从 Lumerical 保存的 Ex 数据一样了 % 或者总电场 %currentE = (real(E));
figure;
f = pcolor(x*1e6,y*1e6,rot90(currentE,-1));
set(f,'LineStyle','none');colorbar;colormap jet;axis equal;
axis([-2 2 -1 2])
可以直接根据建模脚本绘制截面图
Ex = real( reshape(E(:, 1), Ny, Nx, Nz) );
Ey = real( reshape(E(:, 2), Ny, Nx, Nz) );
Ez = real( reshape(E(:, 3), Ny, Nx, Nz) );
![在这里插入图片描述](https://img-blog.csdnimg.cn/30a2100cf397465083947ca17e8fc309.png
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。