我要的是利用matlab模拟单色高斯光束照射透镜轴棱锥时聚焦场中的轴上光强分布
时间: 2024-02-17 15:02:39 浏览: 25
好的,下面是利用 Matlab 模拟单色高斯光束照射透镜轴棱锥时聚焦场中的轴上光强分布的步骤:
1. 定义光束参数,包括波长、腰半径、距离透镜的距离等。
```
lambda = 633e-9; % 波长
w0 = 1e-3; % 腰半径
z = 50e-3; % 距离透镜焦平面的距离
```
2. 计算光束在焦平面处的半径和光强分布。
```
zR = pi * w0^2 / lambda; % 光束 Rayleigh 范围
wz = w0 * sqrt(1 + (z / zR)^2); % 距离焦平面 z 处的光束半径
I0 = 1; % 入射光强
x = linspace(-10*w0, 10*w0, 1000); % 轴向坐标范围
I = (2 * I0 / (lambda * z) * (w0 / wz).^2) .* exp(-2 * x.^2 ./ wz^2); % 轴上光强分布
```
3. 定义透镜参数,包括焦距和光阑直径。
```
f = 50e-3; % 透镜焦距
D = 10e-3; % 光阑直径
```
4. 计算透镜的传输函数,采用菲涅尔近似公式。
```
k = 2 * pi / lambda; % 波数
z1 = 0.5 * (z - sqrt(z^2 + D^2)); % 透镜前一侧距离
z2 = z - z1; % 透镜后一侧距离
T = exp(-1i * k / (2 * f) * (x.^2 / z2 - x.^2 / z1)); % 传输函数
```
5. 计算光束经过透镜后的光强分布。
```
Is = abs(fftshift(fft(I))) / max(abs(fftshift(fft(I)))); % 光束频谱
Ts = fftshift(fft(T)); % 传输函数的频谱
If = ifft(ifftshift(Is .* Ts)); % 透镜后的光强分布
```
6. 绘制光束经过透镜后在焦平面处的光强分布图像。
```
plot(x, abs(If).^2);
xlabel('轴向坐标 x (m)');
ylabel('光强分布 I (W/m^2)');
title('高斯光束经过透镜后在焦平面处的轴上光强分布');
```
完整的 Matlab 代码如下:
```
lambda = 633e-9; % 波长
w0 = 1e-3; % 腰半径
z = 50e-3; % 距离透镜焦平面的距离
zR = pi * w0^2 / lambda; % 光束 Rayleigh 范围
wz = w0 * sqrt(1 + (z / zR)^2); % 距离焦平面 z 处的光束半径
I0 = 1; % 入射光强
x = linspace(-10*w0, 10*w0, 1000); % 轴向坐标范围
I = (2 * I0 / (lambda * z) * (w0 / wz).^2) .* exp(-2 * x.^2 ./ wz^2); % 轴上光强分布
f = 50e-3; % 透镜焦距
D = 10e-3; % 光阑直径
k = 2 * pi / lambda; % 波数
z1 = 0.5 * (z - sqrt(z^2 + D^2)); % 透镜前一侧距离
z2 = z - z1; % 透镜后一侧距离
T = exp(-1i * k / (2 * f) * (x.^2 / z2 - x.^2 / z1)); % 传输函数
Is = abs(fftshift(fft(I))) / max(abs(fftshift(fft(I)))); % 光束频谱
Ts = fftshift(fft(T)); % 传输函数的频谱
If = ifft(ifftshift(Is .* Ts)); % 透镜后的光强分布
plot(x, abs(If).^2);
xlabel('轴向坐标 x (m)');
ylabel('光强分布 I (W/m^2)');
title('高斯光束经过透镜后在焦平面处的轴上光强分布');
```
上述代码可以绘制出高斯光束经过透镜后在焦平面处的轴上光强分布图像。