ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
基本事項
ソフトウェア構成
UltraLong構造体
UltraMath
FFT
プログラミング例
UltraPrecisionユーティリティ
FFT試験
レガシ演算速度
FFT演算速度
数値/浮動小数点/精度
定数システム
レガシ四則算
FFT乗算
ニュートン法
逆数法
数学関数
時間評価システム
限界値自動決定システム
数学定数算出

多倍長演算ライブラリ(UltraPrecision)

FFT

最終更新日:2006/03/20

●概要

 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
ConvolutionInteger(A() As Integer, B() As Integer, C() As Long)  何れもByRef

 2組の整数A、B の離散循環畳み込みを行い、複素数の結果の実数部のみを整数化して、C に返す。線形畳み込みにするのは、入力データで決まる(後ろの半分以上を0にしておく)。A、B のサイズは、2n でないといけない。そうでない時の保証はない。FFT乗算の基礎関数である。内部では、UniFFTDoubleで同時FFT、UniFFTで逆FFTを行っている。

 オーバーロードにて、Short の場合は、1万進数の数値とし、Integer の場合は、1億進数の数値であるとする。Integer の場合は、内部で、1万進数に分割される。