用matlab仿真泰曼格林干涉,写出代码,具体步骤如下1) 定义初始光波,以及定义光波孔径大小。 2) 模拟光传播至分束镜 3) 分束镜3:7的光强衰减模拟 4) 光束传播至mirror1; (参考光) 5) 光束传播至mirror2 (物光) 6) mirror2上的像差模拟(被测物体模拟)此时可换成任意被测物体! 7) 模拟物光反射 8) 参考光光束返回至分束镜 9) 物光光束返回至分束镜 10) 光束叠加(参考光+物光) 11) 光束传播至CCD屏幕 12) 计算光强
时间: 2024-02-27 21:56:37 浏览: 174
以下是使用MATLAB实现泰曼格林干涉的代码:
```matlab
% 定义常数
lambda = 632.8e-9; % 波长
k = 2*pi/lambda; % 波数
z = 10e-2; % 光程差
d = 1e-3; % 孔径大小
L = 0.1; % 平面波前大小
N = 1024; % CCD像素数目
dx = L/N; % 像素大小
% 生成初始光波
x = linspace(-L/2,L/2,N);
y = linspace(-L/2,L/2,N);
[X,Y] = meshgrid(x,y);
E0 = ones(N,N);
% 模拟光传播至分束镜
E1 = propTF(E0,L,lambda,z);
% 分束镜3:7的光强衰减模拟
Eref = sqrt(0.3)*E1;
Eobj = sqrt(0.7)*E1;
% 光束传播至mirror1 (参考光)
Eref = propTF(Eref,L,lambda,z/2);
% 光束传播至mirror2 (物光)
Eobj = propTF(Eobj,L,lambda,z/2);
% mirror2上的像差模拟(被测物体模拟)
% 此处可替换为任意被测物体
Eobj = Eobj.*exp(1j*k*X.^2/(2*z));
% 模拟物光反射
Eobj = propTF(Eobj,L,lambda,z/2);
% 参考光光束返回至分束镜
Eref = propTF(Eref,L,lambda,z/2);
% 物光光束返回至分束镜
Eobj = propTF(Eobj,L,lambda,z/2);
% 光束叠加(参考光+物光)
E = Eref + Eobj;
% 光束传播至CCD屏幕
E = propTF(E,L,lambda,z);
% 计算光强
I = abs(E).^2;
% 显示结果
figure(1);
imagesc(x,y,I);
colormap(gray);
axis square;
```
其中,`propTF`函数是用于模拟光传播的传输函数:
```matlab
function Eout = propTF(Ein,L,lambda,z)
% 计算像平面大小
N = size(Ein,1);
dx = L/N;
x = (-N/2:N/2-1)*dx;
[X,Y] = meshgrid(x);
% 计算传输函数
H = exp(1j*k*z)*exp(-1j*pi*lambda*z*(X.^2+Y.^2));
% 计算输出场
Eout = ifft2(H.*fft2(Ein));
end
```
使用以上代码即可实现泰曼格林干涉的仿真。
阅读全文