問題タブ [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)
FFTW (FFT ライブラリ) のスレッド化されたバージョンを使用して、デュアル CPU マシンで一部のコードを高速化しようとしています。これは、スレッドが 1 つだけの時間の出力です。
ここに2つのスレッドがあります:
ユーザー時間と CPU 負荷のパーセンテージは、かなり効果的にスレッド化されていることを示しているようですが、ウォールクロック時間 (これは私が本当に気にかけていることです) は、スレッドを処理するのに約 28 秒余分にかかっていることを示しています (私はそう思います)。 . それは状況を説明する正確な方法ですか?もしそうなら、それはかなり正常ですか、それとも何かが間違って設定されている可能性がありますか? 光をありがとう。
c++ - 画像のFFT
私はfftwについての課題を持っていて、画像のfftを作成するための小さなプログラムを書こうとしていました。CImgを使用して画像の読み取りと書き込みを行っています。しかし、私が得るのは、単一の白い点がある暗い画像だけです:(
私はこれを間違った方法で行っている可能性が高いので、誰かがこれをどのように行うべきかを説明していただければ幸いです。コードは必要ありません。これを行う正しい方法を知る必要があります。
これが私のコードです:
visual-c++ - Visual C ++ 2005でデバッグモードを開始するには、デバッグバージョンのリンクライブラリを提供する必要がありますか?
Visual C ++ 2005のデバッグモードに問題があります。私の科学プログラムでは、FFT変換計算ライブラリであるFFTW3ライブラリを使用しています。残念ながら、FFTW3ライブラリの公式のVC++プリコンパイル済みバージョンはありません。さらに悲しいことに、VC++2005を使用してソースコードからFFTW3をコンパイルするのは非常に困難です。FFTW3の公式Webサイトでは、MinGW GCCでビルドされ、リリースモードになっているコンパイル済みのDLLパッケージが提供されています。
デバッグおよびリリースモードのVisualC++ 2005で、プログラムをこれらのMinGWバージョンのDLLにリンクできます。しかし、私のプログラムは実行を開始するとすぐに終了するので、プログラムを段階的にデバッグしたいと思います。Visual C ++で[デバッグ]ボタンを押すと、問題が発生しました。
'minifun.exe': Loaded 'D:\cygwin\home\minifan\debug\libfftw3f-3.dll', Binary was not built with debug information.
私の質問は、デバッグモードを開始できるように、デバッグバージョンFFTW3をVC++に提供する必要があるかどうかです。それを回避する方法はありますか?
問題は、デバッグバージョンとVC++でコンパイルされたFFTW3ライブラリを簡単に取得できないことです。
この長い説明でごめんなさい。皆さんからのご意見に感謝します。どうもありがとう!
ジョン・チェイン
multithreading - 共有メモリ コンピューター上のマルチスレッド FFTW 3.1.2
Fortran でFFTW 3.1.2を使用して、実数から複素数、および複素数から実数の FFT を実行します。1つのスレッドで完全に機能します。
残念ながら、32 CPU 共有メモリ コンピュータでマルチスレッド FFTW を使用すると、いくつかの問題が発生します。9 つの実数から複素数への FFT 用と 9 つの複素数から実数への FFT (各実数フィールドのサイズ: 512*512) の 2 つの計画があります。私は Fortran を使用ifort
し、次のライブラリにリンクするコードを (を使用して)コンパイルします。
プログラムは正しくコンパイルされているようで、関数sfftw_init_threads
はゼロ以外の整数値 (通常は 65527) を返します。
ただし、プログラムは完全に実行されますが、スレッドが 1 つよりも 2 つ以上あると遅くなります。top
コマンドは、100% を超える (および n_threads*100 よりもはるかに大きい) 奇妙な CPU 負荷を示します。コマンドは、1 つのプロセッサ (番号 1 としましょう) がプログラムで 100% の負荷で動作しているhtop
ことを示していますが、番号 1 を含む他のすべてのプロセッサは、このまったく同じプログラムで、負荷 0%、メモリ 0% で動作しています。そして0回。
誰かがここで何が起こっているのか知っているなら...どうもありがとう!
c - WindowsXPのEclipseCDTでFFTWを機能させる方法
私は、日食と協力するために、西部で最速のフーリエ変換を取得しようとしています。私はそれをウェブサイトからダウンロードしました(これはfftw-3.2.2という大きなフォルダーで、api、dft、cell、doc、kernel、fdftなどの名前が付いた他のフォルダーでいっぱいです。それぞれに.hファイルと.cファイルがあります)。
プロジェクト>プロパティ>MinGWCリンカー>ライブラリ>ライブラリ検索パス(-L)に移動し、フォルダーfftw-3.2.2を追加してみました。コードの先頭に#includeまたは#includeを配置しようとしています。
'fftw_planp;'のような行を入れることができます それで問題ありませんが、'fftw_execute(p);'のようなフーリエ変換関数の1つを使おうとするといつでも 、それは私にメッセージ「fftw_ececuteへの未定義の参照」を与えます。プロジェクトはビルドと実行を拒否し、私は立ち往生しています。
私はここや他の場所を見回しましたが、すべてがlibX.aファイルについて教えてくれますが、fftw-3.2.2には拡張子が.aのファイルが含まれていません。どうすればeclipseをfftwで動作させることができますか?mingwコンパイラを使用してWindowsXPマシンでEclipseganymede3.4.1を実行しています。
audio - スマートフォンでの音符のピッチ認識、pt。2
前の質問のフォローアップとして、スマートフォンアプリケーションで特定の音符を検出したい場合、着信音がその音符であるかどうかを知るだけで、ある程度のあいまいさがあり、 xセントオフキーであることに注意してください。
それを考えると、速度と精度の点で他の方法よりも優れた方法はありますか?つまり、探しているメモがたとえば#C3であることを知ることで、そのメモが存在するかどうかを判断するのに最適な方法はありますか?すべての波形を分離してから基本周波数の結果を確認するよりも、1つの音符を検索する方が簡単だと思います。
私の最初の質問への回答で、ある回答者は、メモが特定の範囲内にあることがわかっている場合、自己相関がうまく機能する可能性があると提案しました。特定の音符(+/- xセント)の有無を確認するだけでよい場合、自己相関がさらにうまく機能するのではないかと思います。
それらの方法は次のとおりです。
- キスFFT
- FFTW
- 離散ウェーブレット変換
- 自己相関
- ゼロクロッシング分析
- オクターブ間隔のフィルター
- DWT
どんな考えでもいただければ幸いです。
signal-processing - FFT結果の大きさは波の周波数に依存する?
FFT から得た結果に困惑しており、助けていただければ幸いです。
私は FFTW 3.2.2 を使用していますが、他の FFT 実装 (Java) でも同様の結果が得られました。正弦波の FFT を実行すると、結果のスケーリングは波の周波数 (Hz) に依存します。具体的には、整数に近いかどうかに依存します。結果の値は、周波数が整数に近い場合は非常に小さくスケーリングされ、周波数が整数の間にある場合は桁違いに大きくなります。このグラフは、さまざまな周波数について、波の周波数に対応する FFT 結果のスパイクの大きさを示しています。これは正しいですか??
FFT の逆 FFT が、元の正弦波にサンプル数を掛けたものに等しいことを確認しました。FFT の形状も正しいようです。
個々の正弦波を分析している場合は、その高さに関係なく FFT でスパイクを探すだけでよいので、それほど悪くはありません。問題は、正弦波の合計を分析したいということです。たとえば、440 Hz と 523.25 Hz の正弦波の合計を分析している場合、523.25 Hz の正弦波のスパイクのみが表示されます。もう一方のスパイクは非常に小さいため、ノイズのように見えます。Matlabでは機能するため、これを機能させる方法が必要です-両方の周波数で同様のサイズのスパイクが発生します。以下のコードを変更して、異なる周波数のスケーリングを均等化するにはどうすればよいですか?
gcc - .laファイルから.soファイルを取得するにはどうすればよいですか?
FFTW 2.xは.laファイルをビルドします(fftw / .libsディレクトリの下)。
リンクするには.soファイルが必要だと思います。(私はgcc初心者なので、わかりません)。
c++ - Visual Studioでfftw?
私は自分のプロジェクトを fftw にリンクしようとしていますが、これまでのところ、コンパイルすることはできましたが、リンクすることはできませんでした。サイトが言ったように、私はすべての .lib ファイルを生成し (倍精度しか使用していませんが)、それらをC:\Program Files\Microsoft Visual Studio 9.0\VC\lib
に、.h ファイルをC:\Program Files\Microsoft Visual Studio 9.0\VC\include
に、.dll を にコピーしましたC:\windows\system32
。
チュートリアル プログラムをコピーしましたが、正確なエラーは次のとおりです。
では、プロジェクトのセットアップで何が問題になる可能性がありますか? ありがとう!
c - フーリエ変換を使用して WAV ファイルから半正確な周波数を抽出する方法
私はWAVファイルを持っているとしましょう。このファイルには、正確な 1 秒間隔の一連のサイン トーンがあります。FFTW ライブラリを使用して、これらのトーンを順番に抽出したいと考えています。これは特に難しいですか?これについてどうすればいいですか?
また、この種の音色を WAV ファイルに書き込むにはどうすればよいでしょうか? 出力には単純なオーディオ ライブラリのみが必要だと思います。
私が選んだ言語は C です