【FFT】MATLAB、Pythonで株価予測 その28【IFFT⑦】

【FFT】MATLAB、Pythonで株価予測 その28【IFFT⑦】 株価予測
【FFT】MATLAB、Pythonで株価予測 その28【IFFT⑦】

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

はじめに

前回は、「複数の周波数のsin波を合成したもの大してFFT&IFFT」のPython版を実施。
当然ではあるが想定通りの結果は得られた。

IFFTに関しては、単に元に戻るかを試していただけだが、
今回からは、このIFFTが活躍することとなる。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

IFFTを活躍させる。

太郎くん
太郎くん

前回の最後で、
「ならば、そろそろ次のステージに行くとするか。」
とか言ってたけど、何やらせる気?

フクさん
フクさん

そんな難しいことをやるわけじゃないよ。
IFFTに活躍してもらおうと思って。

太郎くん
太郎くん

IFFTだったら前回までも使ってたと思うのだけど?

フクさん
フクさん

単に元の波形に戻るかどうかを見てただけだけどね。

太郎くん
太郎くん

それ以外に何ができるの?

フクさん
フクさん

FFT,IFFTの代表的な利用方法に

  • ローパスフィルタ
  • ハイパスフィルタ
  • バントパスフィルタ

があるって以前言ってたじゃん?
あれに相当することをやるだけだ。

太郎くん
太郎くん

あー、特定の周波数帯を取り出そうって話か。
言われてみると、具体的に何するかはよくわからんな。

フクさん
フクさん

(本当に業務でFFT使ってるのか?)

簡易的なバントパスフィルタ

フクさん
フクさん

今回やろうとしているのは超簡易的なバントパスフィルタだな。
FFTで周波数分布関数が取得されるんで、
欲しい周波数以外を0で消してしまえばOKだ。

太郎くん
太郎くん

なんだ。
それだけか。

フクさん
フクさん

そして注意点としては、周波数分布関数の後半に居る複素共役の成分に対しても同じ処置をする必要がある

太郎くん
太郎くん

そういうえば、そういうのが居たな・・・。
周波数分布を見る上では不要って事だったから気持ち的には存在しないものとして扱ってたのに・・・。

フクさん
フクさん

複素共役が居ないと狙ったフィルタ効果は得られないんで、対応は必須だ。

太郎くん
太郎くん

うーん、めんどくさい。

周波数分布のローテーション

フクさん
フクさん

そして、これはやらなくてもOKと言えばOKなんだけど、
複素共役をマイナスの周波数分布側に持ってきておきたいんだよね。

太郎くん
太郎くん

なんでやらなくても良いことをやるのか。

フクさん
フクさん

現状の周波数分布関数の配置だと、複素共役同士の位置が分かりずらいんだよね。
1[Hz]の複素共役は-1[Hz]
3[Hz]の複素共役は-3[Hz]
みたいな位置関係にしておきたい。

太郎くん
太郎くん

それって簡単にできるの?
めんどくさいことはやりたくないなー。

フクさん
フクさん

ベクトルのシフトまたはローテーションの機能でできるはずだ。
MATLAB、Python(Numpy)共に同等の関数が存在しているとは思うよ。
まぁローテーションさせるだけだから、for文でぶん回してもできるけど。

太郎くん
太郎くん

まぁ言われてみれば大した処理じゃないから、別にいいような気もしてきたな。

フクさん
フクさん

というわけで、まずはFFT後の周波数分布関数のローテーションが出来る状態までもってこよう。

まとめ

フクさん
フクさん

まとめだよ。

  • IFFTにも活躍してもらうため簡易的なバンドパスフィルタを実施予定。
  • 周波数分布関数の後半に複素共役が居るため、これも同等の処置が必要。
  • 複素共役の位置を分かりやすくするため、マイナス側に持ってくる予定。
    • ベクトルに対するシフト、ローテーションで対応可能。なはず。

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

コメント

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