次のセル配列が与えられます:
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
して、次に(たとえばall_str2
を使用して)連続する値を探し、その方法でオンとオフセットを決定します。diff
しかし、この種の実装は私には「ハック」と感じます。
シーケンス内のオンとオフセットを効率的に抽出する他の方法はありますか?