非周期サンプルとDFTの動作に関する初心者の質問

私は強く非周期的な信号を持っていて、fftを実行した後、ローパスフィルタを使い、逆FFTを実行すると変なアーチファクトが発生します。アーティファクトは、信号が周期的で、端に「ラップされている」と想定される方法によるものだと私は信じています。 (私が言ったように、私は完全な初心者です。)

私は、非周期的な信号を処理する通常の方法はウィンドウ関数を介していることを理解していますが、データにウィンドウ関数(例えばHamming)を適用すると、データがあまりにも大きくなりすぎ、悪いアーティファクトを生成するように見えます。

どのような仕組みになっているかは

  1. 0の部分を追加して追加することで、信号を無音で囲みます。

  2. fftを実行してフィルタを適用し、fftを反転させます

  3. 最初と最後から無音部分を切り取る

ステップ1の結果は、より長い信号に長方形の窓関数を適用するように見えるので、それは大丈夫だと思いますが...

  1. 私が何をやっているのは妥当なのですか?

  2. そうなら、効果は何ですか?そして、0のセグメントの長さを決定する最善の方法は何ですか? (現在、元の信号の10%は悪くないようです)

  3. そうでない場合は、これを行う別の方法がありますか?

0
FFTやIFFTを行わずにローパスフィルタを適用してみませんか?
追加された 著者 Matt R,
対応するFFTビンをゼロにするだけでローパスフィルタを実装しようとすると、得られるフィルタが非常に悪いので、私は尋ねています。 この質問とその答え。
追加された 著者 Matt R,
さて、一度に完全な信号を処理するのですか、フレームで作業しますか?
追加された 著者 Matt R,
完全な信号のFFTを行うことができれば、ローパスフィルタの(時間領域)インパルス応答を出し、2つのシーケンスの長さ(マイナス1)を加算し、 FFTの長さとしての出力。 2つのFFTを掛け合わせ(フィルタリングステップ)、IFFTを実行します。
追加された 著者 Matt R,
具体的な詳細は重要ではないようですが、そうであれば私はMatthew Jockersの Syuzhet パッケージを使用して、テキストから自動的に選択された感情データから書籍の大規模なプロットに関する情報を発見しようとします。全体的なアイデアは不完全ですが、ジョーカーとみんなが完全に

a>はDFT上にありますが、私はそれが本当にきれいだと思っていますが、この特定のアプリケーションが不完全に焼いても他の領域でうまくいくと思います。
@Matt L.、最終的に、私は特定のアプリケーションではなく周波数ドメインのデータに興味があります。さらに、私は何をやっているのか分かりません。
追加された 著者 Daniel Garrison,
それは本当に良い点です(私が知らなかったことです)。そして、この特定の質問に対して、彼らが最終的に合意したものがあなたの提案であると思います。しかし、私は、できることの例として、ローパスフィルタにのみ興味があります。
追加された 著者 Daniel Garrison,
@マット・L。はい、完全な信号です。何かが好きです: matthewjockers.net/wp-content/uploads/2015 /02/noisy.png
追加された 著者 Daniel Garrison,
@curiousStudentでは、重要な周波数の一部がサンプルよりも長いため(?)、周期的な複製がアーティファクトを導入しているという問題があります。この例を挙げる: matthewjockers.net/wp-content/uploads/ 2015/04/bovary2.png DFTバージョンを表す緑色の線は〜90から始まるアップスイングを取りますが、青色のローリング平均は(大きな垂直ジャンプを無視します---どこから来るのか分かりません)、グレーのウィンドウは信号がダウンしています。緑色の線は、周期性のため、開始時と同じy値で終了します。
追加された 著者 Daniel Garrison,
別の関連する質問にリンクする: dsp.stackexchange.com/questions/741/…
追加された 著者 Daniel Garrison,
サイドコメント:DFTには、非周期信号には問題がありません。 DFTとDFS(シリーズ)の関係を詳しく見てみると、DFTは元の有限長の信号を取り、それを定期的に複製して無限の長さを作成するDFSの1つの期間です周期的な信号。人々は対称ウィンドウを使用してスペクトルのサイドローブ効果を減少させる連続性を強制しますが、数学的にはそれは必要ではありません。
追加された 著者 Pedro Lauridsen Ribeiro,

2 答え

フィルタのインパルス応答の長さ(または希望するノイズフロアよりも上の有限長)を決定できる場合は、FFT-IFFT高速畳み込みフィルタリングの前にゼロパディングとして追加する必要があるゼロの量です。

非常に鋭いフィルタ(FFTビンをゼロにすることに似ている)は、「より柔らかい」遷移帯域を有するものよりも長く、より「リップル」なインパルス応答を有することに留意されたい。

1
追加された

あなたが時間領域エイリアシングを経験しているように私には聞こえます。まず、2つの基本的な事実:

  1. $ x [n] $は長さ$ N $で、$ h [n] $は長さ$ M $の場合、$ x [n] \ ast h [n] $は長さ$ N + M-1 $。

ファクト1は、どのドメインで畳み込み/フィルタリングを実行するかは関係ありません。したがって、そのスペクトルを "整形"することによって$ x [n] $のDFTを変更すると、暗黙の長さ$ M $を定義する時間領域に等価なフィルタ$ h [n] $が存在します。

  1. Taking an $N_1$-point IDFT of an $N_2$-point signal for $N_1 < N_2$ results in time-aliasing.

Fact 2 is the dual to frequency aliasing by undersampling. I'll illustrate this as follows: let $x_1[n]$ denote a signal of size $N_1$. Then, if we take an $N_1$-point DFT of $x_1$ and modify its spectrum so the size should be $N_2>N_1$, then taking an $N_1$-point IDFT is equivalent to obtaining the signal $x_2$ given by: \begin{eqnarray} x_2[n] = \sum_{p=0}^{\infty}x[n+pN_1] \end{eqnarray}

This seems to be consistent with what you have mentioned. As you correctly noted, zero padding the original signal is exactly the solution! Essentially just zero-pad such that the terms in the above equation for $p>0$ are all zero-valued. Also, using the ideas above gives you a way to understand the exact amount of zero-padding necessary based on the implicit filter $h[n]$ your frequency domain shaping yields. Good luck!

1
追加された
あなたとあなたの答えの間にあなたとhotpaw2(他の答えで)に感謝し、あなたが何を言っているのか理解しようと思っています。私は今理解していると思う!ありがとう!
追加された 著者 Daniel Garrison,