簡體   English   中英

使用python從數據文件進行FFT

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM