首页 >> 大全

FDTD Script 命令学习-pinch

2023-08-11 大全 30 作者:考证青年

参考FDTD官网pinch命令介绍:

1、pinch命令功能:

(1)第一个语法out=pinch(x):对多维度矩阵进行降低维度操作,删除原始矩阵变量中变量数为1的维度,并进行赋值;例子:y=pinch(x) 假如原始x为一个四维矩阵(1*1*1*M),前三个维度的变量数都是1,经过pinch命令后,矩阵的维度降为M*1阶矩阵,并对新的矩阵y进行赋值,对应关系如下 y(i)=x(1,1,1,i);

(2)第二个语法pinch(x,i):对多维度矩阵x进行第i个维度的删除操作,并进行赋值;

例子:y=pinch(x,2) 假如原始x为一个四维N*M*K*P阶矩阵,经过pinch(x,2)命令,将x矩阵的第二个维度(变量数为M)进行删除,并对新的矩阵y进行赋值,y矩阵为三维N*K*P阶矩阵,对应关系y(i,j,k)=x(i,1,j,k) (备注:赋值时x矩阵中被删除的第二个维度,均以1替代,即以该维度下的首个变量来进行赋值);

思考:如果N,K,P中某一个或几个为1,那么进过pinch(x,2)进行y矩阵赋值后,新矩阵y是几维矩阵?

(3)第三个语法pinch(x,i,j):该语法算是第二个语法的补充;与语法2相同点均可以对矩阵x进行第i个维度的删除操作,并进行赋值;不同点在于语法2进行赋值时对于被删除的维度上的变量默认采用第一个变量进行赋值,而语法3在赋值时对于被删除的维度上的变量可以低j个变量来进行赋值;

例子:y=pinch(x,2,4)假如原始x为一个四维N*M*K*P阶矩阵,经过pinch(x,2,4)命令,将x矩阵的第二个维度(变量数为M)进行删除,并对新的矩阵y进行赋值,y矩阵为三维N*K*P阶矩阵,对应关系y(i,j,k)=x(i,4,j,k) (备注:赋值时x矩阵中被删除的第二个维度,均以4替代,即以该维度下的第四个变量来进行赋值);

2. pinch命令官网例子解读:

“ the power named "field" is a 2D in the XY plane set to and . In this case, the Ex will be a 4D , where the are (X) by (Y) by (Z) by (F). Since this is a 2D in the XY plane, there will be only one Z , which means the of the third (Z) will be 1.”

翻译:假设名称为field的功率监视器是一个在XY平面上的2D监视器,用来到频率间多个频率下的功率值。在该情况下,变量Ex将会是一个四维变量,维度是(x)长度*(y)长度*(z)长度*(f)长度。由于该监视器是在XY平面的2D监视器,所以只有一个Z位置值,即第三个维度Z变量数为1.

“With the pinch and find , we can a to be . First, the find is used to the index of the value to . Next, the pinch is used to the data in Ex to that . A pinch is used to the Z . The end is the 2D Ex(x,y) at a value of z and f.”

翻译:使用pinch和find命令,我可以选择特定频率下的数据来进行成像。第一,find命令用来确定频率接近的频率索引值(即为在f矩阵中变量所处位置)。第二,使用pinch命令来选择频率下的Ex结果。第三,第二个pinch命令用来删除单变量的Z维度。最终结果是在特定的z位置和频率下的2D矩阵Ex(x,y)。

m="field";      # 监视器名称,该监视器为xy平面的2D
x=getdata(m,"x");  # 获取监视器中x的数据
y=getdata(m,"y");
z=getdata(m,"z");
f=getdata(m,"f");
Ex=getdata(m,"Ex");
fi=find(f,250e12);  # 在矩阵f中找到最接近250e12的值,并将其索引(即第几个变量)赋予fi
Ex=real(Ex);     # 取Ex的实部    
?"Size of x: "+num2str(length(x)); # 显示x矩阵的变量数
?"Size of y: "+num2str(length(y));
?"Size of z: "+num2str(length(z));
?"Size of f: "+num2str(length(f));
?"Size of Ex: "+num2str(size(Ex));
to_plot=pinch(Ex,4,fi);   # select frequency. Size will be length(x) by length(y) by length(z) 将Ex矩阵中第四个维度(f)进行删除,赋值时该维度变量取第fi个变量,该命令功能为选取出频率接近250e12时的其他维度变量并赋值给to_plot
to_plot=pinch(to_plot);   # remove singleton z dimension. Size will be length(x) by length(y) 再次采用pinch命令将单变量的维度z消除,新的to_plot矩阵维度为(x)长度*(y)长度
image(x*1e6,y*1e6,to_plot, "x (um)","y (um)","Ex at "+num2str(f(fi)/1e12)+ " THz" ); # 以x和y为轴(单位um),对变量Ex(x,y)做图;图表名称Ex at 250 THz

以上为本人对pinch命令的学习笔记,希望对大家有帮助。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了