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

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

4
FFTを並列計算するためのアルゴリズム
テラバイトサイズの信号ファイルでFFTの計算を並列化しようとしています。現在、オープンソースライブラリを使用したこのようなFFTは、私が持っている最速のGPUでCUDAを介して実行する場合でも何時間もかかります。このプロセスに適応しようとしているフレームワークはHadoopです。非常に基本的な用語では、Hadoopは次の方法で任意の数のサーバーノードに問題を分散します。 •入力ファイルを(キー、値)のペアに分割します。 •これらのペアは「マップ」アルゴリズムに送られ、マップ内に配置したものに基づいて、(キー、値)ペアを他の(キー、値)ペアに変換します。 •次に、フレームワークは、マップからすべての(キー、値)出力を収集し、キーでソートし、同じキーを持つ値を単一のペアに集約するため、(key、list(value1、value2、 ..))ペア •これらのペアは、「リデュース」アルゴリズムに送られ、最終結果(ファイルに書き込まれる)としてさらに(キー、値)ペアが出力されます。 サーバーログの処理など、このモデルには多くのアプリケーションがありますが、特にDSPにあまり詳しくないため、FFTを「マップ」タスクと「リデュース」タスクに分割するフレームワークを適用するのに苦労しています。 これはDSPのQ&Aであるため、私はプログラミングジャンボジャンボを気にしません。ただし、FFTを並列計算するためにどのアルゴリズムが存在するかについては混乱しています。MapとReduceタスクは(技術的に)相互に通信できないため、FFTを独立した問題に分割し、最後に結果を何らかの方法で再結合する必要があります。 Cooley-Tukey Radix 2 DITの簡単な実装をプログラミングしましたが、これは小さな例で動作しますが、10億バイトの奇数/偶数インデックスDFTを再帰的に計算するのに使用できません。MapReduce FFTアルゴリズム(Tsz-Wo SzeがSSA乗算に関する論文の一部として書いたもので、2つ以上のハイパーリンクをリンクすることはできません)と「4ステップFFT」を含む多くの論文を読むのに数週間費やしました。 (こことここ)、これは互いに似ており、私が達成しようとしていることと似ています。しかし、私は数学が絶望的に​​悪いので、{1,2、3、4、5、6、7、8}(すべての虚数成分が0)のような単純なセットにこれらの方法を手で適用すると、私は非常に間違った結果になりました。誰もが効率的な並列FFTアルゴリズムを簡単な英語(私がリンクしたものまたは他のリンク)で説明できるので、それを試してプログラムすることができますか? 編集:ジムクレイと私の説明で混乱する可能性のある他の人は、私はテラバイトファイルの単一のFFTをしようとしています。しかし、プロセスを高速化するために、複数のサーバーで同時に実行できるようにしたいと考えています。
12 fft 

4
FFTを使用した自己相関の効率的な計算
私が利用できる唯一の加速プリミティブが(I)FFTであるプラットフォームで自己相関を計算しようとしています。でも問題があります。 MATLABでプロトタイプを作成しました。しかし、私は少し混乱しています。私はそれが次のように単純に機能すると仮定しました(これはメモリからのものですので、少し間違っている場合はおologiesびします)。 autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) ) ただし、xcorr関数を使用した場合とは異なる結果が得られます。今、私は完全に自己相関の左側を取得しないことを期待しています(それは右側の反映であり、したがってとにかく必要ないため)。ただし、問題は、右側が中間点の周りに反映されているように見えることです。これは事実上、私が期待しているデータの約半分の量を取得することを意味しています。 だから私は非常に単純な間違ったことをしなければならないと確信していますが、私は何を理解できないのです。

3
周波数分解能が良い場合、ゼロパディング後にDFTで周波数リークが発生するのはなぜですか?
この例を考えてみましょう: Fs=1000; Ns=500; t=0:1/Fs:(Ns-1)*1/Fs; f1=10; f2=400; x=5+5*sin(2*pi*f1*t)+2*sin(2*pi*f2*t); X=fft(x); このシナリオでは、周波数分解能は2で、すべての周波数成分が正しくキャプチャされています。ただし、これを行うと: X=fft(x,1000); 周波数分解能は1ですが、スペクトル漏れがあります。ここでも同様の効果が見られます。両方のウィンドウのフーリエ変換(1つは長さ500、もう1つは長さ1000)は、信号で示される周波数でゼロを持っているように思えます。そのため、リークが発生する理由がわかりません。

2
「ゼロパディングでは周波数分解能が実際に向上しない」と言うのはなぜですか
f = 236.4 Hzこれは周波数の正弦波(長さは10ミリ秒です。N=441サンプリングレートにポイントがありますfs=44100Hz)とそのDFTで、ゼロパディングはありません。 DFTを確認することで得られる唯一の結論は、「周波数は約200Hzである」です。 これが信号とそのDFTであり、大きなゼロパディングがあります。 これで、より正確な結論を得ることができます。「スペクトルの最大値を注意深く見れば、周波数236Hzを推定できます」(ズームして最大値が236に近いことがわかりました)。 私の質問は、「ゼロパディングでは解像度が向上しない」と言うのはなぜですか?(私はこの文を頻繁に見ましたが、「補間を追加するだけです」と彼らは言っています) =>私の例では、ゼロパディングによって、より正確な分解能で適切な周波数を見つけることができました。

2
ノイズ内の信号の存在を判断するためにどの統計が使用されますか?
これは私が信じている検出器の問題です: 単純な問題のように思われることに困惑しています。基本的に、私は興味のあるバンドを持っています。この対象の帯域内に信号エネルギーが存在する場合、信号に対して操作Xを実行します。 私の問題は、信号が存在するかどうかを「決定する」方法について正確にわからないことです。その中で、FFTを実行した後、ピークを探すことができます。 しかし、今何ですか? 通常使用される統計は、このピークをスペクトルの周囲の平均と比較していますか?それとも他の統計ですか? 信号が存在するかどうかを簡単に判断し、そこから移動するには、どの統計的尺度を使用しますか? この値を設定するにはどうすればよいですか?単純なしきい値処理? フィードバックに基づいて編集: この単純なケースでは、ホワイトガウスノイズのトーンを想定しています。私がハンドルを握ろうとしているのは: ROC 曲線はどの程度正確に生成されますか。1が行くとしなければならないラベル最初にすべてのデータを、そしてその後、しきい値の多数のための真陽性と偽陽性率を得ますか? SNRの低下はROC曲線にどのように影響しますか?斜めに動かしますか? 適応しきい値なしで生成された特定のROC曲線に対して適応しきい値処理は何をしているのですか? 3a。私が見ることができるいくつかの一般的な適応しきい値技術は何ですか?

6
二重フーリエ変換を実行するための実用的なアプリケーションはありますか?…または時間領域入力の逆フーリエ変換?
数学では、関数の二重導関数または二重積分を取ることができます。二重微分モデルを実行すると、オブジェクトの加速度を見つけるなど、実際の状況が現実的な場合が多くあります。 フーリエ変換は、実数または複素数の信号を入力として受け取り、複素数信号を出力として生成するため、その出力を取得してフーリエ変換を2回適用することを妨げるものは何もありません...この?いくつかの複雑な実世界の状況をモデル化するのに役立ちますか? 同じロジックを使用して、元の時間領域入力信号の逆フーリエ変換を妨げるものは何もありません...これはこれまでに役立つでしょうか?なぜですか、なぜそうではありませんか?

3
ADC性能シミュレーション:FFTからSINADを計算する方法?
この問題に取り組んでいる間、私は私の最初の定義が S私NA D = 10 ログ10(pfΣ私(p私) − p0− pf) dBSINAD=10log10⁡(pf∑i(pi)−p0−pf)dBSINAD = 10 \log_{10} \left( \frac{p_f} {\sum_i{(p_i)} - p_0 - p_f} \right)dB 正しい。この方程式では、は周波数でのFFTビンの電力、は信号周波数を含む周波数ビンの電力、はDCコンポーネントです。DC成分と信号周波数削除する前に、の合計はすべての周波数成分を累積します。 x p f f p 0 i p 0 p fpバツpxp_xバツxxpfpfp_ffffp0p0p_0私iip0p0p_0pfpfp_f より具体的には、Wikipediaの説明から解釈した部分がんΣ私(p私)∑i(pi)\sum_i(p_i) (a)元の変調オーディオ信号の電力、つまり変調された無線周波数キャリアからの電力、(b)残余のオーディオ電力、つまり元の変調オーディオ信号が削除された後に残っているノイズと歪みの電力の比率。この定義により、SINADレベルが1未満になる可能性があります。 方程式と比較すると、「元の変調オーディオ信号」は周波数にあり、FFTの項で説明されています。用語Iは、DC成分を除去すると言い、次の論文から得ました:p f p 0fffpfpfp_fp0p0p_0 で、 "理解SINAD、ENOB、SNR、THD、THD + N、およびSFDR"ドキュメント、それは言います 信号対雑音および歪み(SINAD、またはS /(N + D))は、rms信号の振幅と、高調波を含む他のすべてのスペクトル成分の二乗和(rss)の平均値との比です。 DCを除く これらの定義を見ると、SINADの別の可能な定義を考えることができます。 SINAD=10log10⎛⎝⎜pf∑i(p2i)−−−−−−√−p0−pf⎞⎠⎟dBSINAD=10log10⁡(pf∑i(pi2)−p0−pf)dBSINAD …
11 fft  noise 

3
周波数領域でエッジ検出を実行できますか?
フーリエ領域でエッジ検出アルゴリズムを実装するために、画像のFFTの高周波成分が一般にエッジに対応するという事実を利用できますか?ハイパスフィルターに画像のFFTを掛けてみました。結果の画像はエッジに対応していましたが、畳み込み行列を使用して確立されたエッジ検出ではありませんでした。では、フーリエドメインでエッジ検出を行う方法はありますか、それともまったく不可能ですか?

3
複雑な応答(および正当化)を平均化する方法?
入力信号と出力信号のFFTを比較して、システムの応答を計算するソフトウェアを開発しています。入力信号と出力信号はウィンドウに分割され、ウィンドウごとに、信号は中央値減算され、ハン関数で乗算されます。そのウィンドウの機器応答は、処理されたデータのFFTの比率になります。 上記は標準的な手順であると思いますが、説明が不十分な場合があります。私の問題は、複数のウィンドウからの応答を組み合わせる方法にあります。 私が見る限り、正しいアプローチは、すべてのウィンドウにわたって複雑な値を平均することです。振幅と位相の応答は、各周波数での平均の複素数値の振幅と位相になります。 av_response = sum_windows(response) / n av_amplitude = sqrt(real(av_response)**2 + imag(av_response)**2) av_phase = atan2(imag(av_response), real(av_response)) 周波数ビン上の暗黙のループ。 しかし、私はこれを変更して、最初に各ウィンドウで振幅と位相を計算し、次にすべてのウィンドウで振幅と位相を平均するように求められました。 amplitude = sqrt(real(response)**2 + imag(response)**2) av_amplitude = sum_windows(amplitude) / n phase = atan2(imag(response), real(response)) av_phase = sum_windows(phase) / n 角度の平均が「間違っている」ため、これは正しくないと主張しました。たとえば、0度と360度の平均は180度ですが、一緒に作業している人は「OK、振幅のみを表示します」と応答しました。 だから私の質問は: 振幅についても2番目のアプローチは一般的に正しくないと私は思いますか? もしそうなら、関連している可能性のある例外はありますか、そしてそれは私が一緒に働いている人々が2番目の方法を好む理由を説明するかもしれませんか?たとえば、ノイズが小さくなると2つのアプローチが一致するように見えるので、おそらくこれは低ノイズの受け入れられる近似ですか? 2番目のアプローチが正しくない場合、これを示すために使用できる説得力のある信頼できる参照はありますか? 2番目のアプローチが正しくない場合、振幅についてこれを示す良い、理解しやすい例はありますか(0と360度の平均は位相に対してそうです)? あるいは、私が間違っている場合、自分をよりよく教育するためにどんな本がいいでしょうか? 私は-1 1 1 -1 1 …

4
DFT-畳み込みを使用したスペクトルドメインのウィンドウ効果の削除
DFTのウィンドウ処理の件について考えていたとき、思いついた。DFTは、使用されるウィンドウのスペクトルで畳み込まれた信号のスペクトルを生成します。したがって、メインローブとサイドローブがあります。 信号とウィンドウスペクトルの大きさの両方を再度畳み込むことで、信号のスペクトルに対するウィンドウ効果を取り除くことができると考えました。次の画像からわかるように、実際に機能しました。 左は、ハニングウィンドウで生成された元のスペクトルです。右は、ハニングウィンドウのDFTによって畳み込まれたスペクトルです。上はスペクトル自体、下はMATLABのfindpeaks結果です。 私はこのテクニックに関して何も読んだことがありませんが、私はそこに何も発明していないと確信しています。したがって、この処理をスペクトルで実行することの利点があるのか​​、それとも私には見られない欠点があるのか​​と思います。 私が見るところから見ると、前の画像でわかるように、これはピーク検出に役立ちます。また、次の2つの画像でわかるように、スペクトルが少し歪んでいるように見えます。: 青いグラフはスペクトル、赤いグラフは畳み込み後のスペクトルです。 これについて何か考えはありますか? このFFT後の畳み込みから発生する可能性のある問題はありますか? 主題を扱う紙はありますか? 編集 次のグラフを生成するスクリプトがここにあります。

3
MATLAB:
MATLABでは、fftおよび/ ifft関数の出力は、分析の対象となる前に追加の処理を必要とすることがよくあります。 私は何が正しいのかについて多くの異なる意見を聞いています: スケーリング Mathworksによるとfft、ifft関数は次の方程式に基づいています: X[k]x[n]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤N=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤NX[k]=11⋅∑n=1Nx[n]⋅e−j⋅2π⋅(k−1)⋅(n−1)N,where1≤k≤Nx[n]=1N⋅∑k=1NX[k]⋅e+j⋅2π⋅(k−1)⋅(n−1)N,where1≤n≤N\begin{align} X[k] &= \frac{1}{1} \cdot \sum_{n=1}^{N} x[n] \cdot e^{\frac{-j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}}, \quad\textrm{where}\quad 1\leq k\leq N\\ x[n] &= \frac{1}{N} \cdot \sum_{k=1}^{N} X[k] \cdot e^{\frac{+j \cdot 2 \pi \cdot (k-1) \cdot (n-1)}{N}},\quad \textrm{where}\quad 1 \leq n\leq N \end{align} 信号長によるスケーリング 私の同僚は通常、データを1だけスケーリングします1N1N\small \frac{1}{N}すぐに処理した後fft。 (fftスケーリング前の生データは考慮していません。)%% …
11 matlab  fft  ifft 

3
特定の周波数範囲のFFT。
信号を周波数領域に変換したいのですが。望ましい周波数範囲は0.1 Hzで1 Hzあり、周波数分解能は0.01 Hzです。 のサンプリングレートでは30 Hz、FFTは最大15 Hzの周波数成分を提供します。サンプリングレートを上げると、周波数分解能が向上します。ただし、FFTはより広い周波数範囲を提供します。私の場合、私がしたいの0.1 Hzは1 Hz、FFTが15 Hz(追加の計算)をあきらめることです。 私の質問は、特定の周波数範囲と高分解能で信号の周波数領域を計算できる標準的な方法はありますか?
11 fft  frequency 

2
周波数領域データを使用して予測を行う方法は?
線形回帰とカルマンフィルターの両方を使用して、データの時間領域シーケンスから推定および予測できます(データの背後にあるモデルに関するいくつかの仮定があります)。 周波数領域データを使用して予測を行う場合、どのような方法が適用できると思いますか?(たとえば、推定のために時間領域に戻るだけでなく、前のデータの適切なFFTからの出力を使用して、将来のステップを予測します。) 周波数領域での予測の品質または最適性がある場合、データまたはデータの背後にあるモデルについて、どのような仮定が必要になる可能性がありますか?(ただし、データソースがFFTアパーチャ幅で厳密に周期的であるかどうかは、事前にわかっていないものとします。)

1
F2F信号からのノイズの除去
(この質問は、生のWAVからのバイナリ磁気ストリップカードデータの抽出に関連しています) クレジットカードの磁気ストリップからバイナリシーケンスを抽出しています。 ご覧のとおり、信号は1か所ではっきりと劣化しています。また、画像の左側に小さな劣化があります。 IIRを使用するだけで(つまり、)、平滑化されますが、結果の信号は数学的に滑らかではありません。信号を2、3回微分すると、ノイズは復讐で戻ってきます。Xout=0.9Xoutlast+0.1XinXout=0.9Xoutlast+0.1XinX_{\rm out} = 0.9X_{\rm out_{last}} + 0.1X_{\rm in} 私の質問は、デリバティブがきれいになるような方法でノイズを取り除くことはできますか? もしそうなら、どうですか? 編集:ここにいくつかの破損した波のクローズアップがあります: 編集(2): 私が検討しているいくつかのアプローチ: 最初に、損傷したセクターのいずれかの側で信号のテイラー近似を行い、近似をブレンドすることができます。 次に、FFT、高周波成分の除去、FFTの逆変換を行うことができます。では、2つ目のアプローチを試してみましょう...
11 fft  noise 

2
画像の再構成:位相とマグニチュード
図1.(c)は、MAGNITUDEスペクトルのみから再構成されたテスト画像を示しています。低頻度ピクセルの強度値は、高頻度ピクセルよりも比較的多いと言えます。 図1.(d)は、PHASEスペクトルのみから再構成されたテスト画像を示しています。高頻度(エッジ、ライン)ピクセルの強度値は、低頻度ピクセルよりも比較的多いと言えます。 強度の変化(または交換)のこの魔法の矛盾が、MAGNITUDEスペクトルのみから再構築されたテストイメージとPHASEスペクトルのみから再構築されたテストイメージの間に存在するのはなぜですか? clc; clear all; close all; i1=imread('C:\Users\Admin\Desktop\rough\Capture1.png'); i1=rgb2gray(i1); f1=fftn(i1); mag1=abs(f1); s=log(1+fftshift(f1)); phase1=angle(f1); r1=ifftshift(ifftn(mag1)); r2=ifftn(exp(1i*phase1)); figure,imshow(i1); figure,imshow(s,[]); figure,imshow(uint8(r1)); figure,imshow(r2,[]); r2=histeq(r2); r3=histeq(uint8(r2)); figure,imshow(r2); figure,imshow(r3);

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