如何对双sli进行一维夫琅和费衍射

2024-09-30 01:19:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python的初学者,想模拟一维夫琅和费衍射

首先,对一维夫琅和费衍射及其傅里叶变换进行了数值模拟。现在在第二阶段,我们要做双缝

我在网上搜索发现两种代码,一种是我的代码,另一种是使用np.roll函数。有人能帮我把rec函数一分为二,分析它的一维夫琅和费衍射吗

import matplotlib.pyplot as plt
import numpy as np
N=1024; dx=0.002
landa=0.6328
z=4
nRange=np.arange(-N/2, N/2)
x=dx*nRange
NxpR=200
u1=np.zeros(N); u1[abs(nRange)<=NxpR]=1 #rect func
df=1/(N*dx)
f=df*nRange
deltax=df*landa*z

u1F=np.fft.fftshift(np.fft.fft(u1))

#u2= np.roll(u1,0 ) 
u2=np.exp(1j*landa/(2*z)*deltax**2*nRange**2)*u1F
fig = plt.figure()
fig.add_subplot(3,1,1)
plt.plot(x,u1)
plt.xlabel('x')
plt.ylabel('u1')
#plt.title(

fig.add_subplot(3,1,2)
plt.plot(x,abs(u1F))
plt.ylabel('u1F')
plt.xlabel('freq')

x_2 = x*1000000
fig.add_subplot(3,1,3)
plt.plot(x_2,abs(u2**2))
plt.ylabel('u2')
plt.xlabel('x')
plt.show()

enter image description here


Tags: fftadddfnpfigpltabslanda

热门问题