我有一个非常大的数据集数组,其数值超过一百万,如下所示:
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值。这种操作不能在循环中执行此操作,因为它需要很长时间才能完成,需要在简单的一次性矢量减法操作中完成。
答案 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];