光波传输的角谱理论【理论,实例及matlab代码】
1.理論基礎
光波在自由空間中的傳播可以通過多種理論來描述。最常用的就是菲涅爾衍射傳播、夫朗禾費衍射傳播以及角譜理論。
本質上來說,三者是一致的,只是適用條件有所不同。弗朗禾費衍射因為近似條件較為苛刻一般來說是在自由空間的遠場或者透鏡系統中較為常見。菲涅爾衍射的近似條件較為簡單,只需要在近軸區域,一般來說都適用,但是它的計算過程相比弗朗禾費而言更加復雜。基于衍射的傳播理論是在空域對光波進行描述,而角譜理論對光波進行了抽象,從頻域進行分析,任何的復雜光波都可以認為是由各種頻率分量的平面光波組成,每一個平面光波都是一個面基元。例如復雜光波可以分解為
觀察上式可以發現,指數項實際是一個頻率為和的平面光波,是其對應的權重,習慣上被稱為頻譜函數。回顧傅里葉變換基本理論,可以發現對頻譜函數作逆傅里葉變換得到了光波函數,對光波作傅里葉變換就得到了頻譜函數,在MATLAB里面,可以通過fft(一維)或者fft2(二維)實現快速轉變。?
圖1 角譜理論分析過程?利用角譜理論分析問題的一般流程如圖1所示。假定在自由空間中有兩個平面,z=0的輸入面以及z=z的輸出平面,在輸入面有一個任意的光波函數,我們的目的就是確定其在自由空間傳遞到輸出面時的光波函數。首先,對作傅里葉變換得到其頻譜,再乘上傳遞函數得到輸出面的頻譜,作逆傅里葉變換得到輸出面的波函數。所需要解決的關鍵問題就是確定傳遞函數。
光波函數的頻率為和的成分為,光波函數的對應的成分為,比較兩個函數,可以發現輸出面相比于輸入面多了一項,且
?所以可以得到自由空間的傳遞函數
2.實例演示
根據上面介紹的原理,可以實現一些非常有趣的衍射現象。假定采用一個振幅分布為歸一化高斯型的光源(大小10.24mm*10.24mm,波長532nm,束腰為5.32mm,如圖2所示)照射一個自由曲面(最大厚度為3mm,面型儲存在z_g.mat矩陣中,如圖3所示)。那么采用上面的分析,可以得到其在自由空間傳播200mm后得到一張菲涅爾的圖像,如圖4所示,十分有趣。
圖2 光源振幅分布 圖3 自由曲面面型 圖4 衍射場振幅分布3.MATLAB代碼
clc; clear all; close all; %% Generate the input Gaussian beam mm=1e-3; nm=1e-9; lambda=532*nm;% wavelength k=2*pi/lambda;% wavevector n=1.494;% The rafractive index of freeform elements SL=10.24*mm ;% Side length N=512*1;% samples for side length dx=SL/N;%sample interval d=200*mm;% The distance between the input and output planes x = -0.5*SL:dx:0.5*SL-dx;% coordinate y = x; [X,Y]=meshgrid(x,y); I_input=exp(-2*((X /(0.5* SL)).^2+(Y/(0.5* SL)).^2)); %The input Gaussian beam figure; imagesc(x,y,I_input); axis square; xlabel('x(m)'); ylabel('y(m)'); colorbar; title('Amplitude of Gaussian beam');%% phase modulataion by the freeform surface load('z_g.mat'); OPD = 3*mm+(n-1)*z_g; P_input = exp(1i*k*OPD); figure;mesh(X,Y,z_g); title('Surface of lens'); xlabel('x(m)'); ylabel('y(m)'); zlabel('t(m)'); u1 = I_input.*P_input;%% obtain the output field using Angular spectrum fx=-1/(2*dx):1/SL:1/(2*dx)-1/SL; %freq coords [FX,FY]=meshgrid(fx,fx); H=exp(1i*k*d*sqrt(1-(lambda*FX).^2-(lambda*FY).^2)); %trans func H=fftshift(H); U1=fft2(fftshift(u1)); %shift.fft source filed U2=H.*U1; %multiply u2=fftshift(ifft2(U2)); figure; imagesc(x,y,abs(u2)); axis square; xlabel('x(m)'); ylabel('y(m)'); colorbar; title('Amplitude of output');總結
以上是生活随笔為你收集整理的光波传输的角谱理论【理论,实例及matlab代码】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机过程控制系统教材,过程控制系统——
- 下一篇: oracle存储过程无效字符_ORA-2