MATLAB Answers

0

i need to delete a zero from a single row 10 column vector

Asked by Omar Almahallawy on 28 Apr 2019
Latest activity Edited by Image Analyst
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

  0 Comments

Sign in to comment.

3 Answers

Answer by Stephan
on 28 Apr 2019
 Accepted Answer

A = [0 1 2 3 0 5]
A = A(A~=0)

  3 Comments

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...
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

  2 Comments

v(indexes(1) = []; % Do the deletion.
^--- missed a paranthesis
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);

  0 Comments

Sign in to comment.



Translated by