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

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

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

スポンサーリンク

はじめに

前回は、MATLAB版フーリエ変換、逆フーリエ変換を個別株チャートに対して実施。
FFTの時の特性に近い形で高分解能の周波数特性が得られた。

今回は、これのPython(Numpy)版にチャレンジ

スポンサーリンク

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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)版コード修正箇所

太郎くん
太郎くん

まずはPython(Numpy)版コードを修正しないとね。

フクさん
フクさん

以下の修正でOKなはずだ。

L=np.pi     # 波形の期間(-L~L)
w_max = 20    # 取りたい最大周波数
x=np.linspace(-L,L,255)
ft=np.sin(x)+np.sin(3*x)+np.sin(7*x) # 変換用波形読み込み
N=len(ft)   # 波形のplot数取得

L=np.pi     # 波形の期間(-L~L)
w_max = 13    # 取りたい最大周波数
stock=np.loadtxt('TM1.csv',delimiter=',') # 変換用波形読み込み
N=len(stock)   # 波形のplot数取得
ft=np.array(stock) # 波形を行ベクトルへ
ft=ft-np.mean(ft)
スポンサーリンク

コード考察

太郎くん
太郎くん

まぁcsvを読み込む部分はMATLAB時と同じ考え方として、
MATLABの時は列ベクトルを行ベクトルにする処理が増えてたけど、
Python(Numpy)版は・・・特に行ベクトルには直してない

フクさん
フクさん

Pythonの場合は、列ベクトルでも行ベクトルでもない、ベクトルに直しているな。

太郎くん
太郎くん

あ!

ft=np.array(stock) # 波形を行ベクトルへ)

の部分で、それをやっているのか!

フクさん
フクさん

そうそう。
MATLABの時は行ベクトルをキープしていた方がいろいろ楽ができるように
Python(Numpy)の場合は列ベクトル、行ベクトルではなくベクトルをキープした方が楽ができるな。

太郎くん
太郎くん

そこらへんは、ほんと環境依存だよねー。

スポンサーリンク

茶番劇

フクさん
フクさん

あとは、MATLABの場合、ベクトル、行列はデフォルトで内積に対して、
Pythonの場合はアダマール積になったりするから、
なんど事故ったか・・・。

太郎くん
太郎くん

(地味にいろいろ苦労してそうだな・・・。)

フクさん
フクさん

最近何度も言ってるけど、
Python(Numpy)版のコードも起こすのはメンドクサイ!!

太郎くん
太郎くん

(なんかストレスも溜まってるな・・・。)

太郎くん
太郎くん

まぁまぁ、このシリーズもあと少しな感じじゃん?
もうコードを弄るのも最後なんじゃない?

フクさん
フクさん

いんや。
極大値、極小値特定が残ってる。

太郎くん
太郎くん

それは・・・FFTの時の奴を使いまわせないの?

フクさん
フクさん

たぶん、コピペレベルで行けるつもりでは居るけど、
もうMATLABとPythonを往ったり来たりするのは御免こうむりたい!!

太郎くん
太郎くん

わかったよー。
じゃー、その部分は僕の方でみるよー。

フクさん
フクさん

その言葉を待ってた。
まかせた。

太郎くん
太郎くん

(なんかハメられたーーーーー!!!)

フクさん
フクさん

(最後くらい脳みそ動かしてもらわんとな)

スポンサーリンク

まとめ

フクさん
フクさん

まとめだよ。

  • Python(Numpy)版の個別株チャートに対しするフーリエ変換、逆フーリエ変換のコードにするための修正。
    • csv読み取り部分を追加。
      • 列ベクトルで取得されるのでベクトルに変換。
  • MATLABとPythonのベクトル周りがいろいろクセが違うのでだんだん嫌になってきた。

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

コメント

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