3

Pythonでカットオフ周波数が0.7〜4Hzの128ポイントのハミングウィンドウを備えたバンドパスフィルターを取得しようとしています。画像から信号のサンプルを取得します。(1 サンプル = 1 画像)。fpsは頻繁に変化します。

これはPythonでどのように行うことができますか? 私はこれを読みました:http: //mpastell.com/2010/01/18/fir-with-scipy/しかし、私はfirwinがかなり混乱していると思います。この可変fpsでこれを行うにはどうすればよいですか?

4

3 に答える 3

3

一貫性のないサンプル レートでデータをフィルタリングしようとするのは非常に困難です (不可能ですか?)。だからあなたがしたいことはこれです:

  1. 固定サンプル レートで新しい信号を作成します。固定サンプル レートは、最大サンプル レート以上である必要があります。これを行うには、新しいサンプルを配置する場所を表す新しい「グリッド」を設定し、それらの値を既存のデータから補間します。必要な精度に応じて、さまざまな補間方法が存在します。線形補間はおそらく悪い出発点ではありませんが、何をしているかによって異なります。よくわからない場合は、 https://dsp.stackexchange.com/で質問してください。

  2. それが完了したら、リンクした投稿で説明されているように、サンプルが均等に配置されるため、標準の信号処理方法を信号に適用できます。

  3. 必要に応じて、元のサンプル位置を戻すために再度補間する必要がある場合があります。

データの分析のみを目的としている場合は、ロム ピリオディグラムに興味があるかもしれません。データをバンドパスしてから分析する代わりに、ロム ピリオディグラムを使用して、関連する周波数のみを調べるか、必要に応じて結果に重みを付けます。(数値レシピ シリーズも参照してください。第 13.8 章は「不等間隔データのスペクトル分析」と呼ばれ、ウィキペディアのページよりもわかりやすい紹介のようです)

于 2013-04-30T15:13:04.270 に答える
0

もう 1 つのオプションは、フィルタリングの前にデータを一定のサンプル レート (「グリッド」など) に変換する (非同期) サンプル レート変換です。もちろん、これはサンプルレートがわかっている場合にのみ機能し、(スペクトルを推定するだけでなく) 本当にデータをフィルタリングする必要がある場合にのみ役立ちます。

この目的のために、たとえば scipy.interpolate の InterpolatedUnivariateSpline をフレームごとに適用できます。これは非常に高速です。

于 2015-03-25T14:51:06.853 に答える