MATLAB - Matrices
Todas las variables de todos los tipos de datos en MATLAB son matrices multidimensionales. Un vector es una matriz unidimensional y una matriz es una matriz bidimensional.
Ya hemos hablado de vectores y matrices. En este capítulo, analizaremos las matrices multidimensionales. Sin embargo, antes de eso, analicemos algunos tipos especiales de matrices.
Matrices especiales en MATLAB
En esta sección, discutiremos algunas funciones que crean algunas matrices especiales. Para todas estas funciones, un solo argumento crea una matriz cuadrada, los argumentos dobles crean una matriz rectangular.
los zeros() la función crea una matriz de todos los ceros -
Por ejemplo
zeros(5)
MATLAB ejecutará la declaració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 ones() la función crea una matriz de todos unos -
Por ejemplo
ones(4,3)
MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:
ans =
1 1 1
1 1 1
1 1 1
1 1 1
los eye() La función crea una matriz de identidad.
Por ejemplo
eye(4)
MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
los rand() La función crea una matriz de números aleatorios distribuidos uniformemente en (0,1) -
Por ejemplo
rand(3, 5)
MATLAB ejecutará la declaració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 magic square es un cuadrado que produce la misma suma, cuando sus elementos se agregan en filas, columnas o diagonalmente.
los magic()La función crea una matriz cuadrada mágica. Se necesita un argumento singular que da el tamaño del cuadrado. El argumento debe ser un escalar mayor o igual a 3.
magic(4)
MATLAB ejecutará la declaració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. Las matrices 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 ampliamos.
Por ejemplo, creemos una matriz bidimensional a.
a = [7 9 5; 6 1 9; 4 3 2]
MATLAB ejecutará la declaració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 valores como -
a(:, :, 2)= [ 1 2 3; 4 5 6; 7 8 9]
MATLAB ejecutará la declaració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 matrices multidimensionales usando las funciones unos (), ceros () o rand ().
Por ejemplo,
b = rand(4,3,2)
MATLAB ejecutará la declaració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 utilizar el cat()función para construir matrices multidimensionales. Concatena una lista de matrices a lo largo de una dimensión especificada:
La sintaxis de la función cat () es -
B = cat(dim, A1, A2...)
Dónde,
B es la nueva matriz creada
A1 , A2 , ... son las matrices que se van a concatenar
dim es la dimensión a lo largo de la cual concatenar las matrices
Ejemplo
Cree un archivo de script y escriba el siguiente código en él:
a = [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 la matriz |
numel | Número de elementos de la matriz |
Talla | Dimensiones de la matriz |
escolumna | Determina si la entrada es un vector de columna |
esta vacio | Determina si la matriz está vacía |
ismatrix | Determina si la entrada es matriz |
isrow | Determina si la entrada es un vector de fila |
isscalar | Determina si la entrada es escalar |
isvector | Determina si la entrada es vectorial |
blkdiag | Construye una matriz diagonal de bloques a partir de argumentos de entrada |
circshift | Cambia la matriz circularmente |
ctranspose | Transposición 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 a abajo |
permutar | Invierte las dimensiones de permutación de la matriz ND |
permutar | Reorganiza las dimensiones de la matriz ND |
repmat | Replicaciones y matriz de mosaicos |
remodelar | Matriz de remodelaciones |
rot90 | Gira la matriz 90 grados |
shiftdim | Cambia 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 |
exprimir | Elimina dimensiones singleton |
transponer | Transponer |
vectorizar | Vectoriza la expresión |
Ejemplos
Los siguientes ejemplos ilustran algunas de las funciones mencionadas anteriormente.
Length, Dimension and Number of elements −
Cree un archivo de script y escriba el siguiente código en él:
x = [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
Circular Shifting of the Array Elements −
Cree un archivo de script y escriba el siguiente código en él:
a = [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
Clasificar matrices
Cree un archivo de script y escriba el siguiente código en él:
v = [ 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
Las matrices de celdas son matrices de celdas indexadas donde cada celda puede almacenar una matriz de diferentes dimensiones y tipos de datos.
los cellLa 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;
dim es un entero escalar o vector de enteros que especifica las dimensiones de la matriz de celdas C;
dim1, ..., dimN son números enteros escalares que especifican las dimensiones de C;
obj es uno de los siguientes:
- Matriz u objeto de Java
- Matriz .NET de tipo System.String o System.Object
Ejemplo
Cree un archivo de script y escriba el siguiente código en él:
c = 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 hacer referencia a los elementos de una matriz de celdas:
- Incluir los índices en el primer corchete (), para referirse a conjuntos de celdas
- Incluir los índices entre llaves {}, para hacer referencia a los datos dentro de celdas individuales
Cuando encierra los índices en el primer corchete, se refiere al conjunto de celdas.
Los índices de matriz de celdas entre paréntesis suaves se refieren a conjuntos de celdas.
Por ejemplo
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2)
MATLAB ejecutará la declaració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
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c{1, 2:4}
MATLAB ejecutará la declaración anterior y devolverá el siguiente resultado:
ans = Blue
ans = Green
ans = Yellow