MATLAB Answers

How to remove some certain rows in Matlab?

13 views (last 30 days)
Matrix A is as follows:
A = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;73,1,1,1,1;53,1,1,3,2;98,1,1,1,1];
I want to find those rows in matrix A that only has array "1" and remove them from matrix A (produce new matrix C without those rows) and store them in the matrix B.
B = [45,1,1,1,2;74,1,2,3,1;75,1,1,3,1;53,1,1,3,2];
C = [73,1,1,1,1;98,1,1,1,1]

  2 Comments

jgg
jgg on 22 Feb 2016
Do you mean columns? Because no row in A has only ones?
Moe
Moe on 22 Feb 2016
jgg, column 2 to column 5. Remove the row if there is only array "1" in for all specified columns in on a row.

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 22 Feb 2016
Simple logical operations are all that is required:
>> idx = all(1==A(:,2:end),2);
>> B = A(~idx,:)
B =
45 1 1 1 2
74 1 2 3 1
75 1 1 3 1
53 1 1 3 2
>> C = A(idx,:)
C =
73 1 1 1 1
98 1 1 1 1

  0 Comments

Sign in to comment.

More Answers (1)

jgg
jgg on 22 Feb 2016
Edited: jgg on 22 Feb 2016
Ah, I think I understand: the first column are IDs or something. This should work, using the ismember function with the rows option:
data = A(:,2:end);
ind = ismember(data,ones(1,size(data,2)),'rows');
C = A(ind,:);
B = A(~ind,:);

  0 Comments

Sign in to comment.