FFTW@wiki内検索 / 「Rea-data DFT Array Format」で検索した結果
-
Real-data DFT Array Format
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 実データ離散フーリエ変換配列様式 実データ離散フーリエ変換配列様式 実データの離散フーリエ変換出力(r2c変換)は、対称性を持つ。つまり、原則的には、2倍の冗長性を持つ(4.7節What FFTW Really Computes参照)。(逆c2r変換の入力も、同様)。実際のところ、これらの冗長性の排除を、効果的かつ理解しやすい形式(多次元変換の一般化するもの)で行うことを、完全に実現することは不可能である。その代わりに、r2c変換の出力は、対応する複素変換の出力の半分をわづかに超える。データはいかなる方法でも”圧縮”せず、通常のfftw_complex値の配列として、格納している。実際のところ、このデータは対応する複素変換の配列の一部分である。 具体的にいえば、d(=ランク)次元の n1...
-
Complex Multi-Dimensional DFTs
複素多次元離散フーリエ変換 Complex Multi-Dimensional DFTs 多次元変換も、一次元の変換とほとんど同じように動きます。すなわち、まずfftw_complexの配列のメモリを確保し、(fftw_mallocの使用を推奨)、次にfftw_planを作成し、3番目に、fftw_execute(plan)を必要な回数実行し、最後にfftw_destroy_plan(plan)とfftw_freeでメモリの解放を行います。唯一の違いは、プランを作るときに使うルーチンだけです。 すなわち、 fftw_plan fftw_plan_dft_2d(int nx, int ny, fftw_complex *in, fftw_complex *out, ...
-
Fixed-size Arrays in C
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット - C言語における固定配列 C言語における固定配列 Fixed-size Arrays in C C言語でコンパイル時にサイズが宣言されている多次元配列は、すでに列メジャーオーダーになっています。したがって、何も特別なことをする必要はありません。以下に例を示します、 { fftw_complex data[NX][NY][NZ]; fftw_plan plan; ・・・ plan = fftw_plan_dft_3d( NX, NY, NZ, data[0][0][0], FFTW_FORWARD, FFTW_ESTIMATE ); ・・・ } これは、NXxNyxNzの入出力が同じである、インプレース変換のプランです。プランナーにわた...
-
fftwandopencv
/** * @brief basic form of fftw with opencv */ #include stdio.h #include cv.h #include cxcore.h #include highgui.h #define _USE_MATH_DEFINES #include "math.h" #include "fftw3.h" #pragma comment( lib, "cv.lib" ) #pragma comment( lib, "cxcore.lib" ) #pragma comment( lib, "highgui.lib" ) #pragma comment( lib, "...
-
Multi-dimensional Array Format
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット 多次元配列のフォーマット Multi-dimensional Array Format この章では、FFTWにおける多次元配列のフォーマットについて述べます。 このトピックについては、詳細な議論が必要だと思っています。異なるフォーマットが通常用いられたりすることもあるので、このトピックはしばしばユーザーの混乱のもととなります。 行メジャー形式 列メジャー形式 C言語の固定サイズ配列 C言語の動的配列 C言語の動的配列(間違えた使い方)
-
powerspectol
/** * Powerspectol calculation * @author maeda * @date 2008/09/01 */ #include "powerspectol.h" #define _USE_MATH_DEFINES #include "math.h" /** * get the log scaled powerspectol of the signal and normalize it to 0-1 range * @param in input data ( frequency domain ) * @param out output data ( frequency domain ) * @param cols ( width ) * @param rows ( height ) * @return tru...
-
phase.cpp
/** * Phase calculation * @author maeda * @date 2008/09/01 */ #include "phase.h" #define _USE_MATH_DEFINES #include "math.h" /** * get the phase of the signal and normalize it to 0-1 range * if we can t get the phase i.e. power=0, set -1 * @param in input data ( frequency domain ) * @param out 0-1 normalized phase ( frequency domain ) * @param rows ( width ) * @param col...
-
realdataDFT
/** * @brief test of fftw r2c transform * @author maeda * @date 2008/09/24 */ #include cv.h #include cxcore.h #include highgui.h #include "fftw3.h" #include "powerspectol.h" #pragma comment( lib, "cv.lib" ) #pragma comment( lib, "cxcore.lib" ) #pragma comment( lib, "highgui.lib" ) #pragma comment( lib, "fftw3.lib" ) &n...
-
phase
/** * @brief phase calculation * @auther maeda * @date 2008/09/23 */ #include "phase.h" #define _USE_MATH_DEFINES #include "math.h" /** * get the phase of the signal and normalize it to 0-1 range * if we can t get the phase i.e. power=0, set -1 * @param in input data ( frequency domain ) * @param out 0-1 normalized phase ( frequency domain ) * @param rows ( height ) * @p...
-
FFTW Tutorial
チュートリアル Tutorial この章では、FFTWの基本的な使い方、つまりどうやって単一の配列のフーリエ変換を求めるのか、について述べます。 この章では、全ての事柄に対しては言及しません。 詳しくいえば、ここに載っていない追加的なルーチンやフラグがFFTWには実装されています。それについては、追加的になにができるのかが記してある場所をできる限り、明示したいとおもいます。より詳細な情報については4章のFFTW Referenceを参照してください。 プログラムを使用するためには、FFTWのインストールとコンパイルが必要です。インストールの詳細については、8章のInstallation and Customizationを参照してください。 チュートリアルは、順番に読んでいくことをおすすめします。例え、最初の節で説明される一次元DFT以外に興味を持ってい...
-
Real-Data DFTs
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 実データ離散フーリエ変換 実データ離散フーリエ変換 Real-Data DFTs fftw_plan fftw_plan_dft_r2c_1d( int n, double *in, fftw_complex *out, unsigned flags ); fftw_plan fftw_plan_dft_r2c_2d( int nx, int ny, double *in, fftw_complex *out, unsigned flags );...
-
fftw1D
/* * test of self compiled fftw3 * * @author maeda * @date 2008/09/09 */ #include stdio.h #define _USE_MATH_DEFINES #include math.h #include "fftw3.h" #pragma comment( lib, "fftw3.lib" ) #define SIZE 64 int main( void ){ fftw_complex *in = NULL; fftw_complex *out = NULL; fftw_plan p = NULL; int i; size_t mem_size = size...
-
One-Dimensional DFTs of Real Data
実データ1次元離散フーリエ変換 One-Dimensioanal DFTs of Real Data 実際の利用上、多くの場合、入力データin[i]は実数で、その場合DFTの出力は、”エルミート冗長性”を満たします。すなわち、out[i]はout[n-i]の共役となります。この性質の利点を生かすと、大雑把にいえば、スピードの向上と、メモリ節約を図ることができます。 このスピード向上と、メモリ節約といった利点と引き換えに、ユーザーはFFTWの複素変換の簡易性を犠牲にしなければなりません。 第1に、入出力の配列が異なるサイズ、型になります。入力がn個の実数だった場合、出力は(冗長でない形で)n/2+1個の複素数となります。また、入出力が等しい、in-place変換の場合、入力の配列にわずかに”パディング”(余白)を設ける必要があります。 第2に、複素数から実数への逆変換...
-
FFTW Introduction
Introduction このマニュアルはFFTW(the Fastest Fourier Transform in the West)バージョン3.1.2のものです.FFTWは離散フーリエ変換を計算する包括的な高速Cルーチン集であり、以下のような特徴があります. 複素数データ,実数データ,偶対称,奇対称な実数データのDFT(*1),実数データの離散Hartley変換(DHT)を計算可能 入力データは任意のサイズがとれる.O(nlogn)アルゴリズムを,素数を含む,すべてのサイズで採用. 計算の時間の次元がデータ数nに対して,nlogn 任意の多次元データをサポート SSE/SSE2/3DNow!/Altivecの命令セットをサポート FFTW3.1.2は共有メモリシステムに対しては、並列(マルチスレッド)変換が可能。FFTW3.1.2は分散メモリ並列変換ができないが、MP...
-
fftw2D
/* * test of self compiled fftw3 * 2D version * @author maeda * @date 2008/09/09 */ #include stdio.h #define _USE_MATH_DEFINES #include math.h #include "fftw3.h" #pragma comment( lib, "fftw3.lib" ) #define SIZEX 16 #define SIZEY 8 #define SIZE (SIZEX*SIZEY) int main( void ){ fftw_complex *in = NULL; fftw_complex *out = NULL; ...
-
Complex One-Dimensional DFTs
複素1次元離散フーリエ変換 Complex One-Dimensional DFTs プランとは、偶然の結果を達成するための最善の方法をいろいろ思い悩むことである。 (Ambrose Bierce, The Enlarged Devil’s Dictionary.) FFTWで、サイズNのデータの一次元DFTを計算する方法はいたって簡単で、おおよそ以下のようなコードになります。 #include fftw3.h ... { fftw_complex *in, *out; fftw_plan p; ... in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (...
-
DCexchange
/** * @brief origin shift (top-left - center) * @author maeda * @date 2008/09/10 */ #include "DCexchange.h" /** * in-place DC exchange for 2dimensional data (top-left - center) * this function works both odd/even size data * @param data fft data * @param cols column size of the data ( sometimes the size of x ) * @param rows row size of the data ( sometimes the size of y ) * @r...
-
Row-major Format
FFTWマニュアル - その他重要なこと - 多次元配列のフォーマット - 行メジャー形式 行メジャー形式 Row-major Format fftw_plan_dftなどにわたされる多次元配列は、単一の連続するブロックに列メジャー順(C順序と呼ばれることもある)で格納されています。基本的には、これはメモリの隣の場所に移れば、最初の次元の添え字が最も遅く変化し、最後の次元の添え字がもっともはやく変化することを意味します。 もっと具体的に言うと、rank dのn1 x n2 x n3 x・・・xndの配列を考えたとします。そして、配列の場所をゼロベースの添え字で特定すれば、(i1, i2, i3, ・・・,id)となります。もし、配列が行メジャー順であれば、この要素は、id + nd(id-1 + nd-1(・・・+n2i1))の場所に相当します。 通常の複素...
-
サンプルプログラム
- 番目のお客様♪ (※) プログラムを実行していかなる結果が生じても責任は負いません。悪しからず。 プログラムおよび実行結果 fftw+C言語標準ライブラリのみで動くプログラム とりあえず、試してみたい方へ。 プログラムの内容 ソースコード 実行結果 基本の使い方 1次元FFT fftw1D.cpp result1 基本の使い方 2次元FFT fftw2D.cpp result2 原点移動(2次元) DCexchange.cpp result3 パワースペクトルを得る powerspectol.cpp result4 位相を得る phase.cpp 画像出力する プランの再利用 メモリを節約したFFT OpenCVを利用したプログラム OpenCVというライブラリが必要だが、ライブラリ導入によって、コードも簡単、入出力も簡単になりオススメ...
-
Multi-Dimensional DFTs of Real Data
実データ多次元離散フーリエ変換 Multi-Dimensional DFTs of Real Data 実データの多次元離散フーリエ変換は、以下のプランナールーチンを使います。 fftw_plan fftw_plan_dft_r2c_2d( int nx, int ny, double *in, fftw_complex *out, unsigned flag ); fftw_plan fftw_plan_dft_r2c_3d( int nx, int ny, int nz, double *in, fftw_complex *out, unsigned flag ); fftw_plan fftw_plan_dft_r2c( int rank, con...
-
Complex DFTs
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 複素離散フーリエ変換 複素離散フーリエ変換 fftw_plan fftw_plan_dft_1d( int n, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan fftw_plan_dft_2d( int nx, int ny, fftw_complex *in, fftw_complex *out, int sign, unsigned flags ); fftw_plan ff...
-
Real-to-Real Transforms
FFTWマニュアル - FFTWリファレンス - ベーシックインターフェース - 実数から実数への変換 実数から実数への変換 Real-to-Real Transforms
-
FFTWマニュアル
- 番目のお客様 (^-^)/~~ FFTWのページ このページは、フリーのFFTライブラリFFTWが有効に活用されるように作られたページです。 マニュアルの日本語訳や、使用上の注意、サンプルプログラムがあります。 未完成のところも多いですが、常時更新していきます。 FFTWはバージョン2と3では大幅に仕様が異なるので、ご利用のバージョンにご注意ください。 ご意見や、感想を掲示板のほうへお寄せください。 動かない、分からないなどのお問い合わせは takaidohigasi あっと gmail.com へ!(回答あるかどうかは、保証しかねますが。。。) FFTW3.1.2 マニュアル FFTWとは?? FFTWの使い方 (簡単な使い方)複素1次元離散フーリエ変換 複素多次元離散フーリエ変換 実データ1次元離散フーリエ変換 実データ多次...
-
Stack alignment on x86
x86アーキテクチャにおけるスタックの並び Pentiumやそれに続くx86のプロセッサーでは、倍精度の変数が8-byte並びになっていないと、かなりのパフォーマンスの損失があります。(2つ以上の因数というのは普通ではありません?? 原文 a factor of two or more is not unusual) 残念なことに、スタック(ローカル変数や、サブルーチンの引数が格納される場所)はIntel ABIでは8-byte並びになっていることは保証されていません。 最近のgcc(Intel、Metrowerks、Microsoftなどの大多数のその他のコンパイラも同様)では、スタックを8-byte並びにすることができ、gccはこれをデフォルトでやってくれます(gccドキュメントの-mpreferred-stack-boundaryを参照)。もし、あなたのコンパイラが...
-
@wiki全体から「Rea-data DFT Array Format」で調べる
更新順にページ一覧表示
|
作成順にページ一覧表示
|
ページ名順にページ一覧表示
|
wiki内検索