Найти индексы появления упорядоченного массива в векторе — Matlab

#arrays #matlab #find

#массивы #matlab #Найти

Вопрос:

У меня есть два массива a = [1,-1,0,0,1,-1,1,-1,0];b = [1,-1];

Я хочу найти вхождение b в a (а не какое-либо из значений b в a). Я хочу, чтобы за 1 следовали -1 индексы вхождения в a.

Ожидаемый результат будет [1,5,7] .

Я пробовал ismember find использовать функции и в Matlab. Не получил желаемого результата.

Комментарии:

1. Каким будет ожидаемый результат?

2. для меня это похоже на conv решение…

3. @Divakar обновил вопрос для ожидаемого результата.

Ответ №1:

Strfind делает именно то, что вы хотите: strfind(a,b) в документации не упоминается, но вы можете использовать его как с удвоениями, так и с символами.

Комментарии:

1. Превосходный ответ @Daniel. Вы можете написать статью о «недокументированном matlab».

Ответ №2:

вот один из способов:

  find(conv(a,b,'same')==-2)
 

Комментарии:

1. Возможно, стоит упомянуть, что это может привести к сбою, если в vector разрешены другие числа (кроме -1, 0 и 1) a

2. да, я думаю, вы только что сделали… Я просто точно отвечал на вопрос, никаких обобщений.