ベクトル基数FFTアルゴリズムは 、多次元高速フーリエ変換 (FFT)アルゴリズムであり、変換次元を任意の基数で分割する通常のCooley–Tukey FFTアルゴリズム の一般化です。多次元(MD)離散フーリエ変換 (DFT)を、最終的には自明なMD DFTのみを評価する必要があるまで、より小さなMD DFTに順次分解します。[ 1 ]
最も一般的な多次元FFT アルゴリズムは行列アルゴリズムであり、これは配列をまず一方のインデックスで変換し、次に他方のインデックスで変換することを意味します(FFT で詳細を参照) 。次に、基数2の直接2次元FFTが開発され[ 2 ] 、従来の行列アプローチと比較して乗算を25%削減できます。また、このアルゴリズムは矩形配列と任意の基数に拡張され[ 3 ] 、一般的なベクトル基数アルゴリズムとなっています。
ベクトル基数FFTアルゴリズムは、行ベクトルアルゴリズムと比較して、複素乗算の数を大幅に削減できます。たとえば、N M {\displaystyle N^{M}} 要素行列(M次元、各次元のサイズはN)の場合、基数2のベクトル基数FFTアルゴリズムの複素数の倍数は2 M − 1 2 M N M ログ 2 N {\displaystyle {\frac {2^{M}-1}{2^{M}}}N^{M}\log _{2}N} 一方、行列アルゴリズムでは、M N M 2 ログ 2 N {\displaystyle {\frac {MN^{M}}{2}}\log _{2}N} 一般的に、このアルゴリズムをより大きな基数や高次元配列に適用すると、乗算回数の削減効果がさらに大きくなります。[ 3 ]
全体として、ベクトル基数アルゴリズムは、より優れたインデックス付けスキームにより、従来のDFTの構造的複雑さを大幅に軽減しますが、その代償として演算回数がわずかに増加します。そのため、このアルゴリズムは、画像処理[ 4 ] や高速FFTプロセッサの設計[ 5 ]など、工学、科学、数学の多くのアプリケーションで広く使用されています。
2次元DITケース クーリー・テューキーFFTアルゴリズム と同様に、2次元ベクトル基数FFTは、通常の2次元DFTを「twiddle」係数を乗じたより小さなDFTの和に分解することによって導出されます。
時間間引き(DIT )アルゴリズムとは、時間領域に基づいて分解を行うアルゴリズムのことである。x {\displaystyle x} 詳しくは、Cooley–Tukey FFTアルゴリズム を参照してください。
2次元DFTは次のように定義されると仮定します。
X ( k 1 、 k 2 ) = ∑ n 1 = 0 N 1 − 1 ∑ n 2 = 0 N 2 − 1 x [ n 1 、 n 2 ] ⋅ W N 1 k 1 n 1 W N 2 k 2 n 2 、 {\displaystyle X(k_{1},k_{2})=\sum _{n_{1}=0}^{N_{1}-1}\sum _{n_{2}=0}^{N_{2}-1}x[n_{1},n_{2}]\cdot W_{N_{1}}^{k_{1}n_{1}}W_{N_{2}}^{k_{2}n_{2}},} どこk 1 = 0 、 … 、 N 1 − 1 {\displaystyle k_{1}=0,\dots ,N_{1}-1} 、 そしてk 2 = 0 、 … 、 N 2 − 1 {\displaystyle k_{2}=0,\dots ,N_{2}-1} 、 そしてx [ n 1 、 n 2 ] {\displaystyle x[n_{1},n_{2}]} はN 1 × N 2 {\displaystyle N_{1}\times N_{2}} 行列、そしてW N = exp ( − j 2 π / N ) {\displaystyle W_{N}=\exp(-j2\pi /N)} 。
簡略化のため、次のように仮定しましょう。N 1 = N 2 = N {\displaystyle N_{1}=N_{2}=N} 、基数-( r × r ) {\displaystyle (r\times r)} は、N / r {\displaystyle N/r} 整数です。
変数変換を用いる:
n 私 = r p 私 + q 私 {\displaystyle n_{i}=rp_{i}+q_{i}} 、 どこp 私 = 0 、 … 、 ( N / r ) − 1 ; q 私 = 0 、 … 、 r − 1 ; {\displaystyle p_{i}=0,\ldots ,(N/r)-1;q_{i}=0,\ldots ,r-1;} k 私 = u 私 + v 私 N / r {\displaystyle k_{i}=u_{i}+v_{i}N/r} 、 どこu 私 = 0 、 … 、 ( N / r ) − 1 ; v 私 = 0 、 … 、 r − 1 ; {\displaystyle u_{i}=0,\ldots ,(N/r)-1;v_{i}=0,\ldots ,r-1;} どこ私 = 1 {\displaystyle i=1} または2 {\displaystyle 2} すると、2次元DFTは次のように記述できます。[ 6 ]
X ( u 1 + v 1 N / r 、 u 2 + v 2 N / r ) = ∑ q 1 = 0 r − 1 ∑ q 2 = 0 r − 1 [ ∑ p 1 = 0 N / r − 1 ∑ p 2 = 0 N / r − 1 x [ r p 1 + q 1 、 r p 2 + q 2 ] W N / r p 1 u 1 W N / r p 2 u 2 ] ⋅ W N q 1 u 1 + q 2 u 2 W r q 1 v 1 W r q 2 v 2 、 {\displaystyle X(u_{1}+v_{1}N/r,u_{2}+v_{2}N/r)=\sum _{q_{1}=0}^{r-1}\sum _{q_{2}=0}^{r-1}\left[\sum _{p_{1}=0}^{N/r-1}\sum _{p_{2}=0}^{N/r-1}x[rp_{1}+q_{1},rp_{2}+q_{2}]W_{N/r}^{p_{1}u_{1}}W_{N/r}^{p_{2}u_{2}}\right]\cdot W_{N}^{q_{1}u_{1}+q_{2}u_{2}}W_{r}^{q_{1}v_{1}}W_{r}^{q_{2}v_{2}},} DITベクトル基数2x2 FFT用の1ステージ「バタフライ」 上記の式は、2次元DIT基数の基本構造を定義します。( r × r ) {\displaystyle (r\times r)} 「バタフライ」。(クーリー・テューキーFFTアルゴリズム における1次元「バタフライ」を参照)
いつr = 2 {\displaystyle r=2} 、この方程式は4つの総和に分解でき、次のようになります。[ 1 ]
X ( k 1 、 k 2 ) = S 00 ( k 1 、 k 2 ) + S 01 ( k 1 、 k 2 ) W N k 2 + S 10 ( k 1 、 k 2 ) W N k 1 + S 11 ( k 1 、 k 2 ) W N k 1 + k 2 {\displaystyle X(k_{1},k_{2})=S_{00}(k_{1},k_{2})+S_{01}(k_{1},k_{2})W_{N}^{k_{2}}+S_{10}(k_{1},k_{2})W_{N}^{k_{1}}+S_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}} のために0 ≤ k 1 、 k 2 < N 2 {\displaystyle 0\leq k_{1},k_{2}<{\frac {N}{2}}} 、どこS 私 j ( k 1 、 k 2 ) = ∑ n 1 = 0 N / 2 − 1 ∑ n 2 = 0 N / 2 − 1 x [ 2 n 1 + 私 、 2 n 2 + j ] ⋅ W N / 2 n 1 k 1 W N / 2 n 2 k 2 {\displaystyle S_{ij}(k_{1},k_{2})=\sum _{n_{1}=0}^{N/2-1}\sum _{n_{2}=0}^{N/2-1}x[2n_{1}+i,2n_{2}+j]\cdot W_{N/2}^{n_{1}k_{1}}W_{N/2}^{n_{2}k_{2}}} 。
のS 私 j {\displaystyle S_{ij}} と見なすことができるN / 2 {\displaystyle N/2} 次元DFT、それぞれ元のサンプルのサブセットに対して:
S 00 {\displaystyle S_{00}} これらのサンプルに対する DFT はx {\displaystyle x} 両方n 1 {\displaystyle n_{1}} そしてn 2 {\displaystyle n_{2}} 等しい。S 01 {\displaystyle S_{01}} は、サンプルに対する DFT であり、n 1 {\displaystyle n_{1}} は均等でn 2 {\displaystyle n_{2}} 奇妙だ。S 10 {\displaystyle S_{10}} は、サンプルに対する DFT であり、n 1 {\displaystyle n_{1}} 奇妙でn 2 {\displaystyle n_{2}} 偶数である。S 11 {\displaystyle S_{11}} は、両方のサンプルに対する DFT です。n 1 {\displaystyle n_{1}} そしてn 2 {\displaystyle n_{2}} 奇妙だ。複素指数関数の周期性 のおかげで、次の追加の恒等式が得られます。0 ≤ k 1 、 k 2 < N 2 {\displaystyle 0\leq k_{1},k_{2}<{\frac {N}{2}}} :
X ( k 1 + N 2 、 k 2 ) = S 00 ( k 1 、 k 2 ) + S 01 ( k 1 、 k 2 ) W N k 2 − S 10 ( k 1 、 k 2 ) W N k 1 − S 11 ( k 1 、 k 2 ) W N k 1 + k 2 {\displaystyle X{\biggl (}k_{1}+{\frac {N}{2}},k_{2}{\biggr )}=S_{00}(k_{1},k_{2})+S_{01}(k_{1},k_{2})W_{N}^{k_{2}}-S_{10}(k_{1},k_{2})W_{N}^{k_{1}}-S_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}} ;X ( k 1 、 k 2 + N 2 ) = S 00 ( k 1 、 k 2 ) − S 01 ( k 1 、 k 2 ) W N k 2 + S 10 ( k 1 、 k 2 ) W N k 1 − S 11 ( k 1 、 k 2 ) W N k 1 + k 2 {\displaystyle X{\biggl (}k_{1},k_{2}+{\frac {N}{2}}{\biggr )}=S_{00}(k_{1},k_{2})-S_{01}(k_{1},k_{2})W_{N}^{k_{2}}+S_{10}(k_{1},k_{2})W_{N}^{k_{1}}-S_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}} ;X ( k 1 + N 2 、 k 2 + N 2 ) = S 00 ( k 1 、 k 2 ) − S 01 ( k 1 、 k 2 ) W N k 2 − S 10 ( k 1 、 k 2 ) W N k 1 + S 11 ( k 1 、 k 2 ) W N k 1 + k 2 {\displaystyle X{\biggl (}k_{1}+{\frac {N}{2}},k_{2}+{\frac {N}{2}}{\biggr )}=S_{00}(k_{1},k_{2})-S_{01}(k_{1},k_{2})W_{N}^{k_{2}}-S_{10}(k_{1},k_{2})W_{N}^{k_{1}}+S_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}} 。
2次元DIFケース 同様に、周波数間引き(DIF 、サンデ・テューキーアルゴリズムとも呼ばれる)アルゴリズムは、周波数領域に基づいて分解が行われることを意味する。X {\displaystyle X} 詳しくは、Cooley–Tukey FFTアルゴリズム を参照してください。
変数変換を用いる:
n 私 = p 私 + q 私 N / r {\displaystyle n_{i}=p_{i}+q_{i}N/r} 、 どこp 私 = 0 、 … 、 ( N / r ) − 1 ; q 私 = 0 、 … 、 r − 1 ; {\displaystyle p_{i}=0,\ldots ,(N/r)-1;q_{i}=0,\ldots ,r-1;} k 私 = r u 私 + v 私 {\displaystyle k_{i}=ru_{i}+v_{i}} 、 どこu 私 = 0 、 … 、 ( N / r ) − 1 ; v 私 = 0 、 … 、 r − 1 ; {\displaystyle u_{i}=0,\ldots ,(N/r)-1;v_{i}=0,\ldots ,r-1;} どこ私 = 1 {\displaystyle i=1} または2 {\displaystyle 2} 、そしてDFT方程式は次のように書くことができる:[ 6 ]
X ( r u 1 + v 1 、 r u 2 + v 2 ) = ∑ p 1 = 0 N / r − 1 ∑ p 2 = 0 N / r − 1 [ ∑ q 1 = 0 r − 1 ∑ q 2 = 0 r − 1 x [ p 1 + q 1 N / r 、 p 2 + q 2 N / r ] W r q 1 v 1 W r q 2 v 2 ] ⋅ W N p 1 v 1 + p 2 v 2 W N / r p 1 u 1 W N / r p 2 u 2 、 {\displaystyle X(ru_{1}+v_{1},ru_{2}+v_{2})=\sum _{p_{1}=0}^{N/r-1}\sum _{p_{2}=0}^{N/r-1}\left[\sum _{q_{1}=0}^{r-1}\sum _{q_{2}=0}^{r-1}x[p_{1}+q_{1}N/r,p_{2}+q_{2}N/r]W_{r}^{q_{1}v_{1}}W_{r}^{q_{2}v_{2}}\right]\cdot W_{N}^{p_{1}v_{1}+p_{2}v_{2}}W_{N/r}^{p_{1}u_{1}}W_{N/r}^{p_{2}u_{2}},}
その他のアプローチ 分割基数FFTアルゴリズムは 、1次元DFTに有用な方法であることが証明されています。そして、この方法はベクトル基数FFTに適用され、分割ベクトル基数FFTが得られています。[ 6 ] [ 7 ]
従来の2次元ベクトル基数アルゴリズムでは、インデックスを分解します。k 1 、 k 2 {\displaystyle k_{1},k_{2}} 4つのグループに分けます。
X ( 2 k 1 、 2 k 2 ) : イーブンイーブン X ( 2 k 1 、 2 k 2 + 1 ) : 偶数-奇数 X ( 2 k 1 + 1 、 2 k 2 ) : 奇数偶数 X ( 2 k 1 + 1 、 2 k 2 + 1 ) : 奇数奇数 {\displaystyle {\begin{array}{lcl}X(2k_{1},2k_{2})&:&{\text{even-even}}\\X(2k_{1},2k_{2}+1)&:&{\text{even-odd}}\\X(2k_{1}+1,2k_{2})&:&{\text{odd-even}}\\X(2k_{1}+1,2k_{2}+1)&:&{\text{odd-odd}}\end{array}}} 分割ベクトル基数アルゴリズムにより、最初の3つのグループは変更されず、4番目の奇数-奇数グループはさらに4つのサブグループに分解され、合計7つのグループになります。
X ( 2 k 1 、 2 k 2 ) : イーブンイーブン X ( 2 k 1 、 2 k 2 + 1 ) : 偶数-奇数 X ( 2 k 1 + 1 、 2 k 2 ) : 奇数偶数 X ( 4 k 1 + 1 、 4 k 2 + 1 ) : 奇数奇数 X ( 4 k 1 + 1 、 4 k 2 + 3 ) : 奇数奇数 X ( 4 k 1 + 3 、 4 k 2 + 1 ) : 奇数奇数 X ( 4 k 1 + 3 、 4 k 2 + 3 ) : 奇数奇数 {\displaystyle {\begin{array}{lcl}X(2k_{1},2k_{2})&:&{\text{even-even}}\\X(2k_{1},2k_{2}+1)&:&{\text{even-odd}}\\X(2k_{1}+1,2k_{2})&:&{\text{odd-even}}\\X(4k_{1}+1,4k_{2}+1)&:&{\text{odd-odd}}\\X(4k_{1}+1,4k_{2}+3)&:&{\text{odd-odd}}\\X(4k_{1}+3,4k_{2}+1)&:&{\text{odd-odd}}\\X(4k_{1}+3,4k_{2}+3)&:&{\text{odd-odd}}\end{array}}} つまり、2次元DIT基数の第4項は( 2 × 2 ) {\displaystyle (2\times 2)} 方程式、S 11 ( k 1 、 k 2 ) W N k 1 + k 2 {\displaystyle S_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}} こうなります:[ 8 ]
A 11 ( k 1 、 k 2 ) W N k 1 + k 2 + A 13 ( k 1 、 k 2 ) W N k 1 + 3 k 2 + A 31 ( k 1 、 k 2 ) W N 3 k 1 + k 2 + A 33 ( k 1 、 k 2 ) W N 3 ( k 1 + k 2 ) 、 {\displaystyle A_{11}(k_{1},k_{2})W_{N}^{k_{1}+k_{2}}+A_{13}(k_{1},k_{2})W_{N}^{k_{1}+3k_{2}}+A_{31}(k_{1},k_{2})W_{N}^{3k_{1}+k_{2}}+A_{33}(k_{1},k_{2})W_{N}^{3(k_{1}+k_{2})},} どこA 私 j ( k 1 、 k 2 ) = ∑ n 1 = 0 N / 4 − 1 ∑ n 2 = 0 N / 4 − 1 x [ 4 n 1 + 私 、 4 n 2 + j ] ⋅ W N / 4 n 1 k 1 W N / 4 n 2 k 2 {\displaystyle A_{ij}(k_{1},k_{2})=\sum _{n_{1}=0}^{N/4-1}\sum _{n_{2}=0}^{N/4-1}x[4n_{1}+i,4n_{2}+j]\cdot W_{N/4}^{n_{1}k_{1}}W_{N/4}^{n_{2}k_{2}}}
2-DN by N DFTは、上記の分解を最終段階まで連続的に使用することによって得られる。
分割ベクトル基数アルゴリズムは、典型的なケースにおいて、複素乗算を約30%、複素加算をほぼ同数削減できることが示されています。1024 × 1024 {\displaystyle 1024\times 1024} 配列は、ベクトル基数アルゴリズムと比較されます。[ 7 ]
参考文献 1 2 ダジョン、ダン;ラッセル、メルセロー(1983年9月)。多次元 デジタル信号処理 。プレンティスホール。76ページ 。ISBN 0136049591 。 ↑ Rivard, G. (1977). "二変数関数の直接高速フーリエ変換". IEEE Transactions on Acoustics, Speech, and Signal Processing . 25 (3): 250– 252. doi : 10.1109/TASSP.1977.1162951 . 1 2 Harris, D.; McClellan, J.; Chan, D.; Schuessler, H. (1977). "ベクトル基数高速フーリエ変換". ICASSP '77. IEEE International Conference on Acoustics, Speech, and Signal Processing . Vol. 2. pp. 548–551 . doi : 10.1109/ICASSP.1977.1170349 . ↑ Buijs, H.; Pomerleau, A.; Fournier, M.; Tam, W. (1974年12月). "画像処理アプリケーションのための高速フーリエ変換 (FFT) の実装". IEEE Transactions on Acoustics, Speech, and Signal Processing . 22 (6): 420–424 . doi : 10.1109/TASSP.1974.1162620 . ↑ Badar, S.; Dandekar, D. (2015). 「基数 4 パイプラインアーキテクチャを用いた高速FFTプロセッサ設計 」. 2015 International Conference on Industrial Instrumentation and Control (ICIC) . pp. 1050–1055 . doi : 10.1109/IIC.2015.7150901 . ISBN 978-1-4799-7165-7 . S2CID 11093545 . 1 2 3 Chan, SC; Ho, KL ( 1992). "Split vector-radix fast Fourier transform". IEEE Transactions on Signal Processing . 40 (8): 2029–2039 . Bibcode : 1992ITSP...40.2029C . doi : 10.1109/78.150004 . 1 2 Pei, Soo-Chang; Wu, Ja-Lin (1987 年 4 月)。「分割ベクトル基数 2 次元高速フーリエ変換」。ICASSP '87 。IEEE 国際音響・音声・信号処理会議 。 第 12 巻 、 pp. 1987–1990。doi : 10.1109 /ICASSP.1987.1169345。S2CID 118173900 。 ↑ Wu, H.; Paoloni, F. (1989年8月). 「2次元ベクトル分割基数FFTアルゴリズムについて」. IEEE Transactions on Acoustics, Speech, and Signal Processing . 37 (8): 1302– 1304. doi : 10.1109/29.31283 .