how to delete a row from a matrix

2 vues (au cours des 30 derniers jours)
nadia nadi
nadia nadi le 25 Oct 2015
Modifié(e) : Stephen23 le 25 Oct 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 commentaire
Jan
Jan le 25 Oct 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.

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 25 Oct 2015
Modifié(e) : Stephen23 le 25 Oct 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 commentaire
nadia nadi
nadia nadi le 25 Oct 2015
Modifié(e) : nadia nadi le 25 Oct 2015
Dear Stephen,
That's great, thanks a lot.
Nadia

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by