给出: 一组带有时间戳的温度。 时间戳之间的距离有所不同。
假设: 我认为温度从一个测量值到另一个测量值呈线性变化。
目标: 我想计算平均温度。
到目前为止,我得到的是:
我正在使用Elixir和Postgresql。但是非常欢迎以任何语言提供有关如何解决此问题的任何提示。如果有我错过的图书馆或一般的逐步方法。也许甚至还有一个postgresql函数?
我也在这里放置一些示例数据:
[{~N[2020-03-28 13:08:32], 23.1}, {~N[2020-03-28 13:10:00], 23.3}, {~N[2020-03-28 23:08:32], 6.3}, {~N[2020-03-29 00:00:32], 2.1}, {~N[2020-03-29 04:00:00], 3.8}]
想象一下,我想根据这些值来计算~N[2020-03-28 13:30:00]
和~N[2020-03-29 03:00:00]
之间的平均温度。
编辑: 我对高效能标记提出的计算方法的理解。
如何获得边缘保护套?
答案 0 :(得分:1)
如果温度在一个区间内呈直线变化,则该区间内的平均温度就是该区间端点的平均值。
例如,在此间隔内:
{~N[2020-03-28 13:08:32], 23.1}, {~N[2020-03-28 13:10:00], 23.3}
平均值为(23.1 + 23.3)/ 2 = 23.2。
现在,如果您有一个包含两个或多个间隔的时间段怎么办?
您必须采用“加权平均值”:将每个区间的平均值乘以区间的长度,将其相加,然后除以整个周期的长度。
具体示例:
假设您有3个数据点:
这是两个间隔。第一个具有长度2和平均温度(4 + 2)/ 2 = 3 。第二个具有长度3和平均温度(2 + 8)/ 2 = 5 。
整个期间的平均值为(2 * 3 + 3 * 5 )/(2 + 3)= 4.2。