問題タブ [fftw]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - FFTW と CUFFT 出力の違い
以下に投稿した文字では、FFTW と CUFFT で IFFT を実行した結果を比較しています。
これが異なる理由として考えられるのは何ですか?それは本当に丸め誤差ですか?
関連するコード スニペットは次のとおりです。
ifft は次のように定義されました。
グラフを生成するために、fftw_execute の後に h_data と outdata をダンプしました。W は、処理中の画像の行の幅です。
明らかに明らかな何かが見えますか?
c++ - CUFFTのスケーリング係数
単純なテストプログラムを作成しました。このプログラムでは、Complex to Complex FTを実行し、データ1..50を生成して、配列の各インデックスの実数部と虚数部に貼り付けました。
このような操作を行うとIFFT(FFT(A))= A
それらをテストするために、ライブラリごとに異なる結果が得られています。
FFTW、元のAを取り戻すには、出力をlen(A)で割る必要があります
ただし、これを順方向に実行してからCUFFTを使用して逆方向にFFTを実行すると、元のデータに戻すために(sqrt(2)* 50)で除算する必要があるように見えます。
この余分な平方根係数はどこから来ていますか?
CUFFTのドキュメントによると:CUFFTは正規化されていないFFTを実行します。つまり、入力データセットに対して順方向FFTを実行し、続いて結果セットに対して逆方向FFTを実行すると、要素数でスケーリングされた入力に等しいデータが生成されます。データセットのサイズの逆数によるいずれかの変換のスケーリングは、ユーザーが適切と思われるように実行できるように残されています。
前もって感謝します
python - Python:割り当て全体で変数のメモリ位置を保持する方法は?
私はまだPythonにはかなり慣れていないので、この質問がばかげている場合はご容赦ください。Googleで答えを見つけることができませんでした...
私は自分のコードで PyFFTW を使用しています。これには、変換元/変換先の 2 つの変数 (ソース/宛先) を渡す計画段階があります。その後、FFT を呼び出すと、これらの変数が計画段階で配置された正確なメモリ空間で動作します。したがって、これらの 2 つの変数のメモリ内の場所が変わらないように、変数に対して実行されるすべての操作を実行する必要があります。標準の数学演算子に対してこれを行う演算子*=
、などを見つけました。+=
ただし、私のプログラムでは、関数を変数に適用する必要があり、変数は同じメモリ位置に返されます。これを行う方法?!
最初は次の方法でスライスを使用しました。
ただし、これは非常に遅いことに気付きました (私のコードは約 10% 遅いです)。では、これについてどうすればよいか知っている人はいますか?
どんな助けでも大歓迎です。前もって感謝します!
image-processing - 2 次元 FFTW ヘルプ
現在、 fftw_plan_dft_2d を介して画像の fft を計算しようとしています。
この関数を使用するには、画像データを in 配列に線形化し、上記の関数を呼び出します (詳細は以下を参照)。
func は、元のイメージのピクセル数と同じサイズの複素数配列 out を変更します。
これが画像の 2D FFT を計算する適切な方法かどうか知っていますか? もしそうなら、アウト内のデータは何を表していますか? IE 配列内の高周波値と低周波値はどこにありますか?
ありがとう、djs22
c++ - fftwppは、畳み込み後にゼロで満たされた配列を作成します
fftwppを使用して、データと畳み込みカーネルの両方をフーリエ空間に変換し、スカラー積のようにそれらを乗算して、実空間に変換し直します。プログラムを最初に実行すると、完全にゼロで埋められた配列が作成されます。もう一度実行すると、望ましい結果が得られます。
実行中に、wisdom3.txt
が作成されます。削除すると、ゼロで埋められた配列を再度作成するのに時間がかかります。
私のコードの何が問題になっていますか?
windows - FFTW を Matlab Mex ファイルにリンクする
mex ファイルで FFTW コードを実行しようとしています。これは厳密に開発とテストを目的としています。グーグルで調べたところ、他の人が同様のことを試み、関連する問題を抱えていることがわかりましたが、解決策は見つかりませんでした。mex ファイルを実行しようとすると、Matlab から次のように通知されます。
??? エラー使用 ==> chirpTransform.mxCta 無効な MEX ファイル '\removed\my\directory\+chirpTransform\mxCta.mexw32': 指定されたプロシージャが見つかりませんでした。
.
LCC には問題があるように見えるため、MinGW で gnumex を使用して mex ファイルをビルドしています。FFTW サイト ( http://www.fftw.org/install/windows.html )の 32 ビット DLL を使用してみました。Matlab 2009b bin ディレクトリにある fftwf3.dll を使用してみました。Msys/MinGW を使用してソースから dll をビルドしました。いずれの場合も、結果は同じです。すべての場合において、lib ファイルを生成するために次のことを行いました。
c:\gnumex\mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib --as C:\MinGW\bin\as.exe
また、ビジュアル スタジオの lib.exe ツールを使用してみたり、さまざまな mexdlltool フラグを試したりしました。
Matlab の loadlibrary 機能を使用して、fftwf3-3.dll の関数を直接呼び出すことができるようです。DLL が問題ではないように見えるので、fftwf3 の静的バージョンをビルドし、それを mex ファイルに直接リンクしてみました。私は同じ結果を得ました!FFTW コードを削除すると、mex ファイルは正常に動作します。私はこの時点でほとんどあきらめており、別のテスト方法を考え出すのに苦労しています.
c++ - FFTW ライブラリ C++ を使用した FFT および IFFT の計算
同じ信号を取り戻すことができるかどうかを試すために、FFT を計算してから IFFT を計算しようとしていますが、それを達成する方法がよくわかりません。これは私がFFTを行う方法です:
java - Java の最近の FFTW ラッパー
最近のバージョンのFFTW用の最小限の Java ラッパーを探しています。FFTW Web サイトにリストされているラッパーは、古くなっている ( jfftw-1.2.zip ) か、余分なものが多すぎる ( Shared Scientific Toolbox ) です。Google 検索ではJFFTW3が示唆されていますが、これは有望に見えますが、ダウンロード リンクが壊れています (ミラーを持っている人はいますか?)
純粋な Java FFT ライブラリが必要な場合は、JTransformsが非常に良さそうです。FFTW の方が約 2 倍高速で、d > 3 の任意の次元を処理できるため、FFTW を使用することをお勧めします。
c - Cでfftw.hを使用してfftとifftを計算する
こんにちはすべて私は組み込みシステム上のいくつかの信号処理アプリケーションの周波数スペクトルを計算するためにfftwCライブラリを使用しています。しかし、私のプロジェクトでは、私はわずかな障害に遭遇しました。
以下は、fftw関数を正しく実装していることを確認するために作成した簡単なプログラムです。基本的に、12個の数列のfftを計算してから、ifftを実行して、同じ数列を再度取得します。fftw3とgccがインストールされている場合、次のコマンドでコンパイルすると、このプログラムは機能するはずです。
現在、私のfftの長さは入力配列と同じサイズです。
次の出力を生成します。
したがって、明らかに、ifftはスケールアップされた結果を生成しています。ここにあるfftwドキュメント: スケーリングに関するfftwドキュメント。いくつかのスケーリングについて言及していますが、私はFFT_FORWARDとFFT_BACKWARDではなく「r2c」と「c2r」変換を使用しています。任意の洞察をいただければ幸いです。