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