DCを拒否するのに適したFFTウィンドウ関数とは何ですか?


9

FFTを使用して、本質的に信号のパワーエンベロープを分析しています(含まれているプロジェクトの情報については、こちらを参照てください)。また、パワー番号は常に正なので、ウィンドウを使用したいDC成分を除去します。 50/50の正と負の関数、通常のすべての正の関数。

フラットトップ」関数を使用して、a0バイアスを取り除き、それを余弦波から正弦波に変換しましたが、それが最適(または意味がある)かどうかはわかりません。

なにか提案を?


9
ウィンドウ処理の前に平均値を引くだけですか?
内部石

回答:


1

最も一般的な連続窓関数(フォンハンなど)の1次導関数はDCを拒否しますが、元の窓関数と同様の振幅周波数応答を持ちます。したがって、フェーズに関連していない場合でも、ウィンドウ選択に元の「良さ」基準を使用できます。


2
この応答は主に正しいですが、それはコメントのほうが多いので、拡張すると非常に役に立ちます。
フォノン

しかし、それは私の質問にある程度対応しています。
ダニエルRヒックス

1
ウィンドウ処理の前に平均値を引くのではなく、これを行う理由はありますか?
nibot

JasonRの答えが正しければ、ウィンドウ関数を介してDCを拒否する(そして、適切なスペクトル推定を取得する)というこの考え方は機能しません。
nibot

@nibot:合計プラス減算が不可能であることであるかもしれない可能な理由(例えば、いくつかの固定されたハードウェア・パイプラインやレイテンシでは使用できません。)
hotpaw2

7

大きなDC成分を含む信号でスペクトル分析を行うことに関心があり、そのDCピークを抑制したい場合、ウィンドウ関数は必要なものではありません。他のいくつかの回答が指摘しているように、ハイパスフィルター(または、別の見方をすると、周波数がゼロのノッチを持つノッチフィルター)が適切なソリューションです。

理由を理解するには、各DFT出力の周波数応答にウィンドウ関数を適用することについて考える必要があります。DFTは次のように定義されます。

X[k]=n=0N1x[n]ej2πnkN

Nfs2fs2

X[k]=n=0N1xk[n]

どこ:

xk[n]=x[n]ej2πnkN

kx[n]2πkNxk[n]NX[k]

b[n]={1, x=0,1,,N10, otherwise

ボックスカーフィルターの振幅応答は、そのインパルス応答の離散時間フーリエ変換(DTFT)を実行することによって見つけることができます。

|H(f)|=|sin(Nπffs)sin(πffs)|

f

x[n]

X[k]=n=0N1w[n]x[n]ej2πnkN=n=0N1w[n]xk[n]

xk[n]

|H(f)|=|W(f)|

W(f)w[n]x[n]

したがって、信号のDC成分を本当にキャンセルしたい場合は、時間領域のウィンドウ処理ではなく、他のタイプの前処理を介してそれを削除するのがよいでしょう。たとえば、カットオフ周波数が非常に低い線形ハイパスフィルターを使用するか、最初に信号から推定平均を差し引くことができます。これらの方法のどちらを選択するかは、システムの他の制約に基づく必要があります。


3

DCを削除するには、ウィンドウ関数を使用するのは良い方法ではないと思います。エンドリスが述べたように、一般的な方法は、ウィンドウ処理の前に平均を差し引くことです。もう1つのオプションは、分析の前に信号にハイパスフィルターを適用することです。たとえば、カットオフ周波数は約10 Hzです。


信号がアナログ形式で存在しない場合、ハイパスフィルターを適用することはできません。しかし、エンドポイントをゼロにするウィンドウも使用されている場合は特に、平均値を引くとうまくいくはずです(&エンドリス)は正しいと思います。(そして、私が信号をおそらく0.01 Hzまで分析していることを考えると、ハイパスフィルターはより低いカットオフを必要とします。)
Daniel R Hicks

2
ハイパスフィルターを適用するために、なぜアナログ信号が必要だと思いますか?デジタルHPFを作成することは確かに可能です。
ジェイソンR

@JasonR-私はそのようなことについて私がかなり無知であることを認めます(私の信号コースは40年前、FFTなどよりかなり前でした)が、デジタルハイパスフィルターを作成することは私には思えますまず、信号のフーリエ変換を生成する必要があります。
ダニエルRヒックス

1
それはまったくそうではありません。ハイパスフィルターだけでなく、ローパス、バンドパスなども生成できます。実際、ローパスフィルターのプロトタイプを取得して、類似の応答を持つハイパスフィルターに変換する手法があります。フィルター設計用のほとんどのソフトウェア(MATLABなど)を使用して、すべてのタイプのフィルターを作成できます。
Jason R

1
ハイパスフィルターを実装するには差別化が必要であるという印象をどこで得たかはわかりません。微分はハイパス操作ですが、ハイパスフィルターの実装には適していません(その周波数応答はランプであるため、ノイズが頻繁に存在する高い周波数を増幅します)。Wikipediaの記事ハイパスフィルター上は良いスタートになります。
Jason R
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.