0

Androidアプリで加速度計信号からFFTを行うためにLibgdxライブラリを使用しています。

2 つの信号のドット積を見つけ、その最大値 1 が必要なため、信号を正規化する必要があります。

正規化」とは、信号のユークリッド ノルムが 1 であることを意味します。ノルム値)。

内積は周波数スペクトルにあるため、時間領域で信号を正規化すると、周波数スペクトル表現は正規化されたユークリッドではなくなり、再びユークリッド正規化を行います。(私はすでにFFTの後に1 / Nスケールファクターによる正規化を検討していますが、おそらく私の問題には影響しないと思います)。

FFT の前後にユークリッド正規化を行う場合と、FFT の後にのみ行う場合の違いはどれですか?

編集 1: Libgdx ライブラリの FFT が複素数 DFT であることも考慮してください。また、出力信号よりも入力に実際の信号があり、0 から (N/2)-1 および N/2 から N に対して対称です。Parseval の定理ウィンドウ (ハミングのウィンドウなど) を適用しないと検証されます。では、信号の 0 から N/2-1 成分を使用すると、0 と 1 の間のドット積が得られますか?

4

1 に答える 1

4

うーん、誰もこれに答えていないようです。理由はわかりませんが、簡単にチャイムを鳴らします。

f[n] を信号、F[k] をフーリエ変換したバージョン (明らかに離散) とします。

パーセヴァルの定理により、次のことがわかります。

  norm(f[n]) = (1/N) norm(F[k])

ここで、N はサンプル数です。フーリエ変換の等次性により、g[n]=af[n] の場合、G[k] = a F[k] となります。

最後に、これら 2 つを組み合わせて、norm(F[k]) を 1 にするには、次のように除算する必要があります。

 (1)      norm(F[k]) = N norm(f[n])

時間ドメインまたは周波数ドメインのいずれかです。

同様に、norm(f[n]) を 1 にしたい場合は、次のように除算する必要があります。

 (2)      norm(f[n]) = (1/N) norm(F[k])

そして最後に:

FFT の前後にユークリッド正規化を行う場合と、FFT の後にのみ行う場合の違いはどれですか?

フーリエ変換は線形(かつ等質性が成り立つ)なので、前後に分けても違いはありません。ただし、時間領域のノルムを 1 にしたい場合は、(2) の定数を使用する必要があります。一方、周波数領域のノルムが 1 になるようにするには、(1) で定数を使用する必要があります。

于 2013-02-06T23:39:04.540 に答える