[英]FFT with python from a data file
我有很多数据文件(testfft.dat),其中三列
垃圾桶| x | f(x)
100,1,0.129
100,2,0.198
等等
其中“,”是分隔符。 我试图在f(x)列上进行快速傅立叶变换,然后绘制频谱与x的关系。 我试图按照另一个答案进行操作,但无法正常工作。 而且,我根本不了解python,我使用xmgrace进行FFT,但效率不高。
我做了以下(在ipython上)
import numpy as np
import scipy as sy
import scipy.fftpack as syfp
array = np.loadtxt("testfft.dat")
但是当我执行最后一行时出现此错误
ValueError Traceback (most recent call last)
<ipython-input-5-f42979d3ce2b> in <module>()
----> 1 array = np.loadtxt("testfft.dat")
~/.local/lib/python3.5/site-packages/numpy/lib/npyio.py in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
1022
1023 # Convert each value according to its column and store
-> 1024 items = [conv(val) for (conv, val) in zip(converters, vals)]
1025 # Then pack it according to the dtype's nesting
1026 items = pack_items(items, packing)
~/.local/lib/python3.5/site-packages/numpy/lib/npyio.py in <listcomp>(.0)
1022
1023 # Convert each value according to its column and store
-> 1024 items = [conv(val) for (conv, val) in zip(converters, vals)]
1025 # Then pack it according to the dtype's nesting
1026 items = pack_items(items, packing)
~/.local/lib/python3.5/site-packages/numpy/lib/npyio.py in floatconv(x)
723 if b'0x' in x:
724 return float.fromhex(asstr(x))
--> 725 return float(x)
726
727 typ = dtype.type
ValueError: could not convert string to float: b'10,'
因为我不太了解Python,所以我不知道该怎么做。
有没有一种方法可以从答案中修改脚本来完成我需要的工作?
谢谢。
标头的分隔符(|)与行的分隔符不同。 因此,我们首先需要跳过标题,然后指定列名称(trash,x,f)。 然后使用scipy的fft获取离散变量:
import numpy as np
from scipy.fftpack import fft
df = np.genfromtxt('testfft.dat', skip_header=1, names=['trash','x','f'], delimiter=',')
print(fft(df['f']))
[ 0.327+0.j -0.069+0.j]
您可以在此处找到文档: FFT
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.