How to remove some certain rows in Matlab?

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 Kommentare

jgg
jgg am 22 Feb. 2016
Do you mean columns? Because no row in A has only ones?
Moe
Moe am 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.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Stephen23
Stephen23 am 22 Feb. 2016

0 Stimmen

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

Weitere Antworten (1)

jgg
jgg am 22 Feb. 2016
Bearbeitet: jgg am 22 Feb. 2016

0 Stimmen

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,:);

Kategorien

Gefragt:

Moe
am 22 Feb. 2016

Beantwortet:

am 22 Feb. 2016

Community Treasure Hunt

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

Start Hunting!

Translated by