問題タブ [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 - CでFFTをバッチ処理する方法
次のスニペットを使用して、50枚の画像に対してバッチFFTを実行しようとしています。
ただし、最初の画像(つまり、最初のpix1 * pix2要素)のFFTしか取得できません。これを正しく行う方法について何か提案はありますか?
前もって感謝します
signal-processing - 畳み込みの結果の長さが時間領域と周波数領域で異なるのはなぜですか?
私は DSP の専門家ではありませんが、離散時間領域フィルタを離散時間領域波形に適用するには 2 つの方法があることは理解しています。1 つ目は、時間領域でそれらを畳み込むことです。2 つ目は、両方の FFT を取得し、両方の複素スペクトルを乗算して、結果の IFFT を取得することです。これらの方法の主な違いの 1 つは、2 番目のアプローチが循環畳み込みの影響を受けることです。
例として、フィルターと波形が両方とも N ポイントの長さである場合、最初のアプローチ (つまり、畳み込み) は N+N-1 ポイントの長さの結果を生成します。この応答の前半はフィルターがいっぱいになり、2 番目は半分はフィルターを空にすることです。定常状態の応答を得るには、フィルターのポイント数がフィルター処理される波形よりも少ない必要があります。
この例を 2 番目のアプローチで続け、離散時間領域波形データがすべて実数 (複素数ではない) であると仮定すると、フィルターの FFT と波形の両方が N ポイント長の FFT を生成します。両方のスペクトルを乗算して結果を IFFT すると、時間領域の結果も N ポイントの長さになります。ここでは、フィルターがいっぱいになる応答と空になる応答が時間領域で重なり合っており、定常状態の応答はありません。これが循環畳み込みの効果です。これを回避するには、通常、フィルタ サイズを波形サイズよりも小さくし、両方をゼロ パディングして、2 つのスペクトルの積の IFFT 後に時間内に周波数畳み込みが拡大するためのスペースを確保します。
私の質問は、定評のある専門家/企業の文献で、離散 (実) 時間領域波形 (N ポイント) を持ち、それを FFT し、何らかのフィルター (これも N ポイント) を乗算する研究をよく目にします。その後の処理のために結果を IFFT します。私の素朴な考えでは、この結果には定常状態の応答が含まれていないため、結果のデータの解釈でエラーにつながるフィルターの充填/空化によるアーティファクトが含まれているはずですが、何かが欠けているに違いありません。どのような状況で、これは有効なアプローチになり得るでしょうか?
どんな洞察も大歓迎です
c++ - STL コンプレックスをキャストする問題fftw_complexへ
FFTW のマニュアルによると、その型はSTL のクラスfftw_complex
とビット互換性があります。std::complex<double>
しかし、それは私にはうまくいきません:
これは私にエラーを与えます:
私は何を間違っていますか?
c++ - FFTWライブラリで実数から実数への逆FFTを行う方法
FFTでフィルタリングを行おうとしています。私はr2r_1dプランを使用していますが、逆変換を行う方法がわかりません...
私はすべてのことを正しくやっていますか?FFTWコンプレックスDFTでは、次のようなフラグで変換方向を設定できるため、混乱しています
。p = fftw_plan_dft_1d(N、in、out、FFTW_FORWARD、FFTW_ESTIMATE);
または
p=fftw_plan_dft_1d(N、in、out、FFTW_BACKWARD、FFTW_ESTIMATE);
c++ - FFTW:信号はIFFT後のノイズで構成されています
FFTとIFFTを実行した後、ヘッドホンでノイズしか聞こえません...コードは次のとおりです。
たぶん私は間違ったFFTタイプを選択しましたか?
PSデータは初期信号です
アップデート
さて、コードは
問題は同じままで、データ配列が破損しています。
更新#2
したがって、問題は変換サイズと正規化にあります。実在のFFTW_REDFT10およびFFTW_REDFT01変換を使用する場合、使用する必要のある変換サイズはどれですか?2 * n?または、他の何か?次に、各要素を2 * nで割って、出力信号を正規化する必要がありますか?
返信してくれてありがとう。
更新#3
再度返信していただきありがとうございます。私はあなたの助けを借りて問題を解決しました。動作するコードは次のとおりです。
c++ - FFTW の fftw_plan_dft_r2c_1d() に対する KissFFT の同等の関数は何ですか?
fftw_plan_dft_r2c_1d
およびfftw_plan_dft_c2r_1d
FFTWを使用するプロジェクトと、 fftw_execute
. KissFFT の同等の機能は何ですか?
android - libgdx FFT での周波数ドメインの設定
私はフーリエ変換が初めてなので、fftwでこの動作を再現するために何をする必要があるかを誰かが説明できます:
libgdx の FFT クラスを使用する
FFT オブジェクトを次のように初期化する必要があると想定しています。
しかし、周波数領域に関連する方法が見つかりません。できますがfourier.forward(samples)
、他のパラメーターは必要ありません。ここで何をする必要があるかについて、誰かがヒントをくれますか?
image-processing - FFT 位相相関スコアリングを説明する適切な情報源はどこにありますか
スコアの計算を理解するために、OpenCV の素晴らしいソース コードを調べてきました。お気づきかもしれませんが、ライブラリは信頼スコアを使用して画像内のテンプレートを見つけることができます。cvMatchTemplate 関数は、画像内のテンプレートの確率と位置を示します。
DFT は遅いので、位相相関には FFTW ライブラリを使用することにしました。画像を取得し、2 の累乗のサイズに拡大し、テンプレートに対して同じことを行い、最初に両方の FFT を計算し、2 つの配列を乗算し、逆 FFT を計算し、最終的に結果を正規化しました。
この結果をビットマップで表示すると、テンプレートの場所が明確に示されますが、相関スコアを計算するのは困難です。デバッガーで cvMatchTemplate メソッドを 1 行ずつ実行しようとしましたが、ライブラリは DFT と任意の画像サイズを使用するため、役に立ちませんでした。そのメソッドで使用されるすべてのテーブル (sum、sqsum など) は、対応する任意のサイズに対して作成され、FFT は 2 の累乗を使用します。
その位相相関の結果からスコアを計算する方法についての情報をいただければ幸いです。「これを取り、それを取り、それらを乗算すると、画像に白い点が表示され、そうです」方法を説明する多くの情報源があります。cvMatchTemplate と同じようにスコアが必要です。
その計算のロジックを含むサイトや論文、または本を教えてください。ソースコードは完璧ですが、とにかくそれには望みがありません。
audio - FFT データの正規化 (FFTW)
FFTW を使用して、正規化された .wav ファイル データの FFT を計算しています。ただし、FFT出力を正規化する方法については少し混乱しています。私は、単純に最大の FFT の大きさで除算するという明白な方法を使用してきました。ただし、1/N および N/2 による除算が推奨されているのを見てきました (N = FFT サイズを想定しています)。これらは正規化要因としてどのように機能しますか? これらの要因と実際のデータとの間に直感的な関係があるようには思えません。何が欠けているのでしょうか?
これについて何か助けてくれてありがとう。
c++ - CUFFTのバッチモードをどのように使用しますか?
CUFFTライブラリで提供されているバッチモードの使用方法を理解しようとしています。
基本的に、幅5300ピクセル、高さ3500ピクセルの画像があります。現在、これは、FFTWを使用してこれらの5300要素で35001DFFTを実行していることを意味します。
これは、CUFFTライブラリをバッチモードで実行するのに適した問題ですか?この問題を解決するには、データをどのように設定する必要がありますか?
ありがとう