matlab迈克尔逊干涉仿真代码
时间: 2023-07-28 15:07:32 浏览: 106
以下是一个简单的 Matlab 仿真代码,用于模拟 Michelson 干涉仪:
```Matlab
% 定义常量
c = 3e8; % 光速
lambda = 632.8e-9; % 激光波长
L = 1; % 干涉仪臂长
% 定义干涉仪中的光路
d = L/2; % 半波片距离
r1 = L/2; % 镜子1到分束器的距离
r2 = L/2; % 镜子2到分束器的距离
% 定义输入光的复振幅
E_in = 1;
% 计算分束器后的光路
E1 = E_in/sqrt(2); % 光路1的复振幅
E2 = E_in/sqrt(2); % 光路2的复振幅
% 计算光路1的相位差
phi1 = 2*pi*r1/lambda;
% 计算光路2的相位差
phi2 = 2*pi*r2/lambda;
% 计算半波片引起的相位差
delta = pi;
% 计算输出光的复振幅
E_out = E1*exp(1i*(phi1+delta)/2) + E2*exp(1i*(phi2-delta)/2);
% 计算输出光的强度
I_out = abs(E_out)^2;
% 绘制图形
figure;
plot(0:I_out);
xlabel('位移 (m)');
ylabel('光强');
```
这个代码模拟了一个 Michelson 干涉仪,其中包含两个镜子和一个分束器。输入的激光光线通过分束器被分成两条光路,分别经过镜子反射后再次汇聚在分束器处。在其中一个光路上加入了一个半波片,使得两个光路的相位差为 $\pi$。通过计算两个光路的相位差和振幅,可以计算出输出光的强度,从而模拟 Michelson 干涉实验的结果。
阅读全文