【連続系】MATLAB、Pythonで株価予測 その77【フーリエ変換⑭】

【連続系】MATLAB、Pythonで株価予測 その77【フーリエ変換⑭】 株価予測
【連続系】MATLAB、Pythonで株価予測 その77【フーリエ変換⑭】

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

はじめに

前回まででMATLABとPython(Numpy)によるフーリエ変換、逆フーリエ変換for文無し版を作成。

よくよく考えたら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

よくよく考えると?

太郎くん
太郎くん

Python(Numpy)によるフーリエ変換、逆フーリエ変換for文無し版の動作確認・・・。
って思ってたんだけど、そもそもMATLABの方って動作確認してなくない?!

フクさん
フクさん

うむ。
すっかり忘れてた。
私の方で簡単な動確はしたんで、それで満足してしまってた感じだな。

太郎くん
太郎くん

まぁ、あるあるではある。

フクさん
フクさん

というわけで、今回で両方の動作をサクっと確認してしまおう。

太郎くん
太郎くん

もう最初から最大周波数の設定は20Hzで良いよね。

フクさん
フクさん

それでOKだ。

まずはMATLAB

太郎くん
太郎くん

じゃ、MATLABコードの方の実行結果を貼るよー。

フーリエ変換、逆フーリエ変換(MATLAB版)最大周波数20Hz、for文無し
太郎くん
太郎くん

うん。
挙動としてはOK。

そしてPython(Numpy)

太郎くん
太郎くん

次はPython(Numpy)。

フーリエ変換、逆フーリエ変換(Python版)最大周波数20Hz、for文無し
太郎くん
太郎くん

こっちもOK。

感想とか

太郎くん
太郎くん

しかし、1行コードでフーリエ変換、逆フーリエ変換が実現できてしまうってのはすごいことだよね。

フクさん
フクさん

まぁ行列の演算なので、
見えないところで大量の演算はしまくってるとは思うけどね。

太郎くん
太郎くん

これでもやっぱりFFTの方が早いの?

フクさん
フクさん

FFTの方が早いだろうね。
そもそもの演算回数が大幅に違う
今回はサンプリングデータ数がそれほど多くないので差は感じないけどね。

太郎くん
太郎くん

ということは基本はFFT、IFFTを使うのが正解。
今回のように妙な事をやろうと思ったらやむを得ず演算速度を犠牲にして精度を上げる。
って感じか。

フクさん
フクさん

まぁまじめに検討はしてないけど、
今回の演算ももしかしたらバタフライ演算が適用できる可能性はあるけどね。

太郎くん
太郎くん

そうなの?

フクさん
フクさん

回転因子で表現し直して、最適化する手段を検討すれば、なにかしらあるかもしれない
って程度だけどね。

太郎くん
太郎くん

もしかしたら、すでに世の中にそういうのは有るのかもしれないね。

フクさん
フクさん

それだとありがたいな。

まとめ

フクさん
フクさん

まとめだよ。

  • MATLABとPython(Numpy)のフーリエ変換、逆フーリエ変換for文無し版の動作確認を実施。
    • 共に問題無く動作。
  • FFTと比べると演算回数の差で速度を犠牲にはしている。
    • 回転因子を書き出して演算構造を見れば高速化は可能かもしれないが、ここではそこまでは頑張らない。

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

コメント

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