Python 电压/时间数据的NumPy/SciPy FFT

Python 电压/时间数据的NumPy/SciPy FFT,python,numpy,scipy,fft,Python,Numpy,Scipy,Fft,这是一个相当基本的问题。我正在尝试使用SciPy/NumPy对示波器的电压与时间数据执行fft。在将数据传递给scipy进行fft处理时,我完全不知所措。我将数据作为两个列表(x和y值),显然可以将列表压缩为元组。不过我不知道该怎么办。我似乎找不到多少文档。抱歉,如果以前有人问过,我找不到相关问题 总而言之:如果一个人的x和y数据存储在两个列表中或存储在一个元组中,他们如何对这些数据执行FFT?可以在 我不知道你为什么要消磨时间;这肯定是隐含在电压测量序列中的吗 总的来说 import nump

这是一个相当基本的问题。我正在尝试使用SciPy/NumPy对示波器的电压与时间数据执行fft。在将数据传递给scipy进行fft处理时,我完全不知所措。我将数据作为两个列表(x和y值),显然可以将列表压缩为元组。不过我不知道该怎么办。我似乎找不到多少文档。抱歉,如果以前有人问过,我找不到相关问题


总而言之:如果一个人的x和y数据存储在两个列表中或存储在一个元组中,他们如何对这些数据执行FFT?

可以在

我不知道你为什么要消磨时间;这肯定是隐含在电压测量序列中的吗

总的来说

import numpy as np
import scipy.fftpack

data = np.arange(0.0, 12.8, 0.1)
fft = scipy.fftpack.fft(data)

假设所有样本间隔相等(即,每个时间样本之间的差异相同),只需将
y
向量传递给fft函数即可

它将返回一个复数向量。第一个数字将对应于直流电压。然后,向量的一半将是正频率,另一半将对应于负频率。如果你只处理真实电压,你可能不需要负频率

下面是一个示例,假设
x
any
y
是numpy数组:

from matplotlib import pyplot
fy = numpy.fft.fft(y)
dt = x[1] - x[0]
n = x.size
freqs = numpy.fft.fftfreqs(n, d=dt) # Frequencies associated with each samples
pyploy.plot(numpy.fft.fftshift(freqs), numpy.fft.fftshift(abs(fy)))
pyplot.show()

所有的时间样本都是等距的吗?嗨,你算出来了吗?我有10000点的时间与速度数据,时间是均匀分布的。你能告诉我如何使用python来获得数据的频率吗?你是对的,我想我不需要通过时间来指定相对时间位置wrt其他波形。这很容易从文件名中推断出来。有时候这些显而易见的事情我从来没有想到过。非常感谢。
from scipy.fftpack import fft

my_voltage_list = [1.1,1.2,1.1,1.1,3.0,3.1]
my_time_list = [1,2,3,4,5,6]

fft_result = fft(my_voltage_list)

print fft_result

>>> array([ 10.6 +0.00000000e+00j,   0.1 +3.29089653e+00j,
    -2.0 +4.44089210e-16j,  -0.2 +0.00000000e+00j,
    -2.0 -4.44089210e-16j,   0.1 -3.29089653e+00j])