how to delete a row from a matrix

2 views (last 30 days)
nadia nadi
nadia nadi on 25 Oct 2015
Edited: Stephen23 on 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 Comment
Jan
Jan on 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.

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 25 Oct 2015
Edited: Stephen23 on 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 Comment
nadia nadi
nadia nadi on 25 Oct 2015
Edited: nadia nadi on 25 Oct 2015
Dear Stephen,
That's great, thanks a lot.
Nadia

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!