- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
| 7 | 8 | 0 | 4 | <- average
|
10 | +-------------+
8 | | | +--------
| | | |
4 |----+ | |
| | |
+----5----10----15-+==20====25====30====35----40
t ->
Input:
[ (timestamp, new_value), ...]
e.g.: [(0,4), (5,10), (18,0), (35,8), ...]
given:
#define WINDOW_SIZE 10;
Print windowed average:
7, 8, 0, 4, ...
我很难通过代码思考这个问题。我能想到的一种方法是将 (timestamp, value) 对分解为它们的最低单位,比如 1 个时间单位,这使得代码更容易编写,但计算量大。
编辑:例如,第一个值为 7,因为我计算了 5 个时间步长的曲线下面积 (4*5 = 20) 以及接下来 5 个时间步长的曲线下面积 (10*5 = 50 ) 然后将这 2 添加并除以 WINDOW_SIZE (70/10 = 7)。然而,问题在于这些时间戳是相当随意的,即它们不是周期性的。那么我怎么知道什么时候停止查看数组呢?
编辑:这个链接似乎是相关的:Calculating moving average in C++
最佳答案
平均值是曲线下的面积(数学积分)除以时间段。每次超过时间阈值时打印平均值:
#define WINDOW_SIZE 10
void runningAverage( int startTime, int time, int value, int *area )
{
int A = *area;
for ( int i = startTime/WINDOW_SIZE; i < time/WINDOW_SIZE; i ++ )
{
int newT = (i+1) * WINDOW_SIZE; // timespane to next threshold
A += ( newT - startTime ) * value; // add sub area
printf( "%d ", A / WINDOW_SIZE ); // print average
startTime = newT; // set new start time
A = 0; // reset area
}
*area = A + (time-startTime) * value; // add area
}
int main()
{
int area = 0;
runningAverage( 0, 5, 4, &area );
runningAverage( 5, 18, 10, &area );
runningAverage( 18, 35, 0, &area );
runningAverage( 35, 40, 8, &area );
return 0;
}
输出:7 8 0 4
关于C 程序在给定时间戳的情况下查找一系列值的窗口平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35802441/
给定一个带有多个 date_time 戳的字符串,我想 提取第一个戳及其前面的文本 候选字符串可以有一个或多个时间戳 后续的 date_time 戳记将被 sep="-" 隔开 后续date_time
是否可以合并从相机拍摄的文本和照片?我想在照片上标记日期和时间,但我在 Google 上找不到任何内容。 最佳答案 使用下面的代码来实现你所需要的。 Bitmap src = Bitm
有没有办法通过 Graph API 戳另一个用户?基于this post ,并使用 Graph Explorer ,我发布到“/USERID/pokes”,我已经授予它(Graph API 应用程序和
我有两个向左浮动的元素。一个是 body 的第一个 child ,另一个是容器的第一个 child ,容器是 body 的第二个 child 。 ...
我是一名优秀的程序员,十分优秀!