#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. да, я думаю, вы только что сделали… Я просто точно отвечал на вопрос, никаких обобщений.