在Matlab中求阵列中的第一个非连续元素
我有一个向量,“triggs”和我的触发器的索引号。每个触发器持续几毫秒,我需要找到每个触发器的起始位置 否则,我需要找到连续数组的第一个元素。 如果向量为: triggs=[12345151718192526272829] 我想要的结果是:1,6,12 这是我通常做的:在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 = 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])
?是的,就是这样,谢谢你,路易斯:)