バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、フーリエ変換、逆フーリエ変換のMATLABコードを作成してきた。
数式上でΣ、内積で表現できればプログラム化は容易ということもわかった。
今回は、実際にMATLABコードを動作させてみる。
登場人物
博識フクロウのフクさん

イラスト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
フーリエ変換、逆フーリエ変換(MATLAB版)

じゃ、前回のフーリエ変換、逆フーリエ変換のMATLAB版コードを動作させてみよう。
・・・実行中・・・

波形が取れた。


これはバッチリ動いてるじゃない?
1[Hz]、3[Hz]、7[Hz]が取れてるし。

うむ。
これがFFTと同等の周波数粒度で動作した場合の結果だな。

は?
FFTと同等?
あれ?

現在の\(\omega_{max}\)の設定値だとFFTと同等で、整数倍の周波数しか取れない。
周波数粒度を上げるには?

FFTと同等じゃダメじゃん!
FFTよりも細かく取るのが目的なのに!

周波数粒度を引き上げるには、\(\omega_{max}\)の設定値を弄れはOKだ。

現在は127[Hz]になっているんで、
20[Hz]くらいにしたらいいんじゃないかな?

じゃ、そこだけ20に書き換えて実行。


お!
これはかなり細かい周波数分布が取れてるじゃない?

どうやらうまく行ったようだな。
FFTじゃなくてもいいんじゃない?

こんなことが出来るならFFTじゃなくてフーリエ変換をそのままプログラム化した方がいいじゃん!
って思った。

それはどうかな?
周波数特性の粒度は細かくできるが、
処理速度はそれほど早くない。
今回はデータ数が少ないから、速度的な差は感じられないだけで。

そうか。
FFTは高速化アルゴリズムが入ってるって利点があるのか・・・。

と、すると、株価予測も時間掛かったりするの?

いや、大丈夫だ。
現状予測している範囲が1年分のデータなんで、
データ数としては250程度だ。
この程度であれば、今回のプログラムでも一瞬で終わる。

なんだ。
それは安心だ。

後は、メンドクサイけどPython(Numpy)で同じことをやってみるか。

(とうとう、素でメンドクサイ言い出したぞ)
まとめ

まとめだよ。
- フーリエ変換、逆フーリエ変換のMATLABコードを動作させてみた。
- まずはFFTと同等の整数倍の周波数特性。
- 最大周波数を調整すると細かい周波数特性が取れる。
- FFTよりも処理負荷が大きい演算になる。
- 今回扱う株価予測のデータ数程度であれば問題にはならない。
バックナンバーはこちら。
コメント