给出像
这样的矢量[1;2;3;5;6;7;10;11;12]
对于某些transpose(1:N)
,它是N
的有序子集,如何在每个运行序列中找到第一个值?这里,运行序列是由1分隔的整数序列,例如1。 5;6;7
。从上面的矢量我希望答案是:
[1;5;10]
答案 0 :(得分:5)
您可以使用logical indexing。
a = [1;2;3;5;6;7;10;11;12]
a([true; diff(a)>1]) %% or a(diff([-inf; a])>1)
ans =
1
5
10
diff(a)
将为您提供所有元素之间的区别。 diff(a)>1
将返回一个逻辑向量,指示哪些数字的差异大于1
。
[true; diff(a)>1]
会在开头添加一个逻辑true,以确保包含第一个值。
最后a([true; diff(a)>1])
将为您提供由逻辑向量映射的a
值。