Saltar al contenido
Control Automático Educación

Tipos de Arreglos en Matlab

En esta ocasión vamos a ver otro tipo de Arreglos que nos ofrece Matlab, como el caso de los Arreglos Multidimensionales. En este caso veremos sobre los tipos de datos numéricos, de Carácter y Cadena – Celdas, datos esparsos, simbólicos y Estructuras en MATLAB. Explicado en Detalle.

Antes de Comenzar te invito a ver nuestro CURSO GRATUITO DE MATLAB.

Y que te suscríbas al canal si deseas seguir aprendiendo más sobre Matlab.

Tipos de Datos

Hasta este punto del curso solo hemos tratado con datos bidimensionales, principalmente abordados en la entrada de Vectores y Matrices con Matlab.

Sin importar si usamos un escalar, un vector o una matriz estos datos son tratados por el softwares de forma predeterminada como bidimensionales y con el tipo de dato double.

Tipo de Datos en Matlab
Tipo de Datos en Matlab

MATLAB también incluye la capacidad de crear matrices multidimensionales y almacenar datos que no son dobles, como los caracteres.

Tipos de Datos Numéricos

Números punto flotante precisión doble

El tipo de datos numérico por defecto en MATLAB es el número punto flotante de precisión doble. Espacio de Memoria (1 byte = 8 bits)

Tipo Double en Matlab
Tipo Double en Matlab

Las funciones realmax y realmin permiten determinar el máximo valor posible de un número punto flotante de precisión doble.

Un valor cuyo valor absoluto es mayor que realmax, o si calcula un número que está afuera de este rango, MATLAB asignará un valor de ±inf

si intenta ingresar un valor cuyo valor absoluto es menor que realmin, MATLAB asignará un valor de cero

Números punto flotante de precisión sencilla

Sólo usan la mitad del espacio de almacenamiento de un número de precisión doble y, por tanto, sólo almacenan la mitad de información.

Cada valor requiere sólo 4 bytes, o 4*8=32 bits de espacio de almacenamiento.

Es necesario usar la función single para definir la precisión sencilla (que es precisión doble por defecto) a un número de precisión sencilla

De igual modo, la función double convertirá una variable a una doble

Enteros

Tradicionalmente, los enteros se usan como números de conteo.

MATLAB soporta ocho tipos diferentes de enteros, que difieren uno de otro en cuánto espacio de almacenamiento se asigna al tipo y si los valores tienen signo o no.

Cuanto mayor sea el espacio de almacenamiento, más grande será el valor del número entero que puede usar.

Enteros en Matlab
Fuente: MATLAB® para ingenieros

Se puede determinar el valor máximo de cualquiera de los tipos enteros con el uso de la función intmax

Números complejos

El tipo de almacenamiento por defecto para números complejos es doble; sin embargo, se necesita el doble de espacio de almacenamiento porque se deben almacenar los componentes real e imaginario.

Por tanto, se requieren 16 bytes (= 128 bits) para almacenar un número complejo doble.

Carácter y Cadena

Además de almacenar números, MATLAB puede almacenar información carácter. Los apóstrofes se usan para identificar una cadena y diferenciarla de un nombre de variable.

En el nombre de la variable se despliega un símbolo que contiene las letras “c|h”, que indican que es un arreglo carácter.

Cada carácter en un arreglo carácter requiere 2 bytes de espacio de almacenamiento.

Simbólicos

La caja de herramientas simbólica usa datos simbólicos para realizar cálculos algebraicos simbólicos. Una forma de crear una variable simbólica es usar la función sym.

Puedes ejecutar la instrucción ver para verificar si tienes instalado el paquete simbólico de Matlab.

Los requisitos de almacenamiento para un objeto simbólico dependen de cuán grande sea el objeto.

Lógicos

Los arreglos lógicos pueden parecer como arreglos de unos y ceros porque MATLAB (así como otros lenguajes de computación) usan dichos números para denotar verdadero y falso:

Arreglos Esparcidos

Tanto los arreglos de precisión doble como los lógicos se pueden almacenar en matrices llenas o como matrices esparcidas.

Las matrices esparcidas están “escasamente pobladas”, lo que significa que muchos o la mayoría de los valores en el arreglo son cero.

Si se almacenan arreglos esparcidos en el formato de matriz llena, toma 8 bytes de almacenamiento por cada valor de dato, sea cero o no. El formato de matriz esparcida sólo almacena los valores distintos de cero y recuerda dónde están, estrategia que ahorra mucho espacio.

Por ejemplo, defina una matriz identidad 1000×1000 que es una matriz de 1 millón de elementos:

Arreglos Multidimensionales

Cuando surge la necesidad de almacenar datos en arreglos multidimensionales (más que bidimensionales), MATLAB representa los datos con páginas adicionales.

Suponga que le gustaría combinar los siguientes cuatro arreglos bidimensionales en un arreglo tridimensional

x=[1,2,3;4,5,6];
y=10*x;
z=10*y;
w=10*z;

Usamos la siguiente sintaxis para crear un arreglo multidimensional A donde definimos cada página por separado:

A(:,:,1)=x;
A(:,:,2)=y;
A(:,:,3)=z;
A(:,:,4)=w;

Donde el último número corresponde a la página del arreglo multidimensional, el cual graficamente puede verse de la siguiente forma:

Arreglos Multidimensionales
Arreglos Multidimensionales: Fuente – : MATLAB® para ingenieros

ARREGLOS CARÁCTER

Podemos crear arreglos carácter bidimensionales que contengan bien sea letras (carácter) o contengan Strings (palabras). Sin embargo esto será posible si el número de elementos en cada fila es el mismo.

Por tanto, una lista de nombres como la siguiente no funcionará, porque cada nombre tiene un número diferente de caracteres:

N=['Sergio';'Jessica';'Carol';'Rafael';'Leonardo';'Nevardo']

La función char“ajusta” un arreglo carácter con espacios, de modo que cada fila tenga el mismo número de elementos:

N=char('Sergio','Jessica','Carol','Rafael','Leonardo','Nevardo')

Cuando se desee usar valores numéricos en un arreglo carácter, para formar una tabla por ejemplo, los números deberán ser convertidos inicialmente a carácter.

La función num2str (número a cadena) le permite convertir la matriz R doble a una matriz compuesta de datos carácter

S = num2str(R)

Ahora se puede combinar N, el arreglo carácter de nombres, con S, el arreglo carácter de puntajes:

T = [N,S]

ARREGLOS CELDA

A diferencia de los arreglos numérico, carácter y simbólico, el arreglo celda puede almacenar diferentes tipos de datos dentro del mismo arreglo. Cada elemento en el arreglo también es un arreglo.

A = 'Control Automatico Educacion';
B = [1 2 3; 4 5 6; 7 8 9];
C = 2:2:10;

Se les puede combinar en un arreglo celda al usar llaves como el constructor de arreglo celda (los corchetes son los constructores estándar de arreglo):

Celda = {A,B,C}

Para ahorrar espacio, los arreglos grandes se mencionan sólo con información de tamaño. Puede mostrar el arreglo completo con la función celldisp

celldisp(celda)

Puede usar un índice sencillo o un esquema de indexación fila y columna

%Indexacion
Celda(1)
Celda{3}

%Elemento especifico
Celda{2}(2,3)

ARREGLOS ESTRUCTURA

Los arreglos estructura son similares a los arreglos celda. Los arreglos múltiples de diferentes tipos de datos se pueden almacenar en arreglos estructura, tal como se puede hacer en arreglos celda.

No obstante, en lugar de usar indexación de contenido, a cada una de las matrices almacenadas en un arreglo estructura se le asigna una ubicación llamada campo (field).

Por ejemplo, al usar los tres arreglos de la sección anterior en arreglos celda

se puede crear un arreglo estructura colocando CUALQUIER nombre, ejemplo: Estructura

Dentro de esa estructura, creamos un campo, con cualquier nombre también, ejemplo: Site

%Crear una estructura con el campo Site
Estructura.Site = A;
Estructura.Matriz = B;
Estructura.Vector = C;

Se puede agregar más contenido a la estructura, y expandir su tamaño, al agregar más matrices a los campos definidos

%Ampliar la Estrucutra
Estructura(2).Matriz = eye(2);

Puede acceder a la información en los arreglos estructura con el uso del nombre de matriz, nombre de campo y números índice. La sintaxis es similar a la que se usó para otros tipos de matrices.

Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:

👉 Invitar a Sergio a un Café ☕️

Que esten muy bien, nos vemos en la siguiente entrada.