天天看點

【光學】基于matlab模拟雙孔幹涉附matlab代碼

1 内容介紹

通過Matlab軟體程式設計,實作光學雙縫幹涉的計算機仿真.仿真結果對學生了解光學原理的基本概念很有幫助,提高了教學效果.

2 部分代碼

%REDME!!!該仿真模拟了雙孔幹事實驗中光屏逐漸遠離雙孔時幹涉圖像的變化,按空格鍵仿真停止

%—————————————————————————————————————

flag = 1;

t = 0;

d = 0.2;                                            %兩孔的距離(兩孔中心正對幹涉屏中心)

%預設兩孔平行于X軸

Lambda = 500e-6;                                    %幹涉光波長(mm)

x_scale = 120;                                      %圖像長度

y_scale = 4000;                                     %圖像寬度

x_temp = linspace(-x_scale/2, x_scale/2, 601);

y_temp = linspace(-y_scale/2, y_scale/2, 501);

[X, Y] = meshgrid(x_temp, y_temp);                  %建立網格矩陣用于二維繪圖

while flag

    input = get(gcf, 'currentkey');

    if strcmp(input, 'space');

        clc;

        flag = 0;

    end

    D = 1500 + t;                                           %雙孔到幹涉屏的距離(mm)

    R1 = sqrt((X-d/2).^2+Y.^2+D^2);

    R2 = sqrt((X+d/2).^2+Y.^2+D^2);                     %計算網格坐标點到兩孔的距離

    Delte = (R1-R2)/Lambda * 2*pi;                      %計算網格坐标點到兩孔的相位差

    I = (1./R1).^2 + (1./R2).^2 + 2*(1./R1).*(1./R2).*cos(Delte);

    %計算兩孔到網格坐标點的相對光強

    image(56 * I * D^2);                                %開始繪圖

    colormap gray;

    axis off;

    axis equal;

    title('楊氏雙孔幹涉(Young’s double pinhole interference)','FontSize',12);

    pause(0.2);

    t = t + 15;

end

3 運作結果

4 參考文獻

部落客簡介:擅長​​智能優化算法​​、​​神經網絡預測​​、​​信号處理​​、​​元胞自動機​​、​​圖像處理​​、​​路徑規劃​​、​​無人機​​、​​雷達通信​​、​​無線傳感器​​等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯系部落客删除。