Ответ 1
Попробуйте это
y = x(find(x,1,'first'):find(x,1,'last'));
Команда find(x,1,'option')
дает вам первый и последний ненулевые индексы.
У меня есть вейвлет-функция с ведущими и конечными нулями. Я хотел бы удалить все нули, которые происходят до или после вейвлета. Однако я не хотел бы удалять любые нули внутри самого вейвлета. Чтобы упростить, скажем, у меня есть следующий вектор 1x11:
0 0 0 -2 -1 0 -1 -2 0 0 0
После удаления начального и конечного нулей вектор должен быть:
-2 -1 0 -1 -2
Мои фактические векторы большие, а производительность - моя главная задача. Я новичок MATLAB и буду благодарен за любые советы о том, как выполнить эту задачу максимально эффективно.
Попробуйте это
y = x(find(x,1,'first'):find(x,1,'last'));
Команда find(x,1,'option')
дает вам первый и последний ненулевые индексы.
i1 = find(X, 1, 'first')
даст вам индекс первого ненулевого элемента X
i2 = find(X, 1, 'last')
предоставит вам индекс последнего. Тогда
X(i1:i2)
предоставит вам массив с лишенным начальным и конечным нулями.