在Matlab中查找数组中的第一个非连续元素



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

换句话说,我需要找到连续数组的第一个元素。如果矢量为:触发=[1 2 3 4 5 15 16 17 19 20 25 26 27 28 29]

我想要的结果必须是: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以来,您可以通过利用ischange'linear'选项,比使用find(diff(...))稍微简单一点。你仍然需要准备一个1。所以,

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

相关内容

  • 没有找到相关文章

最新更新