Python - 从文本文件中绘制傅里叶变换

时间:2016-06-03 22:52:12

标签: python numpy scipy

我有这个文本文件,其中包含不同记录值的列,其中第一列的值为时间,列2,3和4分别位于x,y和z位置,其中if我要绘制时间与其x,y或z的位置,它将显示出振荡。

我想对这些数据进行傅里叶变换,并将其绘制到x轴为频率的位置。

我在跟随其他帖子的例子时遇到了麻烦,所以也许有人可以给我建议去正确的方向。

拥有我的文本文件

with open('SampleData.txt') as f:
    data = f.read()
data = data.split('\n')


t = [float(row.split()[0]) for row in data]  
x1 = [float(row.split()[1]) for row in data] 

现在使用傅立叶变换的numpy函数,我不知道从那里去哪里。

2 个答案:

答案 0 :(得分:2)

from matplotlib.pyplot import *
import numpy

spectrum =numpy.fft.fft(x1)
spectrum = abs(spectrum[:len(spectrum)/2]) # Just first half of the spectrum, as the second is the negative copy
figure()
plot(spectrum)
show()

我会根据您的需要编辑答案,因为您的问题不是很明确。

答案 1 :(得分:1)

Numpy中的快速傅立叶变换非常简单:

fft = np.fft.fft(x)

有关详细信息,请参阅此处 - Link

绘制一条简单的线条也很简单:

import matplotlib.pyplot as plt
plt.plot(fft)

在此处查看更多内容 - Click

编辑 - 可能值得以更有效的方式阅读您的文件 - numpy有一个文本阅读器,可以节省您一些时间和精力。 Click 实质上;

x = np.loadtxt(fname, dtype=<type 'float'>, delimiter=None)