3

これはかなり基本的な質問です。SciPy/NumPy を使用して、オシロスコープからの電圧対時間データで fft を実行しようとしています。fft 処理のためにデータを scipy に渡すことになると、私は完全に失われます。私はデータを 2 つのリスト (x 値と y 値) として持っており、明らかにリストをタプルに圧縮できます。私は何をすべきかわからない。多くのドキュメントが見つからないようです。これが以前に尋ねられた場合は申し訳ありませんが、関連する質問が見つかりませんでした。

要約すると、x と y のデータが 2 つのリストまたはタプルに格納されている場合、これらのデータに対してどのように FFT を実行するのでしょうか?

4

3 に答える 3

3

すべてのサンプルが等間隔である (つまり、各時間サンプル間に同じ差がある) と仮定すると、yベクトルを fft 関数に渡すだけで済みます。

複素数のベクトルを返します。最初の数字は DC 電圧に対応します。その場合、ベクトルの半分は正の周波数になり、後半は負の周波数に対応します。実際の電圧のみを扱っている場合は、おそらく負の周波数は必要ありません。

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()
于 2012-07-03T23:04:22.703 に答える
2

ドキュメントは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)
于 2012-07-03T22:57:25.933 に答える
1
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])
于 2012-07-03T23:05:43.527 に答える