タグ付けされた質問 「fft」

高速フーリエ変換は、離散フーリエ変換(DFT)とその逆を計算する効率的なアルゴリズムです。

4
FFTからの周波数の抽出
信号に対して512ポイントのFFTを実行しました。別の512番号のセットを入手しました。これらの数値は、周波数の異なるさまざまな正弦波と余弦波の振幅を表していることを理解しています。 私の理解が正しければ、512個の数値(振幅)の知識からサイン波とコサイン波の周波数を知る方法を誰かに教えてもらえますか?

5
正弦波のFFTが期待どおりに到達しない、つまり単一ポイント
シアンのプロットは50 Hzのスペクトルであり、マゼンタのプロットは50.1 Hzの正弦波(振幅0.7)です。両方とも1024サンプル/秒でサンプリングされます。このスペクトルを取得するために、1024ポイントのFFTを実行しました。 なぜ50Hzのスペクトルだけが単一の値なのですか?50.1 Hzのサインが50.1 Hz以外の他の周波数で構成されているのはなぜですか。これらの新しい周波数はどこから来たのですか? 50.1 Hzの信号に対して非線形処理をしませんでした!また、実際に生成された正弦波の振幅が0.7である場合、50.1 Hzは最大振幅が小さいように見えます。つまり、0.7ではありません。 どうしてこれなの? MATALBコマンドfft()で取得;
14 fft 

4
人間に近い精度でリアルタイムにオーディオ信号の周波数成分を抽出する最も効率的な方法
私はFFTのような方法で任意のオーディオサンプル(通常は音楽)の周波数成分を抽出する方法を(可能であれば)解決しようとしていますが、FFTアルゴリズムの研究では、いくつかの問題があることを学んでいますこの目的のための厳しい制限。 FFTが提示する3つの問題があります。 FFTビン解像度はウィンドウサイズと同等であるため、かなり妥当な精度(1 Hzなど)を達成するには、不当に長いウィンドウ(1秒など)が必要です。これは、トランジェントまたは新しく導入された周波数をすばやく検出できないことを意味します。また、より高速なCPUとより高いサンプルレートでは問題を解決できないことを意味します。制限は本質的に時間に関係しています。 人間は周波数を対数的に知覚しますが、FFTビンは直線的に間隔が空けられます。例えば私たちの公聴会のローエンドでは20Hzの違いがある巨大なハイエンドでは20Hzの差が知覚できないのに対し、。したがって、低周波数で必要な精度を得るには、高周波数で必要なものよりもはるかに多くを計算する必要があります。 これらの問題の一部は、FFTビン間を補間することで解決できます。これは、多くの音楽オーディオで機能する場合があります。これは、周波数が非常に離れていることが多く、1つの周波数しかビンのペアに漏れないためです。しかし、特にパーカッシブな楽器のような不協和音の場合、これは必ずしも当てはまりません。したがって、補間は実際には単なる当て推量です。 DFT / FFTアルゴリズムの理解から、出力(ビンの振幅)は事実上、各ビンの周波数でのサイン/コサインの相関です。ビンの周波数が非線形に間隔を空けるようにアルゴリズムを再設計できると(つまり、異なるサイン/コサインのセットを相関させると)、すべての周波数で音響心理学的に等しい解像度を達成できると思います。これは可能ですか、それとも関係する数学の私の不完全な理解に基づく空想ですか? 興味のあるすべての周波数でサイン/コサインを相関させることで、ブルートフォースで問題を解決することもできたと思います。これは可能ですか?どのような効率ですか?問題は解決しますか? 信号のより正確でリアルタイムの周波数分解を実現する別の方法はありますか?CPUの効率は懸念事項ですが、大きな懸念事項ではありません-理論的にはまったく実行できるかどうかに部分的に興味があります。ただし、最新のデスクトップマシンでリアルタイムで実行可能なものが理想的です。

2
FFT実装をテストするためにどのデータを使用する必要があり、どのような精度を期待する必要がありますか?
私はFFTアルゴリズムを実装するための取り組みに関与しており、入力テストデータを使用するために推奨されるアドバイスが何であるか、そしてその理由を知りたいと思っています。-そして、どのような精度が期待されますか。 テストの入力については、古いUsenetの投稿に回答として投稿する少しのガイダンスが見つかりましたが、それは正当な理由のない1人の提案にすぎません。 正確性について、ウィキペディアはエラーがO(e log N)であるべきだと言っていますが、絶対的な用語で合理的な期待は何ですか? 編集して追加:実際のテストは、入力データの配列と比較対象の事前計算された「参照」出力データを格納した形式になっているため、必ずしも閉じた形式のソリューションを必要としません。
14 fft 

3
ゼロ詰めFFTの低係数のみを効率的に計算する方法
シーケンスをゼロに4Nにパディングし、FFTを実行し、生成された4NからNポイントの最低周波数のみを使用するアルゴリズムを持っています。 これは多くの無駄な作業のように思えますが、どのようにこれをより速く行うことができますか?
14 fft  dft 

3
分析でDTFTとDFT(およびその逆)を使用する場合
私の多くの読書では、ある著者が(デジタル信号の)周波数(変換)ドメインでの作業について話すときは常に、DFTまたはDTFT(そしてもちろん対応する逆)を使用します。異なる著者は、どちらか一方を使用する傾向があります。 これに関する特定のパターンを実際に確認することはできませんでした。その中で、なぜアルゴリズムを説明する際にDFTよりもDTFTを選ぶのですか?一方が他方に対してあなたを助けるのはどこですか?

2
ゼロパディングの奇数長FFTの場合の実数値のリンギング
だから私は、信号と逆変換の周波数応答をゼロで埋める周波数領域補間器を書き込もうとしています。対処しなければならない2つのケースがあります。 偶数長の応答ビンを分割する必要があるのは、あいまいだからです。そこで、スペクトルの負の部分をコピーし、その間にゼロを追加します。Fs/2Fs/2F_s/2n*(interp-1)-1 奇数長の応答ビンがないため、正/負の周波数を分割し、それらの間にゼロを挿入するだけです。Fs/2Fs/2F_s/2n*(interp-1) ゼロパディングを行うコードはこちらにあります // Copy negative frequency components to end of buffer and zero out middle // inp - input buffer of complex floats // n - transform size // interp - interpolation amount void zero_pad_freq(cfloat_t *inp, size_t n, size_t interp) { if ((n % 2) == 0) { …
13 fft  interpolation  c 

2
周波数領域での相互相関の直感的な説明
相互相関定理によれば、2つの信号間の相互相関は、1つの信号のフーリエ変換と別の信号のフーリエ変換の複素共役の積に等しくなります。これを行った後、積信号のifftを取得すると、2つの信号間のシフトを示すピークが得られます。 これがどのように機能するのか理解できませんか?2つの信号間のシフトを示すピークが得られるのはなぜですか。http://mathworld.wolfram.com/Cross-CorrelationTheorem.htmlから数学を取得しましたが、 これが直感的に何を意味するのか理解できません。誰かが説明を提供したり、適切な文書を教えてくれたりできますか? ありがとう!

3
離散フーリエ変換:DC項は本当に何ですか?
私は現在、Matlabの離散フーリエ変換(DFT)をいじって、画像から特徴を抽出しています。私が使用している概念を完全に理解したい。私はこれなどいくつかの説明を読みましたが、これまでのところ、「DC用語」の意味を実際に説明したものはありません。私が知っているのは、DFTの k '項が次のように記述できることです。 どこ で回転因子は。 つまり、最初の項(DC項)は、周波数のない振幅です。 なぜそれがDC用語と呼ばれているのか誰かが説明できますか?「直流」との関係は?そして、DC用語の関連性は何ですか?それはいつ、何のために役立ちますか?
13 image  matlab  fft  dft 

4
ブックの推奨事項-CでのDSPコードの作成
私は、すべての主要なDSPメソッドを実行するために、実際にCでコードを記述する方法を示すだけの良い本を探しています。 FFT。 ローパスおよびハイパスフィルター。 自己相関。 ノイズ処理。 そして、理論からCの実際のコードまで、DSPのすべての基礎。 たとえば、1000個のサンプルがありますが、そのFFTを計算し、ノイズを除去してから時間軸に戻したいと思います。 これらすべてをカバーする良いものはありますか?

3
STFTおよびDWT(ウェーブレット)
STFTは、いくつかの周波数領域の変更(例:ノイズ除去)を行うために、サウンドデータ(たとえば、.wavサウンドファイル)で正常に使用できます。(すなわち、10秒サンプリングレートで)、 、、STFTは近似的生成(:時間枠を、第2座標:周波数ビンを第1の座標)配列。この配列に対して変更を行うことができ、オーバーラップ加算(*)を使用して再構成を行うことができます。N=441000fs=44100windowsize=4096overlap=4430x4096 ウェーブレットで同様のことをどのように行うことができますか?(DWT)、つまりa x b、a時間フレームとb周波数ビンを備えた同様の形状の配列を取得し、この配列に何らかの変更を加え、最後に信号を復元しますか?どうやって ?overlay-addと同等のウェーブレットとは何ですか?ここに含まれるPython関数は何ですか(オーディオの変更の簡単な例は見つかりませんでしたpyWavelets...)? (*):使用できるSTFTフレームワークは次のとおりです。 signal = stft.Stft(x, 4096, 4) # x is the input modified_signal = np.zeros(signal.shape, dtype=np.complex) for i in xrange(signal.shape[0]): # Process each STFT frame modified_signal[i, :] = signal[i, :] * ..... # here do something in order to # modify the signal in frequency …
12 fft  wavelet  dft  python  stft 

2
単純なFFT振幅スペクトルの代わりにPSDを計算する必要があるのはいつですか?
44.1 kHzでサンプリングされた32秒の音声信号があります。ここで、音声の周波数を示したいと思います。しかし、私はそれを行うための最良の方法が何であるかわからない。フーリエ変換の絶対値を計算することもあれば、パワースペクトル密度を計算することもあります。正しく理解できれば、後者が機能するため、信号を部分に分割し、FFTを部分ごとに実行し、何らかの方法でこれらを合計します。ウィンドウ関数は何らかの形で関与しています。これを少し明確にできますか?DSPは初めてです。

7
周波数が2つのビンの中心の間にある場合、信号のピーク値を取得する
以下を想定してください: 信号の基本周波数は、FFTといくつかの周波数推定法を使用して推定されており、2つのビン中心の間にあります サンプリング周波数は固定です 計算努力は問題ではありません 周波数がわかっている場合、基本的な信号の対応するピーク値を推定する最も正確な方法は何ですか? 1つの方法は、ビンの中心が推定周波数に近くなるように、FFT分解能を高めるために時間信号をゼロで埋めることです。このシナリオで、私が確信していない点の1つは、必要なだけゼロパッドできるか、そうすることでいくつかの欠点があるかどうかです。もう1つは、ピーク値を取得するものとしてゼロパディング後に選択するビン中心です(ゼロパディングの後でも対象の周波数に正確にヒットしない可能性があるため)。 しかし、周囲の2つのビンの中心のピーク値を使用して目的の周波数でのピーク値を推定する推定器など、より良い結果を提供できる別の方法があるかどうかも疑問に思っています。

3
FFT時間領域平均と周波数ビン平均
生理学的データの複数の試行があります。特定の周波数のパワー(振幅)を分析するために、周波数ベースの分析を行っています。等しい長さの複数の試行を平均化してから、平均化された信号の単一のFFTを取得するのと、各試行のFFTを計算してから、同じ周波数ビンを平均化するのですか?実際には、これが事実ではないことを発見しています。 具体的には、信号には自然に強力な1 / f成分が含まれており、個々の試行のFFTを計算し、各周波数ビンの振幅(実数部)を平均すると、これが強調されます。2つは同等ですか?物事を行う正しい方法はありますか?または、時間領域の平均化と周波数ビンの平均化のどちらを選択する必要があるのでしょうか?
12 fft 

4
ウィンドウサイズを大きくせずにFFTの周波数分解能を上げることはできますか?
マルチピッチ分析にSTFTを使用したいと思います。信号に存在する部分音を検出することはほんの始まりに過ぎないことを理解しています。まだ問題があります。 「CD」周波数でサンプリングされた信号があるとしましょう44100Hz。1024サンプルのウィンドウでは、周波数ビンの解像度がになり22500Hz/512=43Hzます。これが唯一のように見分けるの高いピアノのノートには十分です C5 = 523.251HzとC#5 = 554.365。 私1024は以前はかなり大きな窓だと思っていました。しかし、そうではないかもしれませんし、通常、パーシャルを検出するために大きなウィンドウが使用されますか? ウィンドウサイズを大きくする以外の方法で周波数分解能を上げると、時間分解能が悪くなりますか?私は2つの方法を考えました: 方法1: バンドパスフィルターを使用して、信号を周波数帯域に分割します(0-11.25Hzおよびなど11.25-22.5Hz)。 元の高周波数が低周波数になるように、より高い帯域をダウンサンプリングします(2番目の帯域でも同様です11.25-22.5Hz -> 0Hz-22.5Hz)-これが可能かどうかはわかりません。 結果のビンセットを調整されたラベルで連結します。 方法2: 制限を増やしながら一連のローパスフィルターを使用します。 増加する周波数範囲でFFTを実行します。 各周波数に対して、可能な限り最適な解像度(この周波数が含まれていた最初のFFTからのビン)を使用します。 これにより、低周波数の解像度が向上しますが、音が高いほど周波数の差が大きくなるため、これは問題ないと思います。 この問題についての発言に感謝します。 ここも読んでください: ウィンドウサイズ、サンプルレートはFFTピッチ推定にどのように影響しますか? ピークピッキングの結果を改善する方法について。使ってみようと思います。
12 filters  fft  pitch  stft 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.