MATLAB: Dominando Arrays Multidimensionales y Especiales
En MATLAB, todas las variables de todos los tipos de datos son arrays multidimensionales. Un vector es un array unidimensional y una matriz es un array bidimensional.
Ya hemos tratado vectores y matrices. En este capítulo, discutiremos los arrays multidimensionales. Pero antes, analicemos algunos tipos especiales de arrays.
Arrays Especiales en MATLAB
En esta sección, veremos algunas funciones que crean arrays especiales. Para todas estas funciones, un solo argumento crea un array cuadrado, mientras que dos argumentos crean un array rectangular.
La función zeros()
Crea un array lleno de ceros.
Ejemplo:
zeros(5)
MATLAB devuelve una matriz 5x5 de ceros.
La función ones()
Crea un array lleno de unos.
Ejemplo:
ones(4,3)
MATLAB devuelve una matriz 4x3 de unos.
La función eye()
Crea una matriz identidad.
Ejemplo:
eye(4)
MATLAB devuelve una matriz identidad 4x4.
La función rand()
Crea un array con números aleatorios distribuidos uniformemente en el intervalo (0,1).
Ejemplo:
rand(3,5)
MATLAB devuelve una matriz 3x5 con valores aleatorios.
Cuadrados Mágicos
Un cuadrado mágico es una matriz cuadrada donde la suma de los elementos es la misma en cada fila, columna y diagonal principal.
La función magic() crea un cuadrado mágico. Toma un argumento escalar que indica el tamaño del cuadrado (debe ser ≥ 3).
Ejemplo:
magic(4)
MATLAB devuelve un cuadrado mágico 4x4.
Arrays Multidimensionales
Un array con más de dos dimensiones se llama array multidimensional en MATLAB. Es una extensión de la matriz bidimensional normal.
Generalmente, para generar un array multidimensional, primero creamos un array bidimensional y lo extendemos.
Ejemplo: Crear un array 3D
Primero, creamos una matriz 3x3:
a = [7 9 5; 6 1 9; 4 3 2]
Luego, agregamos una tercera dimensión:
a(:,:,2) = [1 2 3; 4 5 6; 7 8 9]
MATLAB muestra dos "páginas": a(:,:,1) (la original) y a(:,:,2) (la nueva).
También podemos crear arrays multidimensionales directamente con zeros(), ones() o rand() especificando tres o más dimensiones:
b = rand(4,3,2)
La función cat()
Concatena arrays a lo largo de una dimensión especificada.
Sintaxis:
B = cat(dim, A1, A2, ...)
B: nuevo array resultante.A1, A2, ...: arrays a concatenar.dim: dimensión junto a la cual concatenar.
Ejemplo con cat()
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])
Crea un array 3x3x3 con tres páginas.
Funciones de Manipulación de Arrays
MATLAB proporciona numerosas funciones para ordenar, rotar, permutar, redimensionar o desplazar arrays.
| Función | Propósito |
|---|---|
| length | Longitud de un vector o mayor dimensión |
| ndims | Número de dimensiones del array |
| numel | Número total de elementos |
| size | Dimensiones del array |
| iscolumn | Determina si la entrada es un vector columna |
| isempty | Determina si el array está vacío |
| ismatrix | Determina si la entrada es una matriz |
| isrow | Determina si la entrada es un vector fila |
| isscalar | Determina si la entrada es un escalar |
| isvector | Determina si la entrada es un vector |
| blkdiag | Construye matriz diagonal por bloques |
| circshift | Desplaza array circularmente |
| ctranspose | Transpuesta conjugada compleja |
| diag | Matrices diagonales y diagonales de matriz |
| flipdim | Invierte array en dimensión especificada |
| fliplr | Invierte matriz de izquierda a derecha |
| flipud | Invierte matriz de arriba a abajo |
| ipermute | Invierte permutación de dimensiones N-D |
| permute | Reordena dimensiones de array N-D |
| repmat | Replica y mosaica array |
| reshape | Redimensiona array |
| rot90 | Rota matriz 90 grados |
| shiftdim | Desplaza dimensiones |
| issorted | Determina si elementos están ordenados |
| sort | Ordena elementos ascendente/descendente |
| sortrows | Ordena filas ascendentemente |
| squeeze | Elimina dimensiones singleton |
| transpose | Transpuesta |
| vectorize | Vectoriza expresión |
Ejemplos Prácticos
Longitud, Dimensiones y Número de Elementos
x = [7.1, 3.4, 7.2, 28/4, 3.6, 17, 9.4, 8.9]; length(x) % longitud del vector x y = rand(3,4,5,2); ndims(y) % número de dimensiones de y s = ['Zara', 'Nuha', 'Shamim', 'Riz', 'Shadab']; numel(s) % número de elementos en s
Desplazamiento Circular
a = [1 2 3; 4 5 6; 7 8 9]; b = circshift(a,1); % desplaza primera dimensión hacia abajo 1 c = circshift(a,[1 -1]); % desplaza 1ª dim. abajo 1 y 2ª dim. izquierda 1
Ordenación de Arrays
v = [23 45 12 9 5 0 19 17]; sort(v) % ordena vector horizontal m = [2 6 4; 5 3 9; 2 0 1]; sort(m,1) % ordena por filas (columna a columna) sort(m,2) % ordena por columnas (fila a fila)
Cell Arrays (Arrays de Celdas)
Los cell arrays son arrays indexados donde cada celda puede almacenar datos de diferentes dimensiones y tipos.
La función cell crea un cell array:
C = cell(dim) C = cell(dim1,...,dimN) D = cell(obj)
Ejemplo
c = cell(2,5);
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5}
Acceso a Datos en Cell Arrays
Dos formas de referenciar elementos:
- Paréntesis
(): para conjuntos de celdas. - Llaves
{}: para el contenido dentro de celdas individuales.
Ejemplos
c = {'Red', 'Blue', 'Green', 'Yellow', 'White'; 1 2 3 4 5};
c(1:2,1:2) % devuelve subconjunto de celdas (2x2)
c{1, 2:4} % devuelve contenidos: 'Blue', 'Green', 'Yellow'
MATLAB
- Dominando arrays en C#: Declaración, inicialización y operaciones
- Dominando arrays escalonados en C#: Declaración, inicialización y acceso
- Arrays en C++: Declaración, inicialización y técnicas con punteros
- Asignación dinámica de arrays en C++: Guía práctica con ejemplos de código
- MATLAB: Visión General del Entorno Líder en Computación Numérica
- Variables en MATLAB: Conceptos Básicos y Ejemplos Prácticos
- Comandos Esenciales de MATLAB para Computación Eficiente
- Matrices en MATLAB: Creación, Referenciación y Manipulación de Datos
- MATLAB - Números: Tipos, Almacenamiento y Conversión
- Dominando Strings en MATLAB: Creación, Manipulación y Funciones
- Técnicas de Copia de Arrays en Java: Guía Completa