不使用循环的数据集中的下一行/上一行

时间:2012-03-03 13:08:56

标签: matlab loops dataset

有没有人知道如何在不使用循环的情况下引用数据集中的下一行/上一行(在MATLAB中)?

我要做的是找到一行中的值与上一行中同一列中的值相同的行,以及它已经过多少次。

通常,我会使用循环,例如: -

for n = 2:100
   if Dataset.Value(n) == Dataset.Value(n-1)
      Dataset.Repeat(n) = 1
   end
end

但我拥有的文件数万行,并且需要花费太多时间才能完成,所以有没有办法在不使用循环的情况下完成它?

类似的东西:

Dataset.Repeat(Dataset.Value(current_line) == Dataset.Value(previous_line)) = 1;

除了我认为没有previous_line命令?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用diff命令。像

这样的东西
find(diff(Dataset.Value)==0) 

应该为您提供重复值的索引(您可能需要添加1以指向代码中的重复元素)。

编辑:实际上我认为你想要的是Dataset.Repeat = [0 diff(Dataset.Value)==0 ];,其中0的连接是移位以指示重复元素的第二个而不是第一个。