22

I have a wavelet function with leading and trailing zeros. I would like to strip all the zeros which occur before or after the wavelet. However, I would not like to remove any zeros within the wavelet itself. To simplify, let's say I have the following 1x11 vector:

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

After removing leading and trailing zeros the vector should be:

-2 -1 0 -1 -2

My actual vectors are large and performance is my primary concern. I am a MATLAB novice and would appreciate any tips on how to accomplish this task as efficiently as possible.

2 Answers 2

28

Try this

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

The find(x,1,'option') command gives you first and last non-zero indices.

1
  • 4
    what if i want to do it with a matrix?
    – Moh
    Commented Jul 4, 2012 at 7:14
11
i1 = find(X, 1, 'first')

will give you the index of the first non-zero element of X

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

will give you the index of the last one. Then

X(i1:i2)

will give you the array with the leading and trailing zeros stripped.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.