how to delete a row from a matrix

2 visualizaciones (últimos 30 días)
nadia nadi
nadia nadi el 25 de Oct. de 2015
Editada: Stephen23 el 25 de Oct. de 2015
Dear,
I need to delete rows with all zeros from B and corresponding ones from b, where Bx>=b, so I wrote this code but I got error because of the index, can anyone check it for me please and if there is any faster way will be very helpful. Thanks in advance.
Nadia
B=[
1 0 0 0 0 0 0
0 0 0 1 0 0 0
0 0 0 0 0 0 0
0 1 0 1 0 0 0
0 0 0 0 1 1 0
0 1 0 0 0 0 1
0 0 0 0 0 0 0
0 0 0 0 0 0 1
0 0 1 0 0 0 0];
b=ones(size(B,1),1);
for i=1:size(B,1)
while B(i,:)==0
B(i,:)=[]
b(i,:)=[]
end
end
  1 comentario
Jan
Jan el 25 de Oct. de 2015
The error is caused by running the for i loop until the original size of B, but B has been shortend already inside the loop.

Iniciar sesión para comentar.

Respuesta aceptada

Stephen23
Stephen23 el 25 de Oct. de 2015
Editada: Stephen23 el 25 de Oct. de 2015
When you use vectorized code then this task is simple, and there is no need for complicated loops:
>>B(any(B,2),:)
ans =
1 0 0 0 0 0 0
0 0 0 1 0 0 0
0 1 0 1 0 0 0
0 0 0 0 1 1 0
0 1 0 0 0 0 1
0 0 0 0 0 0 1
0 0 1 0 0 0 0
  1 comentario
nadia nadi
nadia nadi el 25 de Oct. de 2015
Editada: nadia nadi el 25 de Oct. de 2015
Dear Stephen,
That's great, thanks a lot.
Nadia

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

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

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by