【FFT】MATLAB、Pythonで株価予測 その27【IFFT⑥】

【FFT】MATLAB、Pythonで株価予測 その27【IFFT⑥】株価予測
【FFT】MATLAB、Pythonで株価予測 その27【IFFT⑥】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/

スポンサーリンク

はじめに

前回は、MATLABで複数の周波数のsin波を合成したもの大してFFT&IFFT実施してみた。
想定通りの周波数分布になることが確認できた。

今回はこれのPython版を作成する。

スポンサーリンク

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

スポンサーリンク

複数の周波数のsin波を合成したもの大してFFT&IFFT(Python版)

フクさん
フクさん

じゃ、さっそく前回のMATLABコードのPython版を貼っておこう。

import numpy as np
import matplotlib.pyplot as plt

N=1024
L=np.pi
x=np.linspace(-L,L,N)
k=np.arange(0,N)
ft=np.sin(x)+np.sin(3*x)+np.sin(7*x)

fig = plt.figure()

ax1 = fig.add_subplot(4, 1, 1)
ax1.plot(x,ft)
ax1.set_title('f(t)')

Fw=np.fft.fft(ft)

ax2 = fig.add_subplot(4, 1, 2)
ax2.plot(k,np.abs(Fw))
ax2.set_title(r'$F(\omega)$')

ax3 = fig.add_subplot(4, 1, 3)
ax3.plot(k[0:10],abs(Fw[0:10]))
ax3.set_title(r'$F(\omega)$ expansion')

fx=np.fft.ifft(Fw)

ax4 = fig.add_subplot(4, 1, 4)
ax4.plot(x,fx.real)
ax4.set_title('f(x)')

plt.show()
スポンサーリンク

動作結果

フクさん
フクさん

そして結果。
まぁ当然ではあるが、MATLABの時と一緒だな。

合成sin波をNumpyのFFTとIFFTで解析、f(t)、F(ω)、f(x)
スポンサーリンク

入力サンプリング期間を伸ばした版

太郎くん
太郎くん

これも同じく入力サンプリング期間を延ばしてみよう。

L=np.pi
↓
L=2*np.pi
合成sin波をNumpyのFFTとIFFTで解析、入力サンプリング期間を伸ばす、f(t)、F(ω)、f(x)
太郎くん
太郎くん

うん。
こっちもOKそうだ。

フクさん
フクさん

大体FFTには慣れてきたんじゃない?

太郎くん
太郎くん

そうだね。
理屈の方はイマイチだけど、
出力が何を示しているのかは大体理解出来てきたよー。

フクさん
フクさん

ならば、そろそろ次のステージに行くとするか。

太郎くん
太郎くん

(なんか、ヤバイ雰囲気が・・・。)

スポンサーリンク

まとめ

フクさん
フクさん

まとめだよ。

  • 複数の周波数のsin波を合成したもの大してFFT&IFFT実施のPython版。
    • 当然ではあるが、同一の結果が得られた。
  • 加えて、入力サンプリング期間を延ばしたものも実施。
    • これも当然、同一の結果が得られた。
  • FFT,IFFTの理屈は兎も角として使い方に関してはなんとなく慣れてきたところ。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました