MATLAB - Удалить начальные и конечные нули из вектора - PullRequest
21 голосов
/ 30 марта 2011

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

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

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

-2 -1 0 -1 -2

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

Ответы [ 2 ]

27 голосов
/ 30 марта 2011

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

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

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

10 голосов
/ 30 марта 2011
i1 = find(X, 1, 'first')

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

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

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

X(i1:i2)

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

...