バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/
はじめに
前回は、フーリエ変換、逆フーリエ変換のPython(Numpy)版のコードを作成。
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版)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
じゃ、前回のPythonコードを動かすよー。
・・・実行中・・・
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うん。
狙い通りの結果じゃないかな。
![フーリエ変換、逆フーリエ変換(Python版)最大周波数127Hz](https://www.simulationroom999.com/blog/wp-content/uploads/2022/06/02_フーリエ変換、逆フーリエ変換Python版最大周波数127Hz-1024x555.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者a」05アップ.png)
1[Hz]、3[Hz]、7[Hz]が取れてるからOKだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
ただ、この状態はまだFFTと同レベルの粒度だけどね。
周波数粒度を上げてみる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
確か、Wmaxを調整すればOKだったよね?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
MATLABの時は20[Hz]に設定したね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
じゃー、コード内のWmaxを20[Hz]に調整。
その結果がこれ。
![フーリエ変換、逆フーリエ変換(Python版)最大周波数20Hz](https://www.simulationroom999.com/blog/wp-content/uploads/2022/06/03_フーリエ変換、逆フーリエ変換Python版最大周波数20Hz-1024x555.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者a」05アップ.png)
MATLABの時と同じ結果だね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
MATLABでもPythonでも同じような実験はできそうだな。
ちょっと気になった点
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
そういえば、MATLABもPythonもフーリエ変換、逆フーリエ変換でfor文で回してたじゃん?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、MATLABの時は、これをfor文無しでできるようなこと言ってたけど、
それはPython(Numpy)も一緒と思って良いのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/考え中フクロウ.png)
うーん、それは試してないからわからないなー。
そういう意味では、MATLABの方もコードレベルでは試してないな。
現状、
「つまり両方ともできるはず」
って程度だ。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
そこも確認できると面白そうかなーって思ったんだけど。
実はMATLABで出来て、Python(Numpy)では出来ない。
とかあるなら知っておきたいし。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.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/指差しフクロウ.png)
まとめだよ。
- フーリエ変換、逆フーリエ変換(Python版)の動作確認実施。
- Wmaxを修正して周波数精度を引き上げた処理を実施。
- 以前、for文無しでもフーリエ変換、逆フーリエ変換が可能と言ったが、MATLAB、Python(Numpy)双方でできるか確認してみる。
バックナンバーはこちら。
コメント