MATLAB - Números: Tipos, Almacenamiento y Conversión
MATLAB soporta diversas clases numéricas: enteros con y sin signo, y precisión simple y doble para punto flotante. Por defecto, almacena todos los valores numéricos como double precision (doble precisión).
Puedes elegir almacenar números como enteros o single precision (precisión simple). Todos los tipos numéricos soportan operaciones básicas de arrays y matemáticas.
Conversión a Tipos Numéricos
MATLAB provee funciones para convertir entre tipos:
| Función | Propósito |
|---|---|
| double | Convierte a doble precisión |
| single | Convierte a precisión simple |
| int8 | Convierte a entero con signo de 8 bits |
| int16 | Convierte a entero con signo de 16 bits |
| int32 | Convierte a entero con signo de 32 bits |
| int64 | Convierte a entero con signo de 64 bits |
| uint8 | Convierte a entero sin signo de 8 bits |
| uint16 | Convierte a entero sin signo de 16 bits |
| uint32 | Convierte a entero sin signo de 32 bits |
| uint64 | Convierte a entero sin signo de 64 bits |
Ejemplo de Conversión
x = single([5.32 3.47 6.28]) .* 7.5 x = double([5.32 3.47 6.28]) .* 7.5 x = int8([5.32 3.47 6.28]) .* 7.5 x = int16([5.32 3.47 6.28]) .* 7.5 x = int32([5.32 3.47 6.28]) .* 7.5 x = int64([5.32 3.47 6.28]) .* 7.5
Los tipos enteros redondean el resultado (38, 23, 45), mientras que los de punto flotante mantienen decimales.
Valores Mínimos y Máximos de Enteros
Las funciones intmax() y intmin() devuelven los límites representables para cada tipo entero.
intmax('int8') % 127
intmin('int8') % -128
intmax('uint16') % 65535
Ejemplo: Rangos de Tipos Enteros
str = 'El rango para int8 es:\n\t%d a %d';
sprintf(str, intmin('int8'), intmax('int8'))
% Repite para int16, int32, int64, uint8, uint16, uint32, uint64
Nota: En versiones antiguas, intmax('int64') podía mostrar 0 por limitaciones de visualización.
Valores Mínimos y Máximos de Punto Flotante
Las funciones realmax() y realmin() devuelven los límites para single y double.
Ejemplo
str = 'El rango para single es:\n\t%g a %g y\n\t %g a %g';
sprintf(str, -realmax('single'), -realmin('single'), realmin('single'), realmax('single'))
str = 'El rango para double es:\n\t%g a %g y\n\t %g a %g';
sprintf(str, -realmax('double'), -realmin('double'), realmin('double'), realmax('double'))
Resultados típicos:
- single: ±3.4e38 a ±1.2e-38
- double: ±1.8e308 a ±2.2e-308
MATLAB
- Números vs numeración: comprender la distinción y su impacto práctico
- 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
- Tipos de Datos en MATLAB: Guía Completa de Conversión y Determinación
- Operadores en MATLAB: Guía Completa de Aritméticos, Relacionales, Lógicos y Bitwise
- Matrices en MATLAB: Creación, Referenciación y Manipulación de Datos
- MATLAB: Dominando Arrays Multidimensionales y Especiales
- Dominando la Notación de Dos Puntos en MATLAB: Vectores e Iteraciones
- Dominando Strings en MATLAB: Creación, Manipulación y Funciones
- Funciones en MATLAB: Definición, Workspace, Entradas y Salidas