MATLAB-supprimer les zéros de tête et de queue D'un vecteur

j'ai une fonction d'ondelette avec des zéros de tête et de queue. Je tiens à dépouiller tous les zéros qui se produisent avant ou après l'ondelette. Cependant, je ne voudrais pas supprimer des zéros dans la ondelette elle-même. Pour simplifier, disons que j'ai le vecteur 1x11 suivant:

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

après suppression des zéros de début et de fin, le vecteur doit être:

-2 -1 0 -1 -2

mes vecteurs réels sont grands et la performance est ma principale préoccupation. Je suis un MATLAB novice et serait appréciez tous les conseils sur la façon d'accomplir cette tâche aussi efficacement que possible.

21
demandé sur nedblorf 2011-03-30 19:31:16

2 réponses

Essayez ceci

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

find(x,1,'option') la commande vous donne le premier et le dernier indice non-zéro.

27
répondu Phonon 2011-03-30 15:35:11
i1 = find(X, 1, 'first')

vous donnera l'indice du premier élément non-zéro de X

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

vous donnera l'indice de la dernière. Puis

X(i1:i2)

vous donnera le tableau avec les zéros de tête et de queue dépouillés.

10
répondu Dima 2011-03-30 15:36:24