while resueltos programas programacion para matrices lenguaje hechos graficas graficar espaƱol ejercicios comandos matrix octave

matrix - resueltos - Eliminar una columna de una matriz en GNU Octave



programas hechos en octave (4)

Cómo eliminar múltiples columnas en octava:

Cómo eliminar las columnas 2 y 4:

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

Ilustrado:

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

En GNU Octave, quiero poder eliminar columnas específicas de una matriz. En interés de la generalidad. También quiero poder eliminar filas específicas de una matriz.

Supongamos que tengo esto:

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

Quiero eliminar las columnas 2 y 4, pero cuando elimino la columna 2, la posición de la columna 4 se ha movido a la columna 3, y eso me daña la cabeza. ¡Tiene que haber una mejor manera!


El método inverso de hacer esto:

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


En caso de que no conozca el número exacto de columnas o filas, puede usar el índice mágico "final", por ejemplo:

mymatrix(2:end,:) % all but first row

Esto también le permite cortar filas o columnas de una matriz sin tener que reasignarla a una nueva variable.


GNU Octave elimina las columnas 2 y 4 de una matriz

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

Huellas dactilares:

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

GNU Octave elimina las Filas 2 y 4 de una Matriz:

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

Huellas dactilares:

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

Complejidad del tiempo

La complejidad de la CPU de GNU Octave para cortar y difundir aquí es un tiempo lineal rápido O(n * c) donde n es el número de filas y ca un número constante de filas que permanecen. Es de nivel C de un solo núcleo vectorizado pero no paralelo.

Complejidad de la memoria

La complejidad de la memoria de trabajo es lineal: O(n * 2) C hace un clon de los dos objetos, itera sobre cada elemento y luego elimina el original.

La única vez que la velocidad será un problema es si sus matrices son irrealmente anchas, altas o tienen varias dimensiones que hacen volar su memoria rápida, y la velocidad está limitada por la velocidad de transferencia entre el disco y la memoria.