利用Matlab處理Lumerical FDTD的三角納米片電場分布仿真結果

    FDTD計算得到的電場分布,但是FDTD通過另存為jpg或者截屏所得到的圖片分辨率很低,得到的圖片往往不能直接使用。因此,可以通過腳本輸入到Maltab,然后再利用Matlab處理圖片并輸出。
??但是將數據從FDTD輸出到Matlab中,并不是想象中那么簡單,經歷了好幾次坑,反復摸索之后,得到了一種比較可行的方案,介紹如下。

1. FDTD原始結果

??這里我們選用三角納米片的電場分布仿真結果進行舉例。圖1是FDTD直接輸出的結果(截圖),可以明顯看出,x方向和y方向的比例并不相同,而且不容易調節成比例尺相同,我目前有兩個可行的方案可以解決這個問題,一種是先建立一個方形的圖片,利用簽字筆在電腦屏幕上畫出方形的邊界,然后再反復調節FDTD的圖片,使其邊界和畫出的邊界重合;第二種方案相對更精準也更方便,借用Snipaste截圖軟件創建一個方形的貼圖,這個好處是這個貼圖可以一直置于頂層,然后再調節FDTD中圖片的邊界即可。這兩種方案都是調節好之后進行截圖,因為直接另存,FDTD輸出的圖片更加模糊,而且也沒有在FDTD Solutions軟件中找到可以設置分辨率的選項(FDTD Solutions版本為2018版),因此可以使用高分辨率截圖軟件或者較高分辨率的軟件,然后將圖片放到PS或者AI中進行分辨率的進一步調節。FDTD中能夠調節的著實比較少,很有必要繼續調整。
利用Matlab處理Lumerical FDTD的三角納米片電場分布仿真結果的圖1

2. FDTD結果導出到Matlab

??FDTD數據導入到Matlab主要參考Lumerical官網的介紹文檔matlabsave。
??可以通過如下腳本實現電場的讀?。?/p>

1
2
3
4
E=getresult("z=0","E");
E2=getelectric("z=0");
E1=sqrt(E2);
matlabsave("tri120.mat",E,E1);

其中E得到的是一個struct結果:

1
2
3
4
5
6
7
8
9
包含以下字段的 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獲取以外,也可以通過右鍵單擊,將結果輸出到腳本,可以得到相同的效果。
利用Matlab處理Lumerical FDTD的三角納米片電場分布仿真結果的圖2

3. Matlab作圖

將電場結果,x,y,z數據導出到matlab中之后,作圖可以有多種方案,contour,contourf,pcolor等均可以實現,pcolor更為方便。利用Matlab處理Lumerical FDTD的三角納米片電場分布仿真結果的圖3

contourf和pcolor的語句如下:

1
2
[C,h] = contourf(E,M)    %counterf, M越大,越精細
h = pcolor(x,y,E)        %pcolor

如圖3為pcolor輸出的結果。作圖后,仍需進行如下調整:

1
2
3
4
set(h,'LineStyle','none');     %線型設置為無
colorbar                       %色標
colormap jet                   %色標模式選用jet
axis equal                     %x, y 等比例尺

最后,如果有仿真相關需求,歡迎通過微信公眾號聯系我們。

微信公眾號:320科技工作室。

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

16
13
2