2
的起始(以及偏移):找到給出的以下單元陣列數序列
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
爲例),並確定方式上和偏移。然而,這種實現對我來說是'駭客'。
還有什麼其他方法可以有效地提取序列中的偏移和偏移?
你能解釋一下'[true〜x(1:end-1)]'的部分嗎? – memyself 2012-08-17 17:33:40
找到'x'中的位置從0到1的轉換,最初是'[0 x(1:end-1)] == false&x == true' (這是相同的)。你不能只用'x(1:end-1)== false&x(2:end)== true)',因爲那樣你會錯過'x(1)= true'的情況發病。 – 2012-08-17 17:37:30