記録された周波数の時系列があり、そこから 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 数学ライブラリを調べていましたが、運がありませんでした (ただし、検索する正しい用語が見つからないだけかもしれません)。