matrix - for - octave plot



Entferne eine Spalte aus einer Matrix in GNU Octave (3)

In GNU Octave möchte ich in der Lage sein, bestimmte Spalten aus einer Matrix zu entfernen. Im Interesse der Allgemeinheit. Ich möchte auch in der Lage sein, bestimmte Reihen von einer Matrix zu entfernen.

Angenommen, ich habe Folgendes:

mymatrix = eye(5)

mymatrix =

Diagonal Matrix

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1

Ich möchte Spalten 2 und 4 entfernen, aber wenn ich Spalte 2 entferne, hat sich die Position von Spalte 4 in Spalte 3 verschoben, und das macht meinen Kopf weh. Es muss einen besseren Weg geben!


Answer #1

So entfernen Sie mehrere Spalten in der Oktave:

So entfernen Sie die Spalten 2 und 4:

columns_to_remove = [2 4];
matrix(:,columns_to_remove)=[]

Illustriert:

mymatrix = eye(5)
mymatrix =

   1   0   0   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   0   0   1



columns_to_remove = [2 4];

mymatrix(:,columns_to_remove)=[]


mymatrix =

   1   0   0
   0   0   0
   0   1   0
   0   0   0
   0   0   1 

Answer #2

Die umgekehrte Methode, dies zu tun:

columns_you_want_to_keep = [1, 3, 5]
new_matrix = my_matrix(:,columns_you_want_to_keep)

Answer #3

GNU Octave lösche Spalten 2 und 4 aus einer Matrix

mymatrix = eye(5); 
mymatrix(:,[2,4]) = []; 
disp(mymatrix)

Drucke:

1   0   0
0   0   0
0   1   0
0   0   0
0   0   1

GNU Octave lösche Zeilen 2 und 4 aus einer Matrix:

mymatrix = eye(5); 
mymatrix([2,4],:) = [];
disp(mymatrix) 

Drucke:

1   0   0   0   0
0   0   1   0   0
0   0   0   0   1

Zeit Komplexität

Die CPU-Komplexität von GNU Octave für Slicing und Broadcasting ist hier eine schnelle lineare Zeit O(n * c) wobei n die Anzahl der Zeilen und ca die konstante Anzahl der verbleibenden Zeilen ist. Es ist C-Level-Single-Core-vektorisiert, aber nicht parallel.

Speicherkomplexität

Die Komplexität des Arbeitsgedächtnisses ist linear: O(n * 2) C erzeugt einen Klon der zwei Objekte, iteriert über jedes Element und löscht dann das Original.

Die einzige Zeit Geschwindigkeit wird ein Problem sein, wenn Ihre Matrizen sind unrealistisch breit, groß, oder haben eine Reihe von Dimensionen, die Ihren schnellen Speicher ausblasen, und die Geschwindigkeit ist durch die Übertragungsgeschwindigkeit zwischen Festplatte und Speicher begrenzt.