给定以下单元格数组:
strings = {'str1', 'str2', 'str2', 'str1', 'str2', 'str2', 'str1', 'str1', 'str2'};
我想找到特定值的开始和偏移(第一次出现和最后一次出现)。例如,以下是“str1”的起始和偏移:
onset_str1 = [1, 4, 7, ];
offset_str1 = [1, 4, 8, ];
以下是“str2”的开启和偏移:
onset_str2 = [2, 5, 9];
offset_str2 = [3, 6, 9];
目前我做这样的事情:
[blub, ia, ic] = unique(strings, 'first');
all_str1 = find(ic == 1); % 1 4 7 8
all_str2 = find(ic == 2); % 2 3 5 6 9
使用all_str1
andall_str2
然后我会寻找连续的值(diff
例如使用)并确定 on 和 offsets 的方式。然而,这种实现对我来说感觉很“骇人听闻”。
还有哪些其他方法可以有效地提取序列中的 on 和 offset?