MATLAB实现点光源通过凸透镜后的成像光强分布
时间: 2023-09-14 20:06:01 浏览: 369
在MATLAB中,可以使用光学工具箱(Optics Toolbox)来模拟点光源通过凸透镜后的成像光强分布。下面是一个简单的示例:
```matlab
%% 定义参数
f = 50; % 透镜焦距
d = 2*f; % 光源到透镜的距离
h = 0.1; % 光源高度
lambda = 0.5e-6; % 光波长
N = 256; % 图像尺寸
L = 0.02; % 图像大小
%% 创建光源
source = gaussianBeam(lambda, 'WaistRadius', 0.1, 'Position', [-d, 0, h]);
%% 创建透镜
lens = lens(f, 'Diameter', 0.02);
%% 计算成像
image = propagate(source, lens);
intensity = abs(image.Field).^2;
%% 显示结果
x = linspace(-L/2, L/2, N);
y = linspace(-L/2, L/2, N);
[X, Y] = meshgrid(x, y);
figure;
imagesc(x, y, intensity);
colormap(gray);
axis image;
xlabel('x [m]');
ylabel('y [m]');
title('Image Intensity');
```
该示例首先定义了一些参数,例如透镜焦距、光源到透镜的距离、光源高度、光波长等。然后使用光学工具箱中的函数创建了一个高斯光源和一个透镜。接着使用 propagate 函数计算了成像,并计算了成像的光强分布。最后使用 imagesc 函数显示了光强分布图像。
需要注意的是,上述示例中的单位都是国际单位制(SI),例如焦距的单位是米(m)、光波长的单位是米(m)、图像大小的单位是米(m)等。如果需要使用其他单位,需要进行单位转换。
阅读全文