首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的快速傅立叶变换性能

Python中的快速傅立叶变换性能
EN

Stack Overflow用户
提问于 2021-01-07 02:56:29
回答 1查看 240关注 0票数 0

因此,我编写了一个简短的Python程序来评估Python的FFT方法的准确性。

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

#Aufgabe 1
x0=0
a=2.5
k0=3
X=np.linspace(-4,4,100)
timestep=0.1
k=np.fft.fftfreq(X.size,d=timestep)
psi_analytical=[(2/(np.pi*a**2))**(1/4)*np.exp(-((i-x0)**2)/a**2)*np.exp(1j*k0*(i-x0)) for i in X]
psi_tilde_numerical=np.fft.fft(psi_analytical)
psi_tilde_analytical=[(2/(np.pi*a**2))**(1/4)*(a/2)*np.exp(-(a*(i-k0))**2/4)*np.exp(-1j*i*x0) for i in k]
psi_numerical=np.fft.ifft(psi_tilde_analytical)


#plt.plot(k,np.abs(psi_tilde_numerical),label='numerical psi tilde')
#plt.plot(k,np.abs(psi_tilde_analytical),'--',color='tab:orange', label='analytical psi tilde')

plt.plot(X,np.abs(psi_analytical),label='analytical psi, real')
plt.plot(X,np.abs(psi_numerical),'--',color='tab:orange',label='numerical psi, real')
plt.legend()
plt.show()

解析函数如下:

令我惊讶的是,数值函数和解析函数完全不同。然而,我不确定为什么会这样。

归一化常数N(2/(np.pi*a**2))**(1/4)

EN

回答 1

Stack Overflow用户

发布于 2021-01-11 00:25:35

再研究一下,我想我可能会给你一个答案。

离散傅立叶变换(DFT)是利用快速傅立叶变换算法(FFT)有效地计算离散时域信号的一种方法。傅立叶变换(FT)在连续的时域中对函数进行运算。

在一定条件下,DFT近似于FT。其中一个条件是信号必须是带宽受限的。这意味着对于高于某个频率阈值α的所有频率,该函数的FT必须为零,并且必须具有至少为2*α的采样率,这将返回到Nyquist-Shannon sampling theorem

在您的例子中,您正在尝试近似一个没有带宽限制的高斯函数exp(-x²)。这是因为,正如您从公式中看到的,高斯的FT也是高斯的。这意味着它有可以忽略但非零的频率分量,一直到无穷大。因此,您将无法使用DFT近似FT,因为您将需要具有无限采样率。

总之,重要的是要认识到DFTFT是截然不同的转换,因此不能简单地进行比较。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65601771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档