【问题标题】:Python - Plotting Fourier transform from text filePython - 从文本文件中绘制傅里叶变换
【发布时间】:2016-06-04 07:09:34
【问题描述】:

我有这个文本文件,其中包含不同记录值的列,其中第一列是时间值,第 2、3 和 4 列分别位于 x、y 和 z 位置,如果我要绘制时间与其 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 函数,我不知道从那里去哪里。

【问题讨论】:

  • 什么振荡?你所说的时间是什么意思,位置x是什么意思?请更准确地发布您的文件示例。我的回答现在反映了我认为您要求的内容,但是...

标签: python numpy scipy


【解决方案1】:
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()

我会根据你的需要编辑答案,因为你的问题不是很清楚。

【讨论】:

    【解决方案2】:

    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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 2021-05-18
      • 2020-08-18
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      相关资源
      最近更新 更多