Ich möchte einige Spalten und Zeilen aus einer großen Matrix entfernen. Dies sind die Spalten und die Zeilen, die alle Nullen enthalten. Gibt es eine Funktion in MATLAB, die das für Sie schnell erledigt? Meine Matrizen sind spärlich. Ich tue so:Entfernen Sie Nullen Spalte und Zeilen aus einer Matrix Matlab
% To remove all zero columns from A
ind = find(sum(A,1)==0) ;
A(:,ind) = [] ;
% To remove all zeros rows from A
ind = find(sum(A,2)==0) ;
A(ind,:) = [] ;
Es wäre schön, eine einzige Zeile Code dafür zu haben, wie ich immer wieder diese Art von Aufgabe tun kann. Dank
Ihr Code sieht gut aus. Wenn Ihre Matrizen spärlich sind, kann es jedoch schneller sein, wenn Sie die Nicht-Null-Elemente kopieren (weiß nicht, nur eine Vermutung): 'B = A (~ ind, :)'. –
Mögliches Duplikat von [Entfernen von Nullen aus einer Matrix - Nicht sparsam] (http://stackoverflow.com/questions/738438/removing-zeros-from-a-matrix-not-sparse) – GameOfThrows
Verwenden von 'all (A, 1) 'oder' all (A, 2) 'könnte schneller sein als' sum (A, 1) ', aber ich habe es nicht überprüft. – Max