如何以最简单的方式计算阶梯函数的积分?

时间:2013-01-04 09:21:02

标签: java math statistics time-series mean

我有一系列重新录制的频率,我想从中计算出第二种方法。然而,采样率不是恒定的,这意味着简单的算术平均值是错误的。我真正想要计算的是每个第二个时间间隔内阶梯函数(由时间序列描述)的积分。

例如考虑这个时间序列:

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。但这不是第二次测量的平均频率。它改为: (200 * 49.9 + 400 * 50.1 + 200 * 50.15 + 200 * 50.05)/ 1000 = 50.06,因为测得的频率在不同的时间内都是正确的。

这是加权平均值的计算(保持时间为权重)或等效计算阶梯函数的积分(然后按时间计算)。

首先:此特定计算是否有名称?对我来说,这对时间序列来说似乎是一个相当标准的计算。不知道这个名字使得谷歌难以为它服务。

第二:哪个java库支持这样的计算?我想避免自己实现这个。我拒绝相信没有好的标准java库提供这个。我正在研究apache commons数学库,但没有任何运气(但又一次:也许我只是错过了正确的术语来寻找)。

2 个答案:

答案 0 :(得分:2)

我不确定公式200 * 49.9 + 400 * 50.1 + ...是否正确。这意味着频率49.9从08:11:23.400到08:11:24.200生效,好像频率传感器测量未来频率。我宁愿认为米是指过去的频率。那么,频率真的是一个阶梯函数吗?或锯齿功能更贴近现实?甚至是一个平滑的函数,用样条重构?

因此,我建议您自己计算积分,并准备好更改计算公式。至于错误,你同样可以在从库中选择函数时以及设置其参数时出错。

答案 1 :(得分:0)

Java中没有很多可以正确执行此操作的库。但您正在寻找的基本功能是数字信号处理。

这是一个类似的问题:Signal processing library in Java?