バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、フーリエ変換、逆フーリエ変換のPython(Numpy)版のコードを作成。
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版)
じゃ、前回のPythonコードを動かすよー。
・・・実行中・・・
うん。
狙い通りの結果じゃないかな。
1[Hz]、3[Hz]、7[Hz]が取れてるからOKだね。
ただ、この状態はまだFFTと同レベルの粒度だけどね。
周波数粒度を上げてみる。
確か、Wmaxを調整すればOKだったよね?
そうそう。
MATLABの時は20[Hz]に設定したね。
じゃー、コード内のWmaxを20[Hz]に調整。
その結果がこれ。
MATLABの時と同じ結果だね。
MATLABでもPythonでも同じような実験はできそうだな。
ちょっと気になった点
そういえば、MATLABもPythonもフーリエ変換、逆フーリエ変換でfor文で回してたじゃん?
そうだね。
で、MATLABの時は、これをfor文無しでできるようなこと言ってたけど、
それはPython(Numpy)も一緒と思って良いのかな?
うーん、それは試してないからわからないなー。
そういう意味では、MATLABの方もコードレベルでは試してないな。
現状、
「つまり両方ともできるはず」
って程度だ。
そこも確認できると面白そうかなーって思ったんだけど。
実はMATLABで出来て、Python(Numpy)では出来ない。
とかあるなら知っておきたいし。
まぁどっちもできるとは思うけど、
確かに何かしら制約はあるかもしれないな。
じゃ、そこら辺の確認よろしくー。
(やっぱり私がやるのか・・・。)
まとめ
まとめだよ。
- フーリエ変換、逆フーリエ変換(Python版)の動作確認実施。
- Wmaxを修正して周波数精度を引き上げた処理を実施。
- 以前、for文無しでもフーリエ変換、逆フーリエ変換が可能と言ったが、MATLAB、Python(Numpy)双方でできるか確認してみる。
バックナンバーはこちら。
コメント