簡體   English   中英

NumPy / SciPy FFT用於電壓/時間數據

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

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