news 2026/5/2 23:59:49

基于光学仿真的物理光学研究:傅立叶变换与衍射光场计算的深入探索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于光学仿真的物理光学研究:傅立叶变换与衍射光场计算的深入探索

光学仿真,物理光学,傅立叶光学,衍射光场计算。

光场计算这玩意儿看起来玄乎,实际玩起来跟搭乐高似的有意思。咱就拿菲涅尔衍射举个栗子,用Python搞个光场传播模拟。先整块方形孔当光源,波长532nm绿光,传播距离0.5米,代码开头先摆参数:

import numpy as np import matplotlib.pyplot as plt wavelength = 532e-9 # 纳米转米 k = 2*np.pi/wavelength distance = 0.5 # 传播距离 size = 0.01 # 计算区域尺寸10cm N = 2048 # 采样点数

采样间隔得算准了,不然会出现频谱混叠。这里dx=size/N,对应空间频率上限1/(2dx),保证采样定理满足。接着初始化光场,整个方形孔:

x = np.linspace(-size/2, size/2, N) X, Y = np.meshgrid(x, x) aperture = np.zeros_like(X) aperture[np.abs(X)<0.001] = 1 # 宽度2mm的狭缝 aperture[np.abs(Y)>0.002] = 0 # 高度限制

这时候直接傅里叶变换肯定翻车,得用角谱法。传播过程本质是空间频域乘相位因子:

def angular_spectrum(u_in, wavelength, distance, dx): fx = np.fft.fftshift(np.fft.fftfreq(N, dx)) FX, FY = np.meshgrid(fx, fx) H = np.exp(1j * 2*np.pi * distance * np.sqrt(1/wavelength**2 - FX**2 - FY**2)) U = np.fft.fft2(u_in) U_prop = U * H return np.fft.ifft2(U_prop)

这里有个坑:当空间频率超过1/λ时,sqrt会出现虚数,对应倏逝波。咱们做远场计算时可以忽略这部分,直接取实部。跑完仿真看结果:

result = angular_spectrum(aperture, wavelength, distance, x[1]-x[0]) plt.imshow(np.abs(result)**2, cmap='jet') plt.show()

这时候能看到典型的衍射条纹,但边缘可能出毛刺。别慌,八成是采样不足,把N从2048调到4096立马见效。搞物理光学仿真就像打游戏通关,参数调对了比发paper还爽。

光学仿真,物理光学,傅立叶光学,衍射光场计算。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 23:21:56

Vue3+Cesium积雪效果,动态设置颜色厚度

本学习系列以Cesium Vue3 Typescriptelementplus作为主要技术栈&#xff0c;后续会循序渐进&#xff0c;持续探索Cesium的高级功能&#xff0c;敬请期待。欢迎关注威信公众号“webgis学习”。详情请查阅原文 Vue3Cesium积雪效果&#xff0c;动态设置颜色厚度https://mp.weixi…

作者头像 李华
网站建设 2026/4/29 12:43:13

在线音乐播放|基于springboot在线音乐播放系统(源码+数据库+文档)

在线音乐播放系统 目录 基于springboot vue超在线音乐播放系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue超在线音乐播放系统 一、前言 博主介…

作者头像 李华