問題タブ [kissfft]
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 - ウィンドウ処理あり/なしの KISS FFT 出力
現在、kiss fft を使用して信号処理の目的で fft を avr32 マイクロ コントローラーに実装しようとしています。そして、私の出力に奇妙な問題があります。基本的に、ADC サンプル (関数発生器でテスト) を fft (実際の入力、256 n サイズ) に渡し、取得した出力は意味があります。ただし、ハミング ウィンドウを ADC サンプルに適用してから、これらを FFT に渡すと、ピーク振幅の周波数ビンが正しくなくなります (ウィンドウ処理を行わない前の結果とは異なります)。ADC サンプルには DC オフセットがあるため、オフセットを削除しましたが、ウィンドウ化されたサンプルでは機能しません。
以下は、rs485 を介した最初のいくつかの出力値です。最初の列はウィンドウなしの fft 出力で、2 番目の列はウィンドウ付きの出力です。列 1 から、ピークは行 6 (6 x fs (10.5kHz) / 0.5N) にあり、列 2 の行 2 (DC ビンを除く) にピークの大きさがある正しい入力周波数の結果が得られましたが、これは意味がありません。 . どんな提案も役に立ちます。前もって感謝します。
signal-processing - リアルFFT出力
私はキス fft ライブラリを使用して at32ucb シリーズ ucontroller に fft を実装しましたが、現在 fft の出力に苦労しています。私の意図は、ピエゾ スピーカーからの音を分析することです。現在、サウンダの周波数は 420Hz で、fft 出力から取得することに成功しました (オシロスコープでクロス チェック)。ただし、関数発生器の波形をシステムに入力すると、出力周波数は予想の半分にすぎません。周波数ビンの計算式が間違っているのではないかと思います。現在使用している、fft_peak_magnitude_index*サンプリング周波数/fft_size。私の入力は本物で、実際の fft を行っています。(出力サンプル = N/2) また、fft の前に IIR フィルタリングとウィンドウ処理を行います。どんな提案でも大いに役立ちます!
audio - KissFFTに大量のサンプルを与える
サンプリング レート 44100 Hz で持続時間 10 秒のオーディオ信号の 4096 ポイント DFT を見つけたかったのです。したがって、441000 の入力サンプルがあります。しかし、KissFFT は入力サイズとして 4096 までしか取りません。このような大きな信号の FFT を見つけるにはどうすればよいでしょうか?
c++ - C++ベクトルでkissFFTを正しく使用するには?
std::vector
任意の長さの信号を簡単に処理するために、C++ プロジェクトで kissFFT を使用したいと考えています。これを達成するために、kissFFTの作成者からのこのSO回答を編集しました。交換しました
std::complex<float> x[nfft];
と
vector<std::complex<float>> x(nfft, 0.0);
関数呼び出しを置き換えました
kiss_fft(fwd,(kiss_fft_cpx*)x,(kiss_fft_cpx*)fx)
と
kiss_fft(fwd,(kiss_fft_cpx*)&x[0],(kiss_fft_cpx*)&fx[0]);
これはかなりうまくいくようですが、これは正しい方法ですか?kissFFT の "test" フォルダに、凝った C++ テンプレート機能を使用しているように見える "testcpp.cc" を見つけました (残念ながら、私には凝りすぎて、コンパイルできませんでした)。私のソリューションには欠点がありますか?
完全なコード
c - kiss_fft の順方向と逆方向の基数 4 の計算が異なるのはなぜですか?
私は、独自の混合基数デシメーション イン タイム高速フーリエ変換の理解と実装に時間を費やしてきました。私は主にkiss_fftとhttp://www.briangough.com/fftalgorithms.pdfを使用して、何が起こっているのかを理解しています。
私が読んだことから、共役回転因子を使用して fft を逆にすることができます。
しかし、kiss_fft のソース コードを読むと、基数 4 の実装では実際に、順変換または逆変換を行っているかどうかがテストされ、わずかに異なる数学が使用されます。
https://github.com/itdaniher/kissfft/blob/master/kiss_fft.c#L77
使用される fft 計算は、フォワードおよびリバース fft で同じであると考えました (kiss_fft の radix-2、3、および 5 の実装の場合と同様)。
kiss_fft 基数 4 の計算でこれを行う必要があるのはなぜですか?
c - Wave ファイルで KissFFT を使用する
この 11 秒の 44kHz .wav サンプル ファイルをテスト入力としてKissFFT ライブラリを使用しようとしています。
ただし、ウィンドウ サイズ 512 でファイルを処理すると、出力値が 1 つしか得られません。奇妙なことに、44kHz で 11 秒の .wav ファイルは、512 のウィンドウ サイズで出力として 1 つの値を与えるべきではありません。
私が間違っていることを誰かが知っていますか?
これは私のコードです:
これは私が得る出力です:
これは更新されたコード バージョンですが、コンパイル時にエラーが発生します。
この投稿の手順に従いました:
Visual Studio 2010 での "エラー LNK2019: 未解決の外部シンボル" エラー
そして、私はまだこれらのエラーを受け取ります:
c - Tiva C FFT ライブラリ
入力周波数を分析し、周波数の係数を取得し、この情報に基づいていくつかの情報を生成する新しい組み込みシステム プロジェクトを進めています。
Tiva C TM4C マイクロコントローラーを使用します。互換性のある C 言語 FFT ライブラリを見つけるために膨大な検索を行いましたが、失敗しました。
実際、FFTW や KissFFT などの一般的なライブラリをいくつか見つけましたが、それらは非常に複雑で、コード例やユーザー マニュアルなどを見つけることができなかったので、使用できませんでした。
それで、私が探している良いライブラリを見つけるのを手伝ってくれる人はいますか? それとも、FFTW/KissFFT ライブラリの使用方法マニュアルですか?