MATLAB - Matrices
Todas las variables de todos los tipos de datos en MATLAB son matrices multidimensionales. Un vector es un arreglo unidimensional y una matriz es un arreglo bidimensional.
Ya hemos discutido vectores y matrices. En este capítulo, discutiremos arreglos multidimensionales. Sin embargo, antes de eso, analicemos algunos tipos especiales de arreglos.
Matrices especiales en MATLAB
En esta sección, discutiremos algunas funciones que crean algunos arreglos especiales. Para todas estas funciones, un solo argumento crea una matriz cuadrada, los argumentos dobles crean una matriz rectangular.
Los ceros() la función crea una matriz de todos los ceros −
Por ejemplo −
Demostración en vivozeros(5)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Los unos() la función crea una matriz de todos unos −
Por ejemplo −
Demostración en vivoones(4,3)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = 1 1 1 1 1 1 1 1 1 1 1 1
El ojo() función crea una matriz de identidad.
Por ejemplo −
Demostración en vivoeye(4)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
El rand() La función crea una matriz de números aleatorios uniformemente distribuidos en (0,1) −
Por ejemplo −
Demostración en vivorand(3, 5)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = 0.8147 0.9134 0.2785 0.9649 0.9572 0.9058 0.6324 0.5469 0.1576 0.4854 0.1270 0.0975 0.9575 0.9706 0.8003
Un Cuadrado Mágico
Un cuadrado mágico es un cuadrado que produce la misma suma, cuando sus elementos se suman por filas, por columnas o en diagonal.
La magia() La función crea una matriz de cuadrados mágicos. Se necesita un argumento singular que da el tamaño del cuadrado. El argumento debe ser un escalar mayor o igual a 3.
Demostración en vivomagic(4)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1
Matrices multidimensionales
Una matriz que tiene más de dos dimensiones se denomina matriz multidimensional en MATLAB. Los arreglos multidimensionales en MATLAB son una extensión de la matriz bidimensional normal.
Generalmente, para generar una matriz multidimensional, primero creamos una matriz bidimensional y la extendemos.
Por ejemplo, creemos una matriz bidimensional a.
Demostración en vivoa = [7 9 5; 6 1 9; 4 3 2]
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
a = 7 9 5 6 1 9 4 3 2
La matriz a es una matriz de 3 por 3; podemos agregar una tercera dimensión a a , proporcionando los valores como −
Demostración en vivoa(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
a = ans(:,:,1) = 0 0 0 0 0 0 0 0 0 ans(:,:,2) = 1 2 3 4 5 6 7 8 9
También podemos crear arreglos multidimensionales usando las funciones ones(), zeros() o rand().
Por ejemplo,
Demostración en vivob = rand(4,3,2)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
b(:,:,1) = 0.0344 0.7952 0.6463 0.4387 0.1869 0.7094 0.3816 0.4898 0.7547 0.7655 0.4456 0.2760 b(:,:,2) = 0.6797 0.4984 0.2238 0.6551 0.9597 0.7513 0.1626 0.3404 0.2551 0.1190 0.5853 0.5060
También podemos usar el gato() función para construir arreglos multidimensionales. Concatena una lista de matrices a lo largo de una dimensión específica −
La sintaxis de la función cat() es −
B = cat(dim, A1, A2...)
donde,
-
B es la nueva matriz creada
-
A1 , A2 , ... son las matrices a concatenar
-
tenue es la dimensión a lo largo de la cual se concatenan las matrices
Ejemplo
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivoa = [9 8 7; 6 5 4; 3 2 1]; b = [1 2 3; 4 5 6; 7 8 9]; c = cat(3, a, b, [ 2 3 1; 4 7 8; 3 9 0])
Cuando ejecuta el archivo, muestra −
c(:,:,1) = 9 8 7 6 5 4 3 2 1 c(:,:,2) = 1 2 3 4 5 6 7 8 9 c(:,:,3) = 2 3 1 4 7 8 3 9 0
Funciones de matriz
MATLAB proporciona las siguientes funciones para ordenar, rotar, permutar, remodelar o cambiar el contenido de la matriz.
Función | Propósito |
---|---|
longitud | Longitud del vector o dimensión de matriz más grande |
ndims | Número de dimensiones de matriz |
número | Número de elementos de matriz |
tamaño | Dimensiones de matriz |
iscolumna | Determina si la entrada es un vector de columna |
está vacío | Determina si la matriz está vacía |
matriz | Determina si la entrada es matriz |
isrow | Determina si la entrada es un vector de fila |
escalar | Determina si la entrada es escalar |
esvector | Determina si la entrada es vectorial |
blkdiag | Construye matriz diagonal de bloques a partir de argumentos de entrada |
circshift | Desplaza la matriz circularmente |
ctransposición | Transpuesta conjugada compleja |
diag | Matrices diagonales y diagonales de matriz |
flipdim | Voltea la matriz a lo largo de la dimensión especificada |
fliplr | Voltea la matriz de izquierda a derecha |
flipud | Voltea la matriz de arriba hacia abajo |
ipermute | Dimensiones permutadas inversas de matriz N-D |
permutar | Reorganiza las dimensiones de la matriz N-D |
repmat | Replicas y matriz de teselas |
reformar | Remodela matriz |
rot90 | Gira la matriz 90 grados |
shiftdim | Desplaza las dimensiones |
clasificado | Determina si los elementos del conjunto están ordenados |
ordenar | Ordena los elementos de la matriz en orden ascendente o descendente |
sortrows | Ordena las filas en orden ascendente |
apretar | Elimina dimensiones singleton |
transponer | Transponer |
vectorizar | Vectoriza la expresión |
Ejemplos
Los siguientes ejemplos ilustran algunas de las funciones mencionadas anteriormente.
Longitud, Dimensión y Número de elementos −
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivox = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % length of x vector y = rand(3, 4, 5, 2); ndims(y) % no of dimensions in array y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % no of elements in s
Cuando ejecuta el archivo, muestra el siguiente resultado −
ans = 8 ans = 4 ans = 23
Desplazamiento circular de los elementos del arreglo −
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivoa = [1 2 3; 4 5 6; 7 8 9] % the original array a b = circshift(a,1) % circular shift first dimension values down by 1. c = circshift(a,[1 -1]) % circular shift first dimension values % down by 1 % and second dimension values to the left % by 1.
Cuando ejecuta el archivo, muestra el siguiente resultado −
a = 1 2 3 4 5 6 7 8 9 b = 7 8 9 1 2 3 4 5 6 c = 8 9 7 2 3 1 5 6 4
Ordenar matrices
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivov = [ 23 45 12 9 5 0 19 17] % horizontal vector sort(v) % sorting v m = [2 6 4; 5 3 9; 2 0 1] % two dimensional array sort(m, 1) % sorting m along the row sort(m, 2) % sorting m along the column
Cuando ejecuta el archivo, muestra el siguiente resultado −
v = 23 45 12 9 5 0 19 17 ans = 0 5 9 12 17 19 23 45 m = 2 6 4 5 3 9 2 0 1 ans = 2 0 1 2 3 4 5 6 9 ans = 2 4 6 3 5 9 0 1 2
Matriz de celdas
Los arreglos de celdas son arreglos de celdas indexadas donde cada celda puede almacenar un arreglo de diferentes dimensiones y tipos de datos.
La celda La función se utiliza para crear una matriz de celdas. La sintaxis de la función de celda es −
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Dónde,
-
C es la matriz de celdas;
-
tenue es un entero escalar o vector de enteros que especifica las dimensiones de la matriz de celdas C;
-
dim1, ... , dimN son enteros escalares que especifican las dimensiones de C;
-
obj es uno de los siguientes −
- matriz u objeto Java
- matriz .NET de tipo System.String o System.Object
Ejemplo
Cree un archivo de script y escriba el siguiente código en él −
Demostración en vivoc = cell(2, 5); c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Cuando ejecuta el archivo, muestra el siguiente resultado −
c = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 [1,3] = Green [2,3] = 3 [1,4] = Yellow [2,4] = 4 [1,5] = White [2,5] = 5 }
Acceso a datos en matrices de celdas
Hay dos formas de referirse a los elementos de una matriz de celdas:
- Encerrando los índices en el primer paréntesis (), para hacer referencia a conjuntos de celdas
- Encerrando los índices entre llaves {}, para hacer referencia a los datos dentro de celdas individuales
Cuando encierra los índices en el primer paréntesis, se refiere al conjunto de celdas.
Los índices de matriz de celdas entre paréntesis suaves se refieren a conjuntos de celdas.
Por ejemplo −
Demostración en vivoc = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c(1:2,1:2)
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = { [1,1] = Red [2,1] = 1 [1,2] = Blue [2,2] = 2 }
También puede acceder al contenido de las celdas indexando con llaves.
Por ejemplo −
Demostración en vivoc = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}; c{1, 2:4}
MATLAB ejecutará la instrucción anterior y devolverá el siguiente resultado −
ans = Blue ans = Green ans = Yellow
MATLAB