【发布时间】:2018-04-28 11:11:55
【问题描述】:
我有一系列文本文件,其中包含具有两个独立时间戳的数据,并且想找出给定时间所有值的总和。这些文件可能有不同数量的行,但总是三列:value timestamp1 timestamp2,带有诸如
6.2 1 4
4.3 2 9
7.2 3 10
或
1.2 2 3
0.3 3 9
0.1 5 12
下面是输出是如何形成的解释:
- 来自两个输入的时间戳被统一为一个唯一值向量(因此对于上面的示例
{1,2,3}∪{2,3,5} -> {1,2,3,5}或{4,9,10}∪{3,9,12} -> {3,4,9,10,12})。 -
对于每个唯一的时间戳,从每个输入中选择一个数据点,这样:
- 如果查询到的时间戳低于可用的最小时间戳,则取第一个数据值。
- 否则,取时间戳较低或相等的数据值。
将两个值相加并处理下一个唯一时间戳(如果可用)。
如果我使用timestamp1 将这个算法应用于上面的示例数据,我会得到:
7.4 1 %6.2+1.2
5.5 2 %4.3+0.3
7.5 3 %7.2+0.3
7.3 5 %7.2+0.1
对于timestamp2:
7.4 3 %6.2+1.2
7.4 4 %6.2+1.2
4.6 9 %4.3+0.3
7.5 10 %7.2+0.3
7.3 12 %7.2+0.1
我想我需要对time series 做点什么,因此我已经有了以下转换器代码:
logs = dir('log1/*.txt');
k=1
for log = logs'
t{k}=timeseries(load(log.name))
k=k+1
end
我猜下一步应该是sum(t) 之类的东西,但这不起作用。有人知道如何像上面那样组合它们吗?
对于任何感兴趣的人,这些是 CPU 和实时时间戳(自算法开始以来),用于衡量算法的性能。
【问题讨论】:
-
我不明白你是如何从两组三个时间戳变成四个或五个时间戳的,以及第二列和第三列发生了什么。
-
@Steve 最终设置的时间戳将与输入数据中唯一时间戳的数量相同。第一列也是值而不是时间戳。
-
好的,我看看你在新数据中添加了哪些行;我不明白为什么 combined relative to timestamp1 的第一行是
6.2 + 1.2(1.2不是来自旧数据),而最后一行是7.2 + 0.1(与一个旧数据相结合)点,但不是全部)。 -
@Steve 第一个是因为我需要第一个数据集的值,而丢失数据集的第一个数据点必须这样做,第二个对我来说并不奇怪,在时刻 5,我们有两个数据集的最后一行。
-
@Steve the 5 来自第二个数据集,特别是这一行 0.1 5 12
标签: matlab indexing sum timestamp benchmarking