如何获得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
相当于您的时间分量。傅立叶分析不限于时间序列;这只是他对一般函数的分解最常见的应用。
我使用数值积分求解了一个波动方程,并将每一步的波函数值存储在 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
相当于您的时间分量。傅立叶分析不限于时间序列;这只是他对一般函数的分解最常见的应用。