Matlab数据集阵列计算delta t

时间:2014-03-05 20:54:09

标签: arrays matlab dataset timedelta

我有一个非常大的数据集数组,其数值超过一百万,如下所示:

Month Day Year  Hour Min Second   Line1   Line2   Power  Dt
7     8   2013    0   1   54      1.91    4.98    826.8  0
7     8   2013    0   0   9       1.93    3.71    676.8  0
7     8   2013    0   1   15      1.92    5.02    832.8  0
7     8   2013    0   1   21      1.91    5.01    830.4  0

等等。   当秒的测量值达到60时,它将在0处重新开始,因此为什么第一个数字更大。我需要通过获取当前行秒列并减去前一行秒列来填充delta t列(Dt)并校正negatyive值。这种操作不能在循环中执行此操作,因为它需要很长时间才能完成,需要在简单的一次性矢量减法操作中完成。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用diff命令生成此类结果。它非常快,应该可以用于任何循环。 HTH

答案 1 :(得分:0)

 Dt=diff(datenum(A(:,1:6)))*60*60*24;

这给出了以秒为单位的增量,但我不确定你想要对负差异进行校正。你能给出一个预期输出的例子吗?

请注意,Dt将是一个短于A的条目,因此您可能需要填充它。

您可以使用命令

删除负值(我认为)
Dt(Dt<0)=Dt(Dt<0)+60;

如果您需要填充Dt向量,使其长度与数据集相同,请尝试

Dt=[Dt;0];