Remove zeros from a vector from a specific position

조회 수: 1 (최근 30일)
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio 2023년 8월 18일
댓글: the cyclist 2023년 8월 18일
Hello, I have the following vector as example:
X=[0, 0; 0.02, 2.3;0.04, 0.4; 0, 0; 0.06, 2.5; 0.08, 3.6; 0, 0; 0.10, 2.5]
I want to remove the zeros and I only want to keep the zeros at the beginning and obtain the following matrix:
X=[0, 0; 0.02, 2.3;0.04, 0.4; 0.06, 2.5; 0.08, 3.6; 0.10, 2.5]
I know this option
X( all(~X,2), : ) = [];
which eliminates all the zeros and then I can add the zeros again at the beggining using
X=vertcat([0 0],X);
but there must be a direct way to do it. I would appreciate the help.
  댓글 수: 2
the cyclist
the cyclist 2023년 8월 18일
Will there always be at least one row of zeros at the beginning?
If so, will there always be exactly one row of zeros at the beginning?
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio 2023년 8월 18일
Yes, there will be always zeros at the beginning.

댓글을 달려면 로그인하십시오.

채택된 답변

Bruno Luong
Bruno Luong 2023년 8월 18일
remove = all(~X,2);
remove(1) = false;
X(remove,:) = [];
  댓글 수: 6
Jorge Luis Paredes Estacio
Jorge Luis Paredes Estacio 2023년 8월 18일
THANK YOU VERY MUCH. :).
the cyclist
the cyclist 2023년 8월 18일
FYI, this solution will not work if there are multiple rows of leading zeros to keep. (That's why I asked if there was always exactly one row of leading zeros.) For example,
X = [0, 0;
0, 0;
2, 3;
5, 7;
0, 0];
X([false;all(~X(2:end,:),2)],:)=[]
X = 3×2
0 0 2 3 5 7

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by