第4節.SPIDER系統-信號產生的模擬

我們現在學會了模擬脈衝的傳播,那我們現在可以做什麼了呢?

下面我來講講測量超短脈衝時域特性的工具,SPIDER技術的模擬。

SPIDER:Spectral phase interferometry for direct electric-field reconstruction. 光譜相位干涉直接電場重建.

這是98年提出的一個測量超短脈衝 的技術。這個計算是通過接收光譜信號來實現的,因為我們知道超短脈衝具有豐富的頻率成分。這個主要原理就是產生兩個脈衝:

1.兩個脈衝直接要有頻率差。

2.這兩個脈衝要有時間差。

時間差是使得接收光譜產生載頻,產生調製用的。有些改進的SPIDER技術是可以不需要的。我們這次模擬的這個過程,SPIDER結構採用的是SPIDER第一篇文章裡面的結構。

就是下圖

簡單說一下,這個結構就是超短脈衝進入到SPIDER系統後,分解成兩束光,一束經過展寬器,一個經過脈衝複製器。

展寬器就是利用不同的光譜分量的延時不一樣,導致待測脈衝變成了啁啾脈衝。可以用光柵對或者一個玻璃塊來實現。

脈衝複製器就是把一個超短脈衝,變成兩個和待測脈衝一樣的脈衝。可以用一個邁克爾遜干涉儀來實現。

然後產生的兩個短脈衝和啁啾脈衝進行非共線和頻。而啁啾脈衝與短脈衝接觸的時候可以當做和單色光進行作用,而這兩個超短脈衝的時刻不一樣,所以啁啾脈衝等價的單色光的頻率也會有一點差別。而這個差別,就把超短脈衝的光譜相位被調製到了光譜干涉條紋上了。

下面我簡化了和頻的計算,就真的把這個過程當作數學中的和頻。就是在複數描述下,將兩個信號進行乘法。因為光學和頻還會相當於經過一個特殊的濾波器,我們這裡先簡化一下吧,以後講光學和頻怎麼算再說。這裡這種簡化不會有太多的問題,因為做SPIDER,和頻的晶體都要很薄,很薄帶寬就好,從數學上就越接近我們的近似。

下面就開始我們的matlab模擬:這一章涉及比較多第1節和第2節的內容,看不懂先把前面的學會了再看下去。

第一步,定義變數空間,還有信號光S。這裡用的是複數描述,為了節省內存。同時由於我們這裡面涉及到比較多的光,所以用了結構體來表達S。後面也用結構體來表達其他光。

clcclear%%units;c = 299792458*m/s;[t,delta_ft] = domain(20*ps,2^12); %%改了f_0 = c/(800*nm);duration = 35*fs;A = exp(-(t./duration).^2);S.Et = A; %%改了S.f0 = f_0;ft = S.f0+delta_ft; %%加了

第二步,啁啾脈衝的模擬。

%% 展寬器% SF57% https://refractiveindex.info/tmp/data/glass/schott/SF57.htmlstretcher.length = sqrt(2)*6*cm*2*2;stretcher.n=@(x) sqrt(1+1.81651371./(1-0.0143704198./x.^2)+0.428893641./(1-0.0592801172./x.^2)+1.07186278./(1-121.419942./x.^2));%%E_t = S.Et;n = stretcher.n;syms w_tkz = n(2*pi*c/w_t/um)*w_t/c;dk_dwt = diff(kz,w_t);inv_vg = double(subs(dk_dwt,{w_t},{2*pi*f_0}));ng = inv_vg*c;E_f = fft(E_t);z = stretcher.length;n_f = n(c./ft./um);n_f = real(n_f);k = 2*pi*ft/c.*n_f; E_f = E_f.*exp(-i.*k.*z).*exp(+i.*2*pi*ft.*inv_vg*z);E_t = ifft(E_f);%%Chirped.Et = E_t;Chirped.f0 = f_0;

第三步,產生複製脈衝。這裡就用信號系統裡面的知識:想讓一個信號在時間在延時,只需要頻率域上乘以一個exp(i*2*pi*ft*延時)。複製脈衝是兩個脈衝,一個通過S提前,一個通過S滯後,脈衝之間的時間間隔是tao。所以分別提前和滯後tao/2。

%% 複製脈衝tao = 0.25*ps;E_t = S.Et;E_f = fft(E_t);E_f = E_f.*exp(-i*2*pi*ft*tao/2)+E_f.*exp(i*2*pi*ft*tao/2);E_t = ifft(E_f);replicas.Et = E_t;replicas.f0 = f_0;

第四步,和頻。和頻信號是R。SP代表光譜儀獲取的數據,我們獲取的是R在頻域上的功率譜。 可以看到這個R的f0是2*f_0。為什麼呢?我就不推導了。我講下步驟:先寫出啁啾脈衝的實數描述和複製脈衝的實數描述。然後把他們的混頻寫出來:乘起來,然後提取高頻部分。然後在把這個混頻寫成複數描述。就可以得到2f_0.

R.Et = replicas.Et.*Chirped.Et;R.f0 = 2*f_0;E_t = R.Et;E_f = fft(R.Et);SP = abs(E_f).^2;

最後附上完整代碼

clcclear%%units;c = 299792458*m/s;[t,delta_ft] = domain(20*ps,2^12); %%改了f_0 = c/(800*nm);duration = 35*fs;A = exp(-(t./duration).^2);S.Et = A; %%改了S.f0 = f_0;ft = S.f0+delta_ft; %%加了%% 展寬器% SF57% https://refractiveindex.info/tmp/data/glass/schott/SF57.htmlstretcher.length = sqrt(2)*6*cm*2*2;stretcher.n=@(x) sqrt(1+1.81651371./(1-0.0143704198./x.^2)+0.428893641./(1-0.0592801172./x.^2)+1.07186278./(1-121.419942./x.^2));%%figure(1)subplot(2,3,1)plot(fftshift(t)/fs,fftshift(abs(S.Et).^2));xlim([-500 500])xlabel(fs)title(入射光)%%E_t = S.Et;n = stretcher.n;syms w_tkz = n(2*pi*c/w_t/um)*w_t/c;dk_dwt = diff(kz,w_t);inv_vg = double(subs(dk_dwt,{w_t},{2*pi*f_0}));ng = inv_vg*c;E_f = fft(E_t);z = stretcher.length;n_f = n(c./ft./um);n_f = real(n_f);k = 2*pi*ft/c.*n_f; E_f = E_f.*exp(-i.*k.*z).*exp(+i.*2*pi*ft.*inv_vg*z);E_t = ifft(E_f);%%Chirped.Et = E_t;Chirped.f0 = f_0;subplot(2,3,2)plot(fftshift(t)/ps,fftshift(nmlz(abs(Chirped.Et).^2)));xlim([-10 10])xlabel(ps)title(啁啾光)%% 複製脈衝tao = 0.25*ps;E_t = S.Et;E_f = fft(E_t);E_f = E_f.*exp(-i*2*pi*ft*tao/2)+E_f.*exp(i*2*pi*ft*tao/2);E_t = ifft(E_f);replicas.Et = E_t;replicas.f0 = f_0;subplot(2,3,3)plot(fftshift(t)/ps,fftshift(nmlz(abs(replicas.Et).^2)));xlim([-0.5 0.5])xlabel(ps)title(複製脈衝)%%R.Et = replicas.Et.*Chirped.Et;R.f0 = 2*f_0;E_t = R.Et;E_f = fft(R.Et);SP = abs(E_f).^2;subplot(2,1,2)hold onplot(fftshift(R.f0+delta_ft)/THz,nmlz(fftshift(SP)))hold offxlim([730 770])xlabel(THz)title(光譜儀接收)

這個專欄講怎麼模擬,怎麼通過光譜數據還原出超短脈衝時域波形的,就不放在這個專欄。

其實SPIDER有很多種結構,例如我們有個工作在裡面加了四分之一波片,引入二步相移,還有種沒有延時的SPIDER。還有我們的SPIDER裡面的脈衝複製是完美的,但是實際上,邁克爾遜干涉產生的複製脈衝的兩個脈衝跟原始脈衝會不一樣,因為會有一定透視。這個我們也可在模擬中加上去。

現在你們可以根據這4節課的知識,理論上可以模擬絕大部分的SPIDER系統,強度自相關儀,自相關干涉儀,這些不考慮光波空間分布的儀器了。


推薦閱讀:

Matplotlib中線條的風格
翼子板主要工藝成形過程模擬

TAG:MATLAB | 數值模擬 | 光學 |