有没有人知道如何在不使用循环的情况下引用数据集中的下一行/上一行(在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命令?
感谢。
答案 0 :(得分:1)
您可以尝试使用diff命令。像
这样的东西find(diff(Dataset.Value)==0)
应该为您提供重复值的索引(您可能需要添加1以指向代码中的重复元素)。
编辑:实际上我认为你想要的是Dataset.Repeat = [0 diff(Dataset.Value)==0 ];
,其中0的连接是移位以指示重复元素的第二个而不是第一个。