在python中将时间转换为Hz

时间:2015-10-30 02:23:21

标签: python numpy import fft

我有一个数据集,包括时间戳(ms),x,y和z。我想将其转换为频域(傅立叶)。我使用了numpy.fft.fft(a, n=None, axis=-1, norm=None)[source]

我的代码是

import panda as pd
from scipy.fftpack import fft
import matplotlib.pyplot as plt

data=pd.read_csv('/home/Desktop/dataset.csv')
data = data.as_matrix()
xf=fft(data[:,3])
freq = numpy.fft.fftfreq(len(data), data[1,2] - data[0-1,2])
plt.plot(t,xf)

我为y和z做了同样的事情。 这种方式是否正确?我不确定用于将时间更改为Hz的方式是否正确。

这些是10行数据集:

enter image description here

1 个答案:

答案 0 :(得分:0)

来自numpy.fft.fftfreq's reference

  

返回的浮点数组f包含每单位样本间隔周期的频率仓中心(开始时为零)。例如,如果采样间隔以秒为单位,则频率单位为周期/秒。

由于时间戳以毫秒为单位,因此使用data[1,2] - data[0,2]指定时间间隔将以周期/毫秒或kHz为单位给出频率。要获得以Hz为单位的频率,您应该使用:

freq = numpy.fft.fftfreq(len(data), 0.001*(data[1,2] - data[0,2]))

然后你应该使用freq

来绘制它
plt.plot(freq,xf)

作为未来读者的旁注,使用data[1,2] - data[0,2]作为时间步骤隐含地假定数据在时间上均匀采样(在给定提供的样本数据集的情况下似乎就是这种情况)。 /子>