Variables y Tipos de Datos
## Objetivos de Aprendizaje
- Comprender los tipos de datos de MATLAB
- Crear y manipular variables
- Trabajar con arreglos y celdas
- Usar estructuras para datos complejos
## Descripcion General de Tipos de Datos
### Tipos de Datos Basicos
| Tipo | Ejemplo | Descripcion |
|------|---------|-------------|
| double | `3.14` | Punto flotante de doble precision |
| single | `3.14` | Punto flotante de precision simple |
| int8 | `42` | Entero de 8 bits con signo |
| int16 | `42` | Entero de 16 bits con signo |
| int32 | `42` | Entero de 32 bits con signo |
| int64 | `42` | Entero de 64 bits con signo |
| uint8 | `42` | Entero de 8 bits sin signo |
| char | `'A'` | Caracter |
| logical | `true` | Booleano (verdadero/falso) |
| string | `"hola"` | Cadena de texto (R2016b+) |
## Tipos Numericos
### Punto Flotante
```matlab
% Doble precision (predeterminado)
x = 3.14159;
class(x) % Devuelve 'double'
% Precision simple
y = single(3.14159);
class(y) % Devuelve 'single'
% Comparacion de precision
eps('double') % ~2.22e-16
eps('single') % ~1.19e-7
```
### Tipos Enteros
```matlab
% Enteros con signo
a = int8(127); % Rango: -128 a 127
b = int16(32767); % Rango: -32768 a 32767
c = int32(2^31-1);
d = int64(2^63-1);
% Enteros sin signo
e = uint8(255); % Rango: 0 a 255
f = uint16(65535);
g = uint32(2^32-1);
h = uint64(2^64-1);
```
### Verificando Tipos
```matlab
x = 42;
whos x % Muestra tamano, bytes, clase
isa(x, 'double') % Devuelve true
isa(x, 'integer') % Devuelve false
```
## Variables
### Asignacion de Variables
```matlab
x = 10; % Asignacion simple
y = x * 2; % Asignacion con calculo
z = (1:5); % Asignacion con arreglo
```
### Informacion de Variables
```matlab
a = 5;
b = 'hola';
whos % Listar todas las variables
clear a % Eliminar variable especifica
clear all % Eliminar todas las variables
```
## Arreglos
### Creando Arreglos
```matlab
% Vector fila
row = [1, 2, 3, 4, 5]
% Vector columna
col = [1; 2; 3; 4; 5]
% Arreglo 2D
A = [1, 2, 3;
4, 5, 6;
7, 8, 9]
% Usando el operador dos puntos
v = 1:2:10 % 1, 3, 5, 7, 9 (inicio:paso:fin)
w = 0:0.1:1 % 0, 0.1, 0.2, ... 1.0
```
### Indexacion de Arreglos
```matlab
A = [1, 2, 3; 4, 5, 6; 7, 8, 9]
A(1, 1) % Primer elemento: 1
A(3, 3) % Ultimo elemento: 9
A(1, :) % Primera fila: [1, 2, 3]
A(:, 2) % Segunda columna: [2; 5; 8]
A(1:2, 1:2) % Submatriz 2x2 superior izquierda
```
### Tamanio de Arreglos
```matlab
A = [1, 2, 3; 4, 5, 6];
size(A) % [2, 3] - filas, columnas
length(A) % 3 - dimension mas grande
numel(A) % 6 - numero total de elementos
ndims(A) % 2 - numero de dimensiones
```
## Arreglos de Celdas
Los arreglos de celdas pueden contener diferentes tipos de datos en cada celda.
### Creando Arreglos de Celdas
```matlab
% Usando llaves
c = {1, 'hola', [1, 2, 3]}
% Usando la funcion cell
c = cell(1, 3);
c{1} = 42;
c{2} = 'MATLAB';
c{3} = magic(3);
```
### Accediendo a Arreglos de Celdas
```matlab
c = {'manzana', 'banana', 'cereza'};
c{1} % Devuelve 'manzana' (contenido)
c(1) % Devuelve {'manzana'} (celda)
```
### Convirtiendo entre Arreglos y Celdas
```matlab
% Arreglo a celda
arr = [1, 2, 3, 4, 5];
c = num2cell(arr)
% Celdas a arreglo
c = {1, 2, 3, 4, 5};
arr = [c{:}]
```
## Estructuras
Las estructuras organizan datos usando campos con nombre.
### Creando Estructuras
```matlab
% Asignacion directa
persona.nombre = 'Juan';
persona.edad = 30;
persona.email = 'juan@ejemplo.com';
% Usando la funcion struct
persona = struct('nombre', 'Juan', 'edad', 30, 'email', 'juan@ejemplo.com');
```
### Arreglo de Estructuras
```matlab
% Crear multiples estructuras
personas(1).nombre = 'Alicia';
personas(1).edad = 25;
personas(2).nombre = 'Roberto';
personas(2).edad = 30;
% Acceder a todos los nombres
nombres = {personas.nombre} % {'Alicia', 'Roberto'}
```
### Estructuras Anidadas
```matlab
empleado.nombre = 'Juan';
empleado.dept.nombre = 'Ingenieria';
empleado.dept.ubicacion = 'Edificio A';
```
## Tipo Logico
```matlab
% Crear valores logicos
isValid = true;
isEmpty = false;
% Arreglos logicos
logicVec = [true, false, true, true];
% Convertir a logico
x = [0, 1, 2, -3];
y = logical(x) % [false, true, true, true]
% Encontrar valores verdaderos
find(logicVec) % Devuelve [1, 3, 4]
```
## Conversion de Tipos
```matlab
x = 42;
% A cadena
s = string(x)
s = num2str(x)
s = int2str(x)
% A numero
str = '123';
n = str2double(str)
n = str2num(str)
% A entero (con redondeo)
y = 3.7;
int8(y) % 4 (redondea)
floor(y) % 3 (piso)
ceil(y) % 4 (techo)
round(y) % 4 (redondeo)
```
## Arreglos Vacios
```matlab
emptyVec = [] % Arreglo vacio 0x0
emptyMat = zeros(0, 5) % Matriz vacia 0x5
isempty(emptyVec) % true
numel(emptyVec) % 0
```
## Resumen
- MATLAB tiene multiples tipos numericos: double, single y enteros
- Usar `class()` para verificar tipo, `isa()` para probar tipo
- Los arreglos usan parentesis para indexacion `A(fila, col)`
- Los arreglos de celdas usan llaves `c{indice}` para contenido
- Las estructuras usan notacion de punto `estructura.campo`
- Funciones de conversion de tipos: `string()`, `num2str()`, `str2double()`
- Arreglos vacios creados con `[]` o `zeros(0,n)`
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →