用Python实现FFT

2024-10-03 23:22:09 发布

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

我从一个振动传感器接收两个numpy阵列形式的数据。第一个数组表示振动测量的实际值,第二个数组表示相应的时间信息(时间戳)。例如:

vibraton_data = np.array([621,1546,262])

timestamps = np.array([1592583531, 1592583548, 1592583555])

这意味着对于每个振动测量,我都有时间信息

现在我想应用快速傅里叶变换。有人知道怎么做吗?我的第一次尝试是这样的:

N = 600 
T = 1.0 / 800.0 
x = np.linspace(0.0, N*T, N)
yf = fft(vibration_data)
xf = np.linspace(0.0, 1.0/(2.0*T), N/2)

但是我不知道如何处理我的时间数组中的时间信息


Tags: 数据fftnumpy信息datanp时间传感器
1条回答
网友
1楼 · 发布于 2024-10-03 23:22:09

这实际上是一个信号处理问题,而不是Python问题。您在这里有几个选项:

  • 如果数据是统一采样的,则可以完全忽略时间戳。您需要的所有信息都在数据中,(恒定)采样频率:f_s=1.0/(时间戳[1]-时间戳[0])
  • 如果没有,您可以:
    • 使用Non-uniform DFThere是一个实现,尚未尝试)
    • 在非均匀时间戳之间插入数据,使其变得均匀。请注意,这将有效地对数据应用低通滤波器,这可能不是您想要的(更多关于插值here的效果)

在所有情况下,当您执行FFT时,不再需要时间信息,因为您在频域中

相关问题 更多 >