如何获得python中随机列表的傅立叶变换?

How to obtain Fourier transform of a random list in python?

我使用数值积分求解了一个波动方程,并将每一步的波函数值存储在 python 列表中。所以我有几个列表:

x=[1,1.001,1.002,.....4]

psi= [1.571,1.579.....1]

x 是一个包含空间坐标的列表,psi 是一个包含我的波函数相应值的列表。 psi vs x 图类似于线性调频信号 (here it is),我对提取其中存在的频率很感兴趣。这看起来确实是一个足够简单的问题,但我浏览了 np.fft 文档和该社区的所有相关问题,但我找不到我要找的东西。

所以我的问题是:给定space中的波形,如何对其应用傅里叶变换以获得它包含的频率?

编辑:我写了下面的代码:

fourier=np.fft.fft(p)   #p is a list
freq=np.fft.fftfreq(len(p),h)     #h is the step size of my grid
plt.xlabel('w')
plt.ylabel('Power')
plt.title("Fourier Transform")
plt.plot(freq,abs(fourier)**2)

而this就是我得到的结果。但问题是只有一个峰值,我认为对应于成分频率的平均值。有没有办法获得 python 上的各个频率?也许通过使用其他一些模块,例如 pywt(wavelet transform)?

正如您在情节中显示的那样,x 相当于您的时间分量。傅立叶分析不限于时间序列;这只是他对一般函数的分解最常见的应用。