Подтвердить что ты не робот

MATLAB - удалить ведущие и отстающие нули из вектора

У меня есть вейвлет-функция с ведущими и конечными нулями. Я хотел бы удалить все нули, которые происходят до или после вейвлета. Однако я не хотел бы удалять любые нули внутри самого вейвлета. Чтобы упростить, скажем, у меня есть следующий вектор 1x11:

0 0 0 -2 -1 0 -1 -2 0 0 0

После удаления начального и конечного нулей вектор должен быть:

-2 -1 0 -1 -2

Мои фактические векторы большие, а производительность - моя главная задача. Я новичок MATLAB и буду благодарен за любые советы о том, как выполнить эту задачу максимально эффективно.

4b9b3361

Ответ 1

Попробуйте это

 y = x(find(x,1,'first'):find(x,1,'last'));

Команда find(x,1,'option') дает вам первый и последний ненулевые индексы.

Ответ 2

i1 = find(X, 1, 'first')

даст вам индекс первого ненулевого элемента X

i2 = find(X, 1, 'last') 

предоставит вам индекс последнего. Тогда

X(i1:i2)

предоставит вам массив с лишенным начальным и конечным нулями.