【FFTへ】MATLAB、Pythonで株価予測 その13【至る道⑪】

【FFTへ】MATLAB、Pythonで株価予測 その13【至る道⑪】 株価予測
【FFTへ】MATLAB、Pythonで株価予測 その13【至る道⑪】

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

はじめに

前回は、タイトル詐欺にならないよう回転因子の算出をMATLAB、Pythonを使ってやってみた。
それぞれ虚数表現がやや異なり、
MATLABはi。
Pythonはj。
で表現する文化っぽい。

今回はバタフライ演算の前の回転因子による最適化の話になる。

登場人物

博識フクロウのフクさん

指差しフクロウ

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

回転因子の行列表現

フクさん
フクさん

前回は回転因子について説明したが、
その回転因子が行列としてどのように表現されるかを見てみよう。
とりあえずは\(N=4\)の場合の表現としよう。

\(
\begin{bmatrix}
F_0 \\
F_1 \\
F_2 \\
F_3 \\
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 & 1 & 1 \\
1 & W_4^1 & W_4^2 & W_4^3 \\
1 & W_4^2 & W_4^4 & W_4^6 \\
1 & W_4^3 & W_4^6 & W_4^9 \\
\end{bmatrix}
\begin{bmatrix}
f_0 \\
f_1 \\
f_2 \\
f_3 \\
\end{bmatrix}
\)

太郎くん
太郎くん

お!
回転因子での表現だとすごくシンプルになる!

太郎くん
太郎くん

あと、1周じゃなくて、\(W_4^9\)まであるってことは2周くらいするのか。

太郎くん
太郎くん

でも特定の円の中を回ってるだけだから同じ値が何回も出現する形になりそうだね。

回転位置による最適化

フクさん
フクさん

そうそう。
その同じ値が何回も出現するという事実が結構重要だったりする。
つまり以下に書き直せる。

\(
\begin{bmatrix}
F_0 \\
F_1 \\
F_2 \\
F_3 \\
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 & 1 & 1 \\
1 & W_4^1 & W_4^2 & W_4^3 \\
1 & W_4^2 & 1 & W_4^2 \\
1 & W_4^3 & W_4^2 & W_4^1 \\
\end{bmatrix}
\begin{bmatrix}
f_0 \\
f_1 \\
f_2 \\
f_3 \\
\end{bmatrix}
\)

実数による最適化

フクさん
フクさん

さらに、\(n/N=1/2\)が成立する回転因子も\(-1\)が確定するので、

\(
\begin{bmatrix}
F_0 \\
F_1 \\
F_2 \\
F_3 \\
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 & 1 & 1 \\
1 & W_4^1 & -1 & W_4^3 \\
1 & -1 & 1 & -1 \\
1 & W_4^3 & -1 & W_4^1 \\
\end{bmatrix}
\begin{bmatrix}
f_0 \\
f_1 \\
f_2 \\
f_3 \\
\end{bmatrix}
\)

対角線による最適化

フクさん
フクさん

さらに、回転因子の対角線にあるものもまとめることが可能。
今回の場合だと\(W_4^1=-W_4^3\)になるな。

\(
\begin{bmatrix}
F_0 \\
F_1 \\
F_2 \\
F_3 \\
\end{bmatrix}
=
\begin{bmatrix}
1 & 1 & 1 & 1 \\
1 & W_4^1 & -1 & -W_4^1 \\
1 & -1 & 1 & -1 \\
1 & -W_4^1 & -1 & W_4^1 \\
\end{bmatrix}
\begin{bmatrix}
f_0 \\
f_1 \\
f_2 \\
f_3 \\
\end{bmatrix}
\)

太郎くん
太郎くん

ここまでシンプルになるのか・・・。

フクさん
フクさん

まぁバタフライ演算をする上ではまた違った最適化をするんだけどね。

太郎くん
太郎くん

じゃーなぜこの説明をしたんだ・・・。

フクさん
フクさん

だってこれはこれで便利そうな考え方なんだもん。
あと、一応バタフライ演算が成立する課程の組み合わせで似たような感じで出てくるやら出て来ないやら・・・。

太郎くん
太郎くん

(ハッキリしないなぁ・・・。)

まとめ

フクさん
フクさん

まとめだよ。

  • 回転因子を元に行列表現してみた。
    • 回転位置による最適化が可能。
    • 必ず実数になる点が存在することによる最適化が可能。
    • 対角線による最適化が可能。
  • ここまででもかなり便利ではあるが、さらにバタフライ演算をするための最適化もある。

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

コメント

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