問題タブ [dft]
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.
signal-processing - DSP - DFT を使用した周波数のフィルタリング
学習のみを目的として、DFT ベースの 8 バンド イコライザーを実装しようとしています。DFT の実装が機能することを証明するために、オーディオ信号を入力して分析し、周波数スペクトルを変更せずに再合成しました。ここまでは順調ですね。
私は相関による、いわゆる「DFTを計算する標準的な方法」を使用しています。このメソッドは、実数部と虚数部の両方を N/2 + 1 サンプルの長さで計算します。私がやっている周波数を減衰させるには:
ここで、「k」は 0 から N/2 の範囲のインデックスですが、再合成後に得られるのは、特に低周波数でわずかに歪んだ信号です。
入力信号のサンプル レートは 44.1 khz で、8 バンドのイコライザーが必要なため、一度に 16 サンプルを DFT に供給して、8 つの周波数ビンで再生します。
誰かが私が間違っていることを教えてもらえますか? インターネットでこの件に関する情報を見つけようとしましたが、何も見つかりませんでした。
前もって感謝します。
filtering - DSP - FFT による周波数ドメインでのフィルタリング
私は FFT の Exocortex 実装で少し遊んでいますが、いくつか問題があります。
iFFT を呼び出す前に周波数ビンの振幅を変更すると、特に信号に低周波数が存在する場合 (ドラムやベースなど)、結果の信号にクリックやポップが含まれます。ただし、すべてのビンを同じ係数で減衰させると、これは起こりません。
4 サンプル FFT の出力バッファの例を示します。
出力は float のペアで構成され、それぞれが 1 つのビンの実部と虚部を表します。したがって、ビン 0 (配列インデックス 0、1) は、DC 周波数の実部と虚部を表します。ご覧のとおり、ビン 1 と 3 は両方とも同じ値 (Im 部分の符号を除く) を持っているため、ビン 3 が最初の負の周波数であり、最後にインデックス (4, 5) が最後の正の値であると推測します周波数ビン。
次に、周波数ビン 1 を減衰させるには、次のようにします。
実際のテストでは、長さ 1024 の FFT を使用しており、常にすべてのサンプルを提供するため、0 のパディングは必要ありません。
明らかに私は何か間違ったことをしていますが、何がわかりません。
非常に基本的なダイナミック イコライザーを実装しようとしているので、FIR 係数のセットを生成する手段として FFT 出力を使用したくありません。
周波数領域でフィルタリングする正しい方法は何ですか? 私は何が欠けていますか?
また、負の周波数も減衰させる必要があるのでしょうか? neg の FFT 実装を見てきました。周波数値は合成前にゼロになります。
前もって感謝します。
fft - 手で微調整するときにアーティファクトを防ぐためにFFTスペクトルを平滑化する方法の経験則はありますか?
FFT振幅スペクトルがあり、それから周期的なノイズ源(正弦波スプリアスなど)を選択的に通過させ、ランダムなバックグラウンドノイズに関連する周波数ビンをゼロにするフィルターを作成したいと思います。このフィルターが時間領域にIFFTで戻ると、周波数領域での急激な遷移によってリンギングアーティファクトが発生することを理解しています...したがって、このようなフィルターで遷移をスムーズにして、このようなことを回避する方法があるかどうか疑問に思っています。リンギング。
たとえば、FFTに1Mの周波数ビンがあり、バックグラウンドノイズフロアから5つのスプリアスが突き出ている場合、5つのスプリアスのそれぞれに関連付けられたピークビンを除くすべてのビンをゼロにします。問題は、時間領域でのアーティファクトを防ぐために、隣接するスパービンをどのように処理するかです。たとえば、スパービンの両側のビンを50%の振幅に設定する必要がありますか?スパービンの両側にある2つのビンを使用する必要がありますか(最も近いものは50%、次に近いものは25%など)?どんな考えでも大歓迎です。ありがとう!
matlab - MATLABで2dインパルスピークを見つける
2次元行列のインパルスピーク(ディラックのデルタ)を見つけるための最良の方法は何ですか。
具体的には、特定の画像の高調波周波数を見つけたいので、画像の絶対値DFTでインパルスピークを見つける必要があります。
findpeaksを使用することを考えましたが、2Dバージョンはありません。また、imdilateおよび/またはimextendedmaxを使用して通常のピークを見つけることに関する以前の投稿を見ましたが、それらは2Dマトリックス内のすべてのピークを見つけますが、私はインパルスピークにのみ興味があります。DSPの人々はこれについて共通のレシピを持っていると確信しています...
助けてください、
ありがとう
c++ - DFTアルゴリズムと畳み込み。なにが問題ですか?
誰が言うことができます、何が悪いのですか?
たぶん私はこのアルゴリズムの実装の詳細を理解していません...しかし私はそれを見つけることができません)))
また、畳み込みを計算する必要があります。
しかし、テスト例が見つかりません。
アップデート
}
java - 誰かがこのスタック/リストの問題を手伝ってもらえますか?
私はJavaに関する本を読んでいて、有向グラフ、ノード間の距離などを表現する必要があります。
これが私が持っているものです(以前の出版物から)
ただし、次のエラーが発生します。
これに関連しています(最初のエラーの最初の行、2番目のエラーの2番目の行):
何か案は?どうもありがとう!
java - 誰かがこのhasNextLine()エラーを手伝ってもらえますか?
このクラスのコンパイルに問題があります。私はJavaに関する本を読んでいますが、これは演習の1つであり、ほとんどのコードが提供されています。つまり、これは基本的に本が提供するストッククラスです。
今、私が抱えている問題は、コンパイル時にこのエラーが発生することです。
これに関連して:
ここで、hasNextLine()は、クラスStdInにインポートされるScannerライブラリの一部であると思ったので、欠落してはいけません。
java.util.Scannerをインポートします。
役立つ場合は、クラスGraph(エラーが発生する場所)の完全なコードを次に示します。
どうもありがとう!
そして、これがクラスStdInです。これも役に立ちます!
そして、必要に応じて、ここにクラスInがあります:(これは少し長い申し訳ありません)
c++ - 高速フーリエ変換
それぞれが小さな積分係数を持つ2つの多項式を乗算する必要があります。それらを畳み込むことができるC/C++の高速FFTルーチンが必要です。私はいくつかのライブラリを見てきましたが、それらは複数のファイルにまたがって大きすぎるようです。重要なのは、長すぎず、非常に簡単に使用して1つの.c/.cpp
ファイルにコンパイルできるコードが必要なことです。
- FFTは、少なくとも小さい整数ではないにしても、実際の入力に対して最適化する必要があります。
- 可能な場合は、Radix4の実装も問題ありません。
- プログラムのコンパイルは私が制御できない外部環境で行わなければならないので、それをコンパイルするのに特別なコンパイルフラグは必要ありません。
私のニーズに非常によく一致するものはここにあります。しかし、私は2倍の速さで何かが必要です。
android - Jtransform の DoubleFFT_1D() for android を使用した DFT の計算
Android SDKのネイティブ関数によって受信されたオーディオバイトストリームのFFTを計算するための信頼できる方法を見つけるために、どこでも検索してきました(Eclipse IDEを介して)。libgdx fft と Jtransform に出会いました。Jtransform ここに ある JTransform 。それらをすべてダウンロードし、プロジェクトのルート ディレクトリに作成された libs フォルダーに .jar ファイルを追加しました。次に、プロジェクト プロパティ > Java ビルド パス > ライブラリを使用して、プロジェクトを新しい .jar ファイルにリンクしました。
Jtransform を使用しようとすると、私の src Java ファイルは次のようになります。
この例では、Jtransform パッケージのみを使用していますが、lingdx パッケージでも同じコンパイル エラーが発生しています。コンパイラは、DoubleFFT_1D と complexForward が未定義であると言います。そのため、ライブラリを正しくリンクしていないなど、欠けているものがあります。よくわかりません。どんな助けでも大歓迎です。onCreate などの前に、DoubleFFT_1D と complexForward のインスタンスを宣言するつもりですか?
私はこれが初歩的な質問であることを知っていますが、私はオブジェクト指向言語に不慣れで、外出先で Java を学習しています。ありがとう :)
dft - DFT から周波数を選択する方法
一連の数字 (波のようなデータ) を想定します。次に、DFT (または FFT) 変換を実行します。私が達成したい次のステップは、データに含まれる実際の周波数に対応する周波数を見つけることです。ご存知のように、DFT 出力には実数部と虚数部 a[i] と b[i] があります。スペクトル (sqrt(a[i]^2+b[i]^2) を見ると、その最大値はデータに含まれる周波数に対応します。問題は、DFT からすべての周波数を見つける方法です。誤って選択される可能性のある他の多くのピークがある場合、問題が発生します。