nx*ny*nz
要素を持つ 3D 立方体を考えてみてください。これらの要素の 3 次元 FFT は、数学的には 3 段階の 1 次元 FFT であり、各軸に 1 つずつあります。
- X 軸に沿って ny*nz 変換を行い、各変換は nx 要素を処理します
- Y 軸に沿った nx*nz 変換
- nx*ny は Z 軸に沿って変換します
より一般的には、N 次元 FFT (N>1) は、その軸に沿った多数の (N-1) 次元 FFT で構成されます。
信号が本物で、スペクトルの半分を返すことができる FFT がある場合、ステージ 1 のコストは約半分になります (実際の FFT の方が安価です)。残りのステージは複雑にする必要がありますが、必要なのは多くの変換。そのため、コストは約半分です。
1d FFT がストライドされた入力要素を読み取り、出力を連続したバッファーにパックできる場合、各段階で転置を行うことになります。
これが、kissfftが多次元 FFT を実行する方法です。
PS 私がより高い次元の心的イメージを得る必要があるとき、私は次のことを考えます: 数のマトリックスを含む紙 (2d)、番号付きの書類のフォルダー (3d)、番号付きのファイリング キャビネット (4d)、番号付きの部屋 (5d) )、番号の付いた建物 (6d) など...「ファイリング キャビネット」の寸法を視覚化できます