Asked by Omar Almahallawy
on 28 Apr 2019

how can i delete this first 0

1.0e+03 *

0 1.0794 0.9376 0.8301 0.7477 0.6838 0.5939 0.5366 0.4988 0.4732

so it would look like this

1.0e+03 *

1.0794 0.9376 0.8301 0.7477 0.6838 0.5939 0.5366 0.4988 0.4732

Answer by Stephan
on 28 Apr 2019

Accepted Answer

A = [0 1 2 3 0 5]

A = A(A~=0)

dpb
on 28 Apr 2019

Or, the other Matlab idiom you'll see is

A(A==0)=[];

Or, to answer the original question with the qualifier of "only first zero" in Stephan's example data,

A(find(A==0,1))=[];

as the other two will eliminate all zeros, not just first...

Omar Almahallawy
on 28 Apr 2019

Thnak you!!

madhan ravi
on 28 Apr 2019

To delete the first zero entry ONLY:

A(find(A==0,1,'first'))=[];

Sign in to comment.

Answer by Image Analyst
on 28 Apr 2019

Edited by Image Analyst
on 28 Apr 2019

To delete only the FIRST zero (not all zeros) here is one way.

indexes = find(v == 0);

if ~isempty(indexes) % Only try to delete if we actually FOUND a zero!

v(indexes(1)) = []; % Do the deletion.

end

madhan ravi
on 28 Apr 2019

v(indexes(1) = []; % Do the deletion.

^--- missed a paranthesis

Image Analyst
on 28 Apr 2019

You're right - thanks - fixed.

Sign in to comment.

Answer by dpb
on 28 Apr 2019

As we've covered the other cases pretty thoroughly...

For the specific input vector OP showed where it is almost certain it is known a priori the first value in the array is zero from outside knowledge of what created the vector in the first place, simply

A=A(2:end);

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.