Questo dovrebbe risolvere il tuo problema.
matrix=randi(100,[50 50]);
rows2remove=[2 4 46 50 1];
cols2remove=[1 2 5 8 49];
matrix(rows2remove,:)=[];
matrix(:,cols2remove)=[];
Al secondo pensiero, se si dispone di indici, allora prima convertire tali indici a pedice utilizzando la funzione ind2sub
come:
[rows2remove,cols2remove] = ind2sub(size(matrix),VecOfIndices);
Ora si otterrà riga e gli indici di colonna di elementi che necessitano di essere rimosso. I singoli elementi non possono essere rimossi da una matrice. Quindi presumo che sia necessario rimuovere l'intera colonna e riga. Ciò può essere fatto come:
rows2remove=unique(rows2remove);
cols2remove=unique(cols2remove);
matrix(rows2remove,:)=[];
matrix(:,cols2remove)=[];
Se si desidera rimuovere i singoli elementi quindi utilizzare un array di celle o sostituire questi elementi con un certo valore obsolete quali 9999.
fonte
2013-03-14 23:21:37
Supponiamo che se entro in un certo numero dico 5, voglio rimuovere la '5a riga' e la' 5a colonna' da 'matrix', puoi suggerire un qualsiasi' codice a riga singola 'per farlo? – noufal
Ho una matrice molto grande e non riesco a copiare la mia matrice per rimuovere alcune parti di essa, ho bisogno di usare i dati e cancellare i dati che uso e creare un'altra matrice da quello spazio, come dovrei farlo? – Ehsan
@Ehsan Perché hai bisogno di fare la sua seconda copia? Questo dovrebbe funzionare: 'matrix (rows2remove,:) = []; matrice (:, cols2remove) = []; ' –