我有一个向量,"触发器";我的触发器的索引号。每个触发器持续几毫秒,我需要找到每个触发器的起始位置。
换句话说,我需要找到连续数组的第一个元素。如果矢量为:触发=[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