在Matlab中求阵列中的第一个非连续元素

在Matlab中求阵列中的第一个非连续元素,matlab,find,Matlab,Find,我有一个向量,“triggs”和我的触发器的索引号。每个触发器持续几毫秒,我需要找到每个触发器的起始位置 否则,我需要找到连续数组的第一个元素。 如果向量为: triggs=[12345151718192526272829] 我想要的结果是:1,6,12 这是我通常做的: triggs = find(allChans(2,:)>0.2); x = [diff(triggs)~=1,true]; trigWaves = triggs(x); % This

我有一个向量,“triggs”和我的触发器的索引号。每个触发器持续几毫秒,我需要找到每个触发器的起始位置

否则,我需要找到连续数组的第一个元素。 如果向量为: triggs=[12345151718192526272829]

我想要的结果是:1,6,12

这是我通常做的:

     triggs = find(allChans(2,:)>0.2);
     x = [diff(triggs)~=1,true];
        trigWaves = triggs(x); % This contains the start of each trigger in chan 2
        clear x
        nTrigs = length(trigWaves);
问题是,这实际上是找到每个触发器的结束位置,而不是开始位置。
实际上,我在过去做过这件事,但现在找不到解决方案了。

自R2017b以来,通过利用
'linear'
选项,可以比使用
查找(diff(…)
更简单一些。你仍然需要准备一个1。所以

>> [1, find(ischange(triggs, 'linear'))]
ans =
     1     6    12

所以,
find([true diff(triggs)~=1])
?是的,就是这样,谢谢你,路易斯:)