tablas - ¿Puede alguien explicar este ejemplo de eliminar elementos de una matriz en MATLAB?
tablas en matlab guide (2)
El ejemplo que dio muestra indexación lineal . Cuando tienes una matriz multidimensional y le das un único escalar o vector, indexa a lo largo de cada columna de arriba a abajo y de izquierda a derecha. Aquí hay un ejemplo de indexación en cada dimensión:
mat = [1 4 7; ...
2 5 8; ...
3 6 9];
submat = mat(1:2, 1:2);
submat
contendrá la esquina superior izquierda de la matriz: [1 4; 2 5]
[1 4; 2 5]
. Esto se debe a que el primer 1:2
en el subíndice accede a la primera dimensión (filas) y el segundo 1:2
accede a la segunda dimensión (columnas), extrayendo un cuadrado de 2 por 2. Si no proporciona un índice para cada dimensión, separado por comas, sino un solo índice, MATLAB indexará en la matriz como si fuera un gran vector de columna:
submat = mat(3, 3); % "Normal" indexing: extracts element "9"
submat = mat(9); % Linear indexing: also extracts element "9"
submat = mat([1 5 6]); % Extracts elements "1", "5", and "6"
Consulte la documentación de MATLAB para más detalles.
El siguiente ejemplo aparece en el tutorial de MATLAB:
X = [16 2 13;
5 11 8;
9 7 12;
4 14 1]
El uso de un único subíndice elimina un único elemento o secuencia de elementos y cambia la forma de los elementos restantes en un vector de fila. Asi que:
X(2:2:10) = []
resultados en:
X = [16 9 2 7 13 12 1]
Misteriosamente, toda la 2da fila y los primeros dos elementos en la 4ta fila se han eliminado, pero no puedo ver la correspondencia entre la posición de los elementos eliminados y el vector de índice 2:2:10
. ¿Alguien puede explicar?
Es muy sencillo.
Básicamente comienza desde el segundo elemento en este ejemplo y va hasta el décimo elemento (columna sabia) en pasos de 2 y elimina los elementos correspondientes. Los elementos restantes resultan en un vector de fila.