gpt4 book ai didi

python - 如何获得非均匀 DFFT 的频率?

转载 作者:行者123 更新时间:2023-12-04 13:33:39 24 4
gpt4 key购买 nike

我有如下代码:

import matplotlib.pyplot as plt
import numpy as np
from nfft import nfft


# number of sample points
N = 400

# Simulated non-uniform data
x = np.linspace(0.0, 1 / 2, N) + np.random.random((N)) * 0.001
y = np.sin(50.0 * 2.0 * np.pi * x) + 0.5 * np.sin(80.0 * 2.0 * np.pi * x)
yf = np.abs(nfft(x, y))

fig, axs = plt.subplots(1)
fig_f, axs_f = plt.subplots(1)

axs.plot(x, y, '.', color='red')
axs_f.plot(x, yf, color='red')
graphs produced by code
如何转换第二个图形上的值来表示频率? nfft的使用模块不是必需的,使用 pynfft 回答或 scipy将不胜感激。
也可以看看:
How do I obtain the frequencies of each value in an FFT?

最佳答案

以下似乎有效。注意在绘制傅立叶变换之前插入的线,以生成频率,以及我们绘制数据的 N/2。

import matplotlib.pyplot as plt
import numpy as np
from nfft import nfft

# number of sample points
N = 400

# Simulated non-uniform data
x = np.linspace(0.0,0.5-0.02, N) + np.random.random((N)) * 0.001
print(x)

print( 'random' )
print( np.random.random((N)) * 0.001 )

y = np.sin(50.0 * 2.0 * np.pi * x) + 0.5 * np.sin(80.0 * 2.0 * np.pi * x)
yf = np.abs(nfft(x, y))

fig, axs = plt.subplots(1)
fig_f, axs_f = plt.subplots(1)

axs.plot(x, y, '.', color='red')

xf = np.fft.fftfreq(N,1./N)

axs_f.plot(xf[:int(N/2)], yf[:int(N/2)], color='red')

plt.show()
输出:
enter image description here

关于python - 如何获得非均匀 DFFT 的频率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63534781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com