4

信号のパワー(通常は10 kHzでサンプリングされる)と1つの周波数(たとえば50 Hz)での時間の関係を推定するための良い方法を探しています。スペクトログラムを計算して、ターゲット周波数でスライスすることができます。ただし、これは非効率的なようです。なぜなら、私は1つの周波数と時間の電力しか気にしないからです。正確に1つの周波数での電力がゼロ(限界内)であることに気付きました。目標周波数の周りの小さな周波数間隔内の信号の電力を計算したいと思います。

私の現在の「解決策」は、電力の2d配列を返すMatplotlibのmlab.specgram()関数を使用することであり、それをスライスするだけです。異なる信号でスペクトログラムを計算するのに大幅に異なる時間がかかるため(同じ長さであっても)、mab.specgram()関数を完全に信頼していないため、これには満足していません。

4

1 に答える 1

7

これを行う方法はたくさんあります。大雑把ですが効果的な方法の1つは、バンドパスフィルター(50Hz)を適用して、他のすべての信号を除去し、最後のNサンプルのRMSパワーを計算することです。

もう1つは、ウィンドウ化されたFFTを実行できますが、実際にはFFTを実行できないことです。必要なビンを計算するだけです。ウィンドウは好きなものにすることができます(例:アルファ8のカイザー)。単一のビンのDFTは、信号とe ^(i * n * w)の積の合計です(ここで、wはサンプリングレートで50Hz、nはイテレーターです)。

おそらくそれよりも簡単な方法があります。それは、あなたが何に弾力性を持たせようとしているのか、信号がどれだけ速く動くか、そしてあなたがミックスにノイズや他の信号を期待するかどうかに依存します。他の人の不協和音から信号を拾い上げようとしているのでなければ、長々と努力する必要はありません。

于 2011-02-10T04:21:23.583 に答える