一、核心原理与工具
傅立叶光学基于傅里叶变换理论,将光波的传播与频域分析结合。Matlab通过以下函数实现关键计算:
fft2:二维傅里叶变换,将空间域光场转换为频域频谱。ifft2:逆傅里叶变换,恢复空间域信号。meshgrid:生成空间坐标网格,用于光场建模。imagesc:可视化光强分布或频谱。
二、典型实现流程
1. 光场建模
示例:生成高斯光束
matlab
lambda = 632.8e-9; % 波长(米)
w0 = 0.01; % 束腰半径(米)
k = 2*pi/lambda; % 波数
[x, y] = meshgrid(linspace(-0.05, 0.05, 500));
r = sqrt(x.^2 + y.^2);
E = exp(-r.^2 / w0^2) .* exp(1i*k*r.^2/(2*w0)); % 高斯光束表达式
2. 傅里叶变换与频谱分析
透镜的傅立叶变换模拟(4f系统)
matlab
% 前焦面(输入平面)
E_input = E; % 输入光场
% 傅里叶变换(透镜后焦面)
E_fft = fftshift(fft2(fftshift(E_input))); % 频谱
% 逆傅里叶变换(后焦面重建)
E_output = fftshift(ifft2(fftshift(E_fft)));
3. 光学元件模拟
低通滤波器设计
matlab
% 频谱滤波
D0 = 0.02; % 截止频率
[X, Y] = meshgrid(linspace(-0.5, 0.5, size(E_fft,1)), ...
linspace(-0.5, 0.5, size(E_fft,2)));
D = sqrt(X.^2 + Y.^2);
H = double(D <= D0); % 低通滤波器掩膜
% 应用滤波
E_filtered = E_fft .* H;
4. 动态传播模拟
角谱法模拟光束传播
matlab
z = 0.1; % 传播距离(米)
dx = x(2)-x(1); % 采样间隔
% 角谱计算
fx = (-size(x,2)/2:size(x,2)/2-1)/dx;
fy = (-size(y,2)/2:size(y,2)/2-1)/dx;
[FX, FY] = meshgrid(fx, fy);
H = exp(1i*k*z*sqrt(1 - (lambda*FX).^2 - (lambda*FY).^2)); % 传播因子
% 传播后光场
E_propagated = ifftshift(ifft2(fftshift(E_input) .* H));
三、关键应用案例
1. 衍射与干涉仿真
杨氏双缝干涉
matlab
d = 0.002; % 双缝间距(米)
D = 0.1; % 缝到屏距离(米)
I = (cos(pi*d*D*x/(lambda*D)).^2); % 干涉光强
imagesc(x*1e3, y*1e3, I); % 可视化(单位:毫米)
title('杨氏双缝干涉条纹');
2. 光栅衍射
矩形光栅频谱分析
matlab
grating = repmat([ones(1,50), zeros(1,100), ones(1,50)], 500, 1); % 50%占空比光栅
E_grating = grating;
% 傅里叶变换
E_spectrum = fftshift(fft2(E_grating));
3. 涡旋光束生成
拉盖尔-高斯光束(拓扑荷数l=2)
matlab
p = 0; l = 2; % 径向指数p=0,角向指数l=2
E_laguerre = laguerre_gaussian_beam(w0, p, l, 0, 0); % 自定义函数生成
四、调试与验证
-
频谱对称性检查
确保实部偶对称、虚部奇对称:
matlabfigure; subplot(2,1,1); imagesc(angle(E_fft)); title('相位分布'); subplot(2,1,2); imagesc(log(abs(E_fft)+eps)); title('对数幅度谱'); -
重建误差分析
比较原始与重建光场:
matlaberror = norm(E_input - E_output)/norm(E_input); fprintf('重建误差:%.2e\n', error);
参考代码 计算傅立叶光学的实现 www.youwenfan.com/contentcsq/78328.html
五、扩展功能
-
动态全息图生成
通过时变光场模拟动态全息:
matlabfor t = 1:100 E_hologram(:,:,t) = exp(1i*2*pi*t/100 * x); % 时变相位调制 end -
自适应光学校正
使用Zernike多项式模拟波前畸变并校正:
matlab[Z, ~, ~] = zernike(4, 0.1); % 4阶Zernike多项式 E_corrected = E .* exp(1i*Z); % 波前补偿
六、参考文献与工具
- 核心文献
- 《光学》(Eugene Hecht)第4章:傅里叶光学基础
- 《数字信号处理》(John G. Proakis):FFT算法实现细节
- 工具包推荐
- Optics Toolbox:提供衍射、干涉等专用函数
- GPU Coder:加速大规模光学计算