Dear all,
I have matrix of binary with n=5
A=[0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
....
1 1 1 1 1]
but I only want to take a submatrix with 3 number 1 inside
subA=[ 0 1 1 0 1
1 0 1 0 1
0 1 1 1 0
........]
and
subB=[0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0
0 0 0 1 1
.....
0 1 1 0 1
1 0 1 0 1
0 1 1 1 0
........]
. Couyld you help me? Thanks

 Accepted Answer

James Tursa
James Tursa on 19 May 2017
Edited: James Tursa on 19 May 2017
subA = A(sum(A,2)==3,:);
For subB it is not entirely clear to me what you want. Do you want the rows of A arranged so that all rows with one 1 come first, then all rows with two 1's, then all rows with three 1's? Or what? E.g., this?
subB = [A(sum(A,2)==1,:);...
A(sum(A,2)==2,:);...
A(sum(A,2)==3,:);...
A(sum(A,2)==4,:);...
A(sum(A,2)==5,:)];

2 Comments

in subB, I want with 5 colums but number of 1 in a row is less than 3
James Tursa
James Tursa on 19 May 2017
Edited: James Tursa on 19 May 2017
Your words do not match your example. Maybe a truncated version of the above?
subB = [A(sum(A,2)==1,:);...
A(sum(A,2)==2,:);...
A(sum(A,2)==3,:)];
or
subB = [A(sum(A,2)==1,:);...
A(sum(A,2)==2,:)];

Sign in to comment.

More Answers (0)

Tags

Asked:

on 19 May 2017

Edited:

on 19 May 2017

Community Treasure Hunt

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

Start Hunting!