Vorrei rimuovere alcune colonne e righe da una matrice grande. Quelle sono le colonne e le righe che hanno tutti i valori di zeri. C'è qualche funzione in MATLAB che può farlo per te abbastanza velocemente? Le mie matrici sono rare. Sto facendo in questo modo:Rimuovere le colonne di zeri e le righe da una matrice 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,:) = [] ;
Sarebbe bello avere una riga di codice per questo come io possa fare questo tipo di operazione più volte. Grazie
Il tuo codice sembra buono. Se le tue matrici sono sparse, potrebbe essere più veloce quando copi gli elementi diversi da zero (non lo so, solo un'ipotesi): 'B = A (~ ind, :)'. –
Possibile duplicato di [Eliminazione di zeri da una matrice - Non sparse] (http://stackoverflow.com/questions/738438/removing-zeros-from-a-matrix-not-sparse) – GameOfThrows
utilizzando 'all (A, 1) 'o' all (A, 2) 'potrebbe essere più veloce di' sum (A, 1) ', ma non ho controllato. – Max