利用matlab实现高斯光束入射轴棱锥后不同光束半径形成的轴上光强分布
时间: 2023-09-16 22:12:45 浏览: 124
高斯光束入射轴棱锥后的光强分布可以用标量衍射公式来计算,即该公式描述了光束在传播过程中的衍射和聚焦效应。在matlab中,可以使用以下代码实现:
```matlab
% 定义常数
lambda = 632.8e-9; % 波长
k = 2 * pi / lambda; % 波数
f = 100e-3; % 焦距
z = 0:0.01:f; % 传播距离
% 定义高斯光束参数
w0 = 1e-3; % 初始光束半径
zR = pi * w0^2 / lambda; % 焦距
w = w0 * sqrt(1 + (z./zR).^2); % 光束半径
R = z .* (1 + (zR./z).^2); % 曲率半径
psi = atan(z./zR); % Gouy相位
% 定义轴上光强分布
I = (2 * besselj(1, k*w.^2./(2*R))./(k*w.^2./R)).^2; % 衍射因子
I = I ./ max(I); % 归一化
% 绘制图像
plot(z, I);
xlabel('传播距离 z [m]');
ylabel('轴上光强分布');
title('高斯光束入射轴棱锥后不同光束半径形成的轴上光强分布');
```
这段代码的核心是计算轴上光强分布的公式。其中,我们先定义了常数和高斯光束参数,然后使用衍射因子计算轴上光强分布。最后,我们对光强进行了归一化,并绘制了图像。
需要注意的是,这段代码只考虑了高斯光束入射轴棱锥的情况。如果你需要考虑其他类型的入射光束,你需要相应地修改计算光强分布的公式。
相关问题
我要的是利用matlab模拟单色高斯光束照射透镜轴棱锥时聚焦场中的轴上光强分布
好的,下面是利用 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('高斯光束经过透镜后在焦平面处的轴上光强分布');
```
上述代码可以绘制出高斯光束经过透镜后在焦平面处的轴上光强分布图像。
利用Matlab仿真利用轴棱锥将高斯光束转换为贝塞尔光束,并输出不同光束的三位光强分布图
首先,需要了解一下什么是贝塞尔光束和轴棱锥。
贝塞尔光束是一种特殊的光束,其光强分布呈现出环形或螺旋形。而轴棱锥是一种透镜系统,可以将高斯光束转换为贝塞尔光束。
在Matlab中,可以利用beamprop工具箱进行仿真模拟。以下是实现的步骤:
1. 定义高斯光束
```
lambda = 1.064e-6; % 波长
w0 = 10e-6; % 激光腰半径
zR = pi*w0^2/lambda; % Rayleigh距离
z = 0; % 传输距离
zmax = 500e-6; % 最大传输距离
N = 512; % 空间采样点数
x = linspace(-10*w0, 10*w0, N); % x方向采样
y = linspace(-10*w0, 10*w0, N); % y方向采样
[X, Y] = meshgrid(x, y);
w = w0*sqrt(1+(z/zR)^2); % 激光腰半径
R = z*(1+(zR/z)^2); % 曲率半径
k = 2*pi/lambda;
G = exp(-((X.^2+Y.^2)/w^2)).*exp(-1i*k*(X.^2+Y.^2)/(2*R));
```
2. 定义轴棱锥透镜系统
```
f = 1e-3; % 透镜焦距
L1 = lens(f, 'aperture', 2*w0); % 定义透镜1
L2 = freespace('length', f); % 定义自由空间1
L3 = axicon(20, pi/4); % 定义轴棱锥
L4 = freespace('length', f); % 定义自由空间2
L5 = lens(-f, 'aperture', 2*w0); % 定义透镜2
system = L1*L2*L3*L4*L5; % 定义整个系统
```
3. 进行光束传输
```
G2 = propagate(G, 0, lambda/4, system); % 传输光束
```
4. 计算光强分布并绘图
```
I = abs(G2).^2; % 计算光强分布
figure;
imagesc(x*1e6, y*1e6, I); % 绘制图像
axis equal;
colormap('hot');
xlabel('x (\mum)');
ylabel('y (\mum)');
title('贝塞尔光束');
```
在进行仿真模拟前,需要先安装beamprop工具箱,并将其添加到Matlab的搜索路径中。同时,需要了解透镜和轴棱锥的相关参数,如焦距、顶角等。
最终,可以得到高斯光束经过轴棱锥转换为贝塞尔光束的三维光强分布图。
阅读全文