2016-08-02 30 views
2

Ich habe eine große Matrix in MATLAB. Jetzt enthalten einige Zeilen nur Nullen.Finden Sie Zeilen, die nur Nullen enthalten

Kann ich die Funktion find verwenden, um alle Zeilen zu finden, die nur Nullen enthalten?

+0

Welche Sprache verwenden Sie? – Mureinik

+0

Matlab. Vergessen, es hinzuzufügen. Vielen Dank. – henry

Antwort

3

Sie können any verwenden, um Zeilen mit Nicht-Nullen zu finden und das Ergebnis dann zu negieren. Wir verwenden die zweite Eingabe, um anzugeben, dass die Operation auf die Spalten angewendet werden soll (2. Dimension).

row_has_all_zeros = ~any(data, 2) 

Wenn Sie die Indizes anstelle des logischen Array möchten, gelten nur find dem Ergebnis:

indices = find(row_has_all_zeros); 
+0

Vielen Dank !! – henry

0

Wenn Sie möchten, können Sie, indem zunächst eine höhere Geschwindigkeit (je nach Datenmenge) erhalten suchen für partielle Null-Zeilen (in diesem Beispiel Länge 10) und weiter mit der Auswahl von Zeilen.

row_has_first10_zeros = sum(data(:,1:10),2); 
row_has_all_zeros = sum(data(~rows,:),2); 

indices = find(~row_has_first10_zeros) 
indices = indices(~row_has_all_zeros) 
0

n = length(matrix);

Diese Zeile wird die Anzahl der Zeilen in einer Matrix geben.

ids = setdiff(1:n,find(sum(matrix,2)));

ids geben Sie die Zeilennummern (Indizes), die nur Nullen enthalten.

Verwandte Themen