|
|
●概要 DFTをFFTで行うライブラリである。VB.NET で作成されている。メソッドは全て、共有になっているので、インスタンスは不要である。 ●関数仕様 ○初期設定 ・InitialSet() アプリケーションにて、最初に一回だけ実行する。必要なテーブルを生成する。実行されていなければ、FFTメソッドでも、自動的に実行される。一度実行されると、以降は呼び出されても実行しない。 ○プロパティ、他 ・NormalizeFFTSize(ByVal N As Integer, ByRef NN As Integer, ByRef L As Integer) 任意のNを指定すると、そのNに最も相応しい、NN = 2L と、L を返す。最大値以上だと、0が返る。 ・ReadOnly Property MaxFFTSize() As Integer FFTできる最大のデータ数を返す。 ○FFTメソッド ・UniFFT(ByRef Re() As Double, ByRef Im() As Double, Inv As Integer) 1次元FFTを行う。Reは実数部、Imは虚数部である。結果も、その引数に設定される。データ数は規格化されていなければ(つまり、2n )ならない。そうでない時の保証はない。Inv =1 にて、逆FFTとなる。この場合、結果は必ず、1/ 2n される。 ・UniFFTDouble(A(), B(), ARe(), AIm(), BRe(), BIm()) 何れもByRef の Double配列 2組の実数A、B を同時にFFTし、それぞれのフーリエ変換を(ARe()、AIm())、(BRe()、BIm())として得る。A、B のサイズは、2n でないといけない。そうでない時の保証はない。A、B の内容は不定となる。 ○コンボリューションメソッド ・ConvolutionInteger(A() As Short, B() As
Short, C() As Long) 何れもByRef 2組の整数A、B の離散循環畳み込みを行い、複素数の結果の実数部のみを整数化して、C に返す。線形畳み込みにするのは、入力データで決まる(後ろの半分以上を0にしておく)。A、B のサイズは、2n でないといけない。そうでない時の保証はない。FFT乗算の基礎関数である。内部では、UniFFTDoubleで同時FFT、UniFFTで逆FFTを行っている。 オーバーロードにて、Short の場合は、1万進数の数値とし、Integer の場合は、1億進数の数値であるとする。Integer の場合は、内部で、1万進数に分割される。 |