バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、MATLAB版フーリエ変換、逆フーリエ変換を個別株チャートに対して実施。
FFTの時の特性に近い形で高分解能の周波数特性が得られた。
今回は、これのPython(Numpy)版にチャレンジ
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
Python(Numpy)版コード修正箇所
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
まずはPython(Numpy)版コードを修正しないとね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
以下の修正で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)
コード考察
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
まぁcsvを読み込む部分はMATLAB時と同じ考え方として、
MATLABの時は列ベクトルを行ベクトルにする処理が増えてたけど、
Python(Numpy)版は・・・特に行ベクトルには直してない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
Pythonの場合は、列ベクトルでも行ベクトルでもない、ベクトルに直しているな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
あ!
ft=np.array(stock) # 波形を行ベクトルへ)
の部分で、それをやっているのか!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
MATLABの時は行ベクトルをキープしていた方がいろいろ楽ができるように
Python(Numpy)の場合は列ベクトル、行ベクトルではなくベクトルをキープした方が楽ができるな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
そこらへんは、ほんと環境依存だよねー。
茶番劇
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
あとは、MATLABの場合、ベクトル、行列はデフォルトで内積に対して、
Pythonの場合はアダマール積になったりするから、
なんど事故ったか・・・。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(地味にいろいろ苦労してそうだな・・・。)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
最近何度も言ってるけど、
Python(Numpy)版のコードも起こすのはメンドクサイ!!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(なんかストレスも溜まってるな・・・。)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
まぁまぁ、このシリーズもあと少しな感じじゃん?
もうコードを弄るのも最後なんじゃない?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
いんや。
極大値、極小値特定が残ってる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
それは・・・FFTの時の奴を使いまわせないの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/びっくりフクロウ.png)
たぶん、コピペレベルで行けるつもりでは居るけど、
もうMATLABとPythonを往ったり来たりするのは御免こうむりたい!!
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
わかったよー。
じゃー、その部分は僕の方でみるよー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
その言葉を待ってた。
まかせた。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」09アップ.png)
(なんかハメられたーーーーー!!!)
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
(最後くらい脳みそ動かしてもらわんとな)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- Python(Numpy)版の個別株チャートに対しするフーリエ変換、逆フーリエ変換のコードにするための修正。
- csv読み取り部分を追加。
- 列ベクトルで取得されるのでベクトルに変換。
- csv読み取り部分を追加。
- MATLABとPythonのベクトル周りがいろいろクセが違うのでだんだん嫌になってきた。
バックナンバーはこちら。
コメント