Похоже, что проблема кодирования во время выполнения (проверка here). Вы можете изменить решение Мохсена, чтобы получить желаемый результат. (т. е. я не претендую на кредит для этого кода, но, на мой взгляд, этот вопрос не является дубликатом).
Вот код:
a =[8,8,9,9,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]
F=find(diff([a(1)-1, a]));
С diff(a)
возвращает массив длины (длина (а) -1), мы хотим, чтобы добавить значение в начале (т.е. a(1)
), чтобы получить вектор такого же размера, как a
. Здесь мы вычитаем 1 так, что, как упоминалось в @surgical_tubing, команда find
эффективно находит ее, потому что она ищет ненулевые элементы, поэтому мы хотим убедиться, что значение не равно нулю.
Следовательно diff([a(1)-1, a])
выглядит следующим образом:
Columns 1 through 8
1 0 1 0 -8 0 1 0
Columns 9 through 16
1 0 1 0 1 0 1 0
Columns 17 through 20
1 0 1 0
Теперь, найдя повторяющиеся элементы, индексируемых обратно в a
с позициями найденных find
:
newa=a(F)
и выход:
newa =
Columns 1 through 8
8 9 1 2 3 4 5 6
Columns 9 through 10
7 8
так ответ вам помог? –
Да, извините за отсутствие маркировки, как ответили. –
уверен, что мне было интересно, помогло ли оно спасибо :) –