讓得到它一步一步來。
您有一個數組d
:
d=[3 2 4 2 2 2 3 5 1 1 2 1 2 2 2 2 2 9 2]
,並應用到它
q = diff([0 d 0] == 2);
這需要的[0 d 0] == 2
的衍生物。基本上它需要所有可在數字的衍生物2的[0 d 0] == 2
的結果是:
0 0 1 0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 0
可以看到,有1每當有在原來的矢量是2,並且它具有在0最後乞討和0。如果我們把這個衍生的q = diff([0 d 0] == 2)
:
q =
0 1 -1 1 0 0 -1 0 0 0 1 -1 1 0 0 0 0 -1 1 -1
你得到1,只要在原來的矢量2出現和-1消失時。最後一行分別找到1和-1,然後減去它們出現的索引,這樣你現在可以在它們之間有多少個數字。因爲1代表「數字2開始」,-1代表「連續數不超過2」,這會給你連續2個連續數的長度。
v = find(q == -1) - find(q == 1);
v=
1 3 1 5 1
有一個在開始時的單個2,則有一系列的第3個2S,然後另一單一個,那麼5來通過9分離,最後一個來。
給出向量中連續的'2'''的數量,'v = 1 3 1 5 1' – Adiel