Extraction of non zero rows from a matrix

27 visualizaciones (últimos 30 días)
Satinath Debnath
Satinath Debnath el 3 de Nov. de 2021
Comentada: Satinath Debnath el 3 de Nov. de 2021
I have a 12x3 matrix data in each of my measurement epoch. Sometimes, some of the rows are zero indicating no data in the channel. So, I want to extract only those rows without zero. I am using matlab find and index operator but it gives me the column vector instead of rows. How can I extract non-zero rows using simple index operator and without any loop. Any help would be appreciated. I have attached the snapshots of my work so far.

Respuesta aceptada

Chris
Chris el 3 de Nov. de 2021
Editada: Chris el 3 de Nov. de 2021
A = [magic(3);zeros(1,3)]
A = 4×3
8 1 6 3 5 7 4 9 2 0 0 0
svp = A~=0
svp = 4×3 logical array
1 1 1 1 1 1 1 1 1 0 0 0
extracted = reshape(A(svp),[],3)
extracted = 3×3
8 1 6 3 5 7 4 9 2
If there is a possibiity of finding zeros in a nonzerow row, you would want to do something like this:
extracted = A(~prod(A==0,2),:)
extracted = 3×3
8 1 6 3 5 7 4 9 2
  3 comentarios
Chris
Chris el 3 de Nov. de 2021
Editada: Chris el 3 de Nov. de 2021
I just noticed that both our solutions don't allow for zeros in a nonzero row. I've posted a more correct solution at the end of my answer.
Satinath Debnath
Satinath Debnath el 3 de Nov. de 2021
@Chris. OKay. Thank you.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by