根据特定时间的值计算平均值(温度)

时间:2020-03-28 13:51:53

标签: math elixir average integral

给出: 一组带有时间戳的温度。 时间戳之间的距离有所不同。

假设: 我认为温度从一个测量值到另一个测量值呈线性变化。

目标: 我想计算平均温度。

example graph showing the problem

到目前为止,我得到的是:

  • 我需要为此使用积分计算。可悲的是信息 离开了我的头。放学已经有几年了...
  • 我可以通过某种方式为每两个时间戳值对创建数学函数,然后基于该值计算平均值。

我正在使用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]之间的平均温度。

编辑: 我对高效能标记提出的计算方法的理解。

triangle calculation

  1. 计算粉红色三角形
  2. 计算三角形下的绿色正方形
  3. 对所有要点做
  4. 全部加起来
  5. 将其除以时间间隔(x轴)

如何获得边缘保护套?

1 个答案:

答案 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个数据点:

  • t = 0温度= 4
  • t = 2温度= 2
  • t = 5温度= 8

这是两个间隔。第一个具有长度2和平均温度(4 + 2)/ 2 = 3 。第二个具有长度3和平均温度(2 + 8)/ 2 = 5

整个期间的平均值为(2 * 3 + 3 * 5 )/(2 + 3)= 4.2。