3

記録された周波数の時系列があり、そこから 2 番目の平均を計算したいと思います。ただし、サンプル レートは一定ではありません。つまり、単純な算術平均は正しくありません。私が実際に計算したいのは、各秒間隔内のステップ関数 (時系列で記述) の積分です。

たとえば、次の時系列を考えてみましょう。

08:11:23.400 -> 49.9 Hz
08:11:24.200 -> 50.1 Hz
08:11:24.600 -> 50.15 Hz
08:11:24.800 -> 50.05 Hz
08:11:25.100 -> 49.95 Hz

秒の算術平均は、08:11:24.000 - 08:11:25.000(50.1 + 50.15 + 50.05)/3 = 50.1 になります。しかし、これはその 1 秒間に測定された平均周波数ではありません。代わりに、(200*49.9 + 400*50.1 + 200*50.15 + 200*50.05)/1000 = 50.06 となります。これは、測定された周波数が異なる時間に対して正しいためです。

これは、加重平均 (重みとして保持時間を使用) の計算、または同等のステップ関数の積分の計算 (そして時間で割る) です。

まず、この特定の計算に名前はありますか? 私には時系列のかなり標準的な計算のようです。これの名前を知らないと、グーグルで検索するのが難しくなります。

2番目:そのような計算をサポートするJavaライブラリはどれですか? これを自分で実装することは避けたいと思います。これを提供する優れた標準 Java ライブラリがないとは信じられません。私は apache commons 数学ライブラリを調べていましたが、運がありませんでした (ただし、検索する正しい用語が見つからないだけかもしれません)。

4

2 に答える 2

2

式 200*49.9 + 400*50.1 + ... が正しいかどうかわかりません。これは、周波数センサーが将来の周波数を測定するかのように、周波数 49.9 が 08:11:23.400 から 08:11:24.200 まで有効であることを意味します。むしろ、メートルは過去の周波数を意味すると思います。では、周波数は本当に階段関数なのでしょうか? それとも鋸歯関数の方が現実に近いのでしょうか? それとも、スプラインで再構築された滑らかな関数ですか?

そのため、自分で積分を計算し、計算式を変更する準備をすることをお勧めします。バグに関しては、ライブラリから関数を選択するとき、およびそのパラメーターを設定するときに、同様にエラーを発生させる可能性があります。

于 2013-01-04T13:09:56.053 に答える
0

これを適切に実行できる Java のライブラリは多くありません。しかし、あなたが探している基本的なものはデジタル信号処理です。

同様の質問があります: Java の信号処理ライブラリ?

于 2013-01-05T01:05:32.540 に答える