How to remove some certain rows in Matlab?

3 visualizzazioni (ultimi 30 giorni)
Moe
Moe il 22 Feb 2016
Risposto: Stephen23 il 22 Feb 2016
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 Commenti
jgg
jgg il 22 Feb 2016
Do you mean columns? Because no row in A has only ones?
Moe
Moe il 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.

Accedi per commentare.

Risposta accettata

Stephen23
Stephen23 il 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

Più risposte (1)

jgg
jgg il 22 Feb 2016
Modificato: jgg il 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,:);

Categorie

Scopri di più su Matrices and Arrays in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by