[英]NumPy/SciPy FFT for voltage/time data
這是一個非常基本的問題。 我正在嘗試使用SciPy / NumPy對來自示波器的電壓與時間數據執行fft。 當我將數據傳遞給scipy進行ftf處理時,我完全迷失了。 我將數據作為兩個列表(x和y值),顯然可以將列表壓縮到元組。 我不確定該怎么辦。 我似乎找不到太多文檔。 抱歉,如果以前已經問過這個問題,我找不到相關的問題。
總結:如果一個人的x和y數據存儲在兩個列表中或存儲在元組中,他們如何對這些數據執行FFT?
假設所有樣本均等分布(即每個時間樣本之間存在相同的差異),則只需將y
向量傳遞給fft函數。
它將返回一個復數向量。 第一個數字將對應於直流電壓。 那么矢量的一半將是正頻率,而后一半將對應於負頻率。 如果僅處理實際電壓,則可能不需要負頻率。
這是一個示例,假設x
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()
該文檔可在http://docs.scipy.org/doc/scipy/reference/generated/scipy.fftpack.fft.html中找到
我不確定你為什么要打發時間; 在電壓測量順序中肯定隱含嗎?
一般來說,
import numpy as np
import scipy.fftpack
data = np.arange(0.0, 12.8, 0.1)
fft = scipy.fftpack.fft(data)
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])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.