Это три общих решения. Это помогает увидеть разницу.
x = round(rand(1,15000));
y = x;
tic,y(y==0) = [];toc
Elapsed time is 0.004398 seconds.
y = x;
tic,y = y(y~=0);toc
Elapsed time is 0.001759 seconds.
y = x;
tic,y = y(find(y));toc
Elapsed time is 0.003579 seconds.
Как вы должны видеть, самый дешевый способ - это прямой логический индекс, выбирающий элементы для сохранения. Поиск является более дорогим, поскольку matlab находит эти элементы, возвращает их список, а затем индексирует в векторе.