はじめに
- ある系に地震波を与えたときの加速度(下の図)から、加速度応答スペクトル(ピリオドグラム)を求める
- 最終的にはスペクトルのピークを知りたい
- fftは複雑なことが多く理解しにくいため、最低限必要なところだけ説明する
補足
- fft(高速フーリエ変換)をするなら、
scipy.fft
かnumpy.fft
が主流 -
公式によると
scipy.fftpack
はLegacyとなっており、推奨されていない - scipyはドキュメントが非常にわかりやすかった
モジュールのインポート
numpy
もscipy
も違いはありません。
# numpyを使うとき
from numpy.fft import fft, fftfreq
# scipyを使う時
from scipy.fft import fft, fftfreq
高速フーリエ変換
yは分析したい時系列データです
# サンプル数
N = len(y)
# サンプリング間隔
T = 0.01
# フーリエ変換する
yf = fft(y)
# 周波数軸の作成
xf = fftfreq(N, T)[:N//2]
描画
plt.plot(xf, 2.0/N * np.abs(yf[0:N//2]))
- 2つの山が見て取れる
-
T=0.01
としたので、サンプリング周波数はその逆数で $f_s=100Hz$となる。つまりナイキスト周波数は50Hzなので、描画したグラフは周波数が0から50の範囲となっている。