在连续运行序列的向量中查找第一个值

时间:2016-06-02 05:00:28

标签: matlab

给出像

这样的矢量
[1;2;3;5;6;7;10;11;12]

对于某些transpose(1:N),它是N的有序子集,如何在每个运行序列中找到第一个值?这里,运行序列是由1分隔的整数序列,例如1。 5;6;7。从上面的矢量我希望答案是:

[1;5;10]

1 个答案:

答案 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值。