私はDSPにかなり慣れていないので、Pythonで加速度計データを平滑化するためのフィルターの可能性について調査しました。発生するデータのタイプの例を次の画像に示します。
基本的に、このデータを平滑化して最終的に速度と変位に変換するためのアドバイスを探しています。携帯電話の加速度計は非常にうるさいことを理解しています。
データによって生成されたノイズを参照するためにデバイスを取得できないため、現時点ではカルマンフィルターを使用できるとは思わない(デバイスを平らに配置し、それらの読み取り値からノイズの量を見つけることが不可欠であると読んだか?)
FFTは興味深い結果をもたらしました。私の試みの1つは、加速度信号をFFTし、次に低周波数をレンダリングして絶対FFT値を0にすることでした。次に、オメガ演算と逆FFTを使用して速度のプロットを得ました。結果は次のとおりです。
これは物事を進める良い方法ですか?信号の全体的なノイズ特性を削除しようとしていますが、約80秒などの明らかなピークを識別する必要があります。
また、元の加速度計データでローパスフィルターを使用するのも大変でした。これは、データを平滑化するのに非常に役立ちましたが、ここからどこに進むべきかわかりません。ここからどこへ行くかについてのガイダンスは本当に役立つでしょう!
編集:少しのコード:
for i in range(len(fz)):
testing = (abs(Sz[i]))/Nz
if fz[i] < 0.05:
Sz[i]=0
Velfreq = []
Velfreqa = array(Velfreq)
Velfreqa = Sz/(2*pi*fz*1j)
Veltimed = ifft(Velfreqa)
real = Veltimed.real
本質的に、iveは加速度計データに対してFFTを実行し、シンプルなブリックウォールフィルターを使用して高周波数をフィルター処理してSzを出力しました(理想的ではないことを知っています)。次に、データのFFTでオメガ演算を使用します。また、私の画像を私の投稿に追加してくれたdatageistにも感謝します:)
fz
配列の初期化は表示しませんが、代わりにハイパスフィルターを適用しているようです。