2011-03-30 26 views
20

Tengo una función wavelet con ceros al principio y al final. Me gustaría quitar todos los ceros que aparecen antes o después de la wavelet. Sin embargo, no me gustaría eliminar ningún ceros dentro de la wavelet en sí. Para simplificar, digamos que tengo el siguiente vector 1x11:MATLAB - Eliminar ceros iniciales y finales de un vector

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

Después de la eliminación de ceros iniciales y finales del vector debe ser:

-2 -1 0 -1 -2 

Mis vectores reales son grandes y el rendimiento es mi principal preocupación. Soy un principiante de MATLAB y agradecería cualquier consejo sobre cómo llevar a cabo esta tarea de la manera más eficiente posible.

Respuesta

24

probar este

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

El comando find(x,1,'option') le da primero y el último índices distintos de cero.

+3

¿y si quiero hacerlo con una matriz? – Moh

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

le dará el índice del primer elemento no nulo de X

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

le dará el índice del último. Luego

X(i1:i2) 

le dará la matriz con los ceros al principio y al final eliminados.

Cuestiones relacionadas