Operadores
## Objetivos de Aprendizaje
- Usar operadores aritmeticos
- Comprender operadores relacionales
- Aplicar operadores logicos
- Realizar operaciones elemento por elemento
## Operadores Aritmeticos
### Operaciones Basicas
```matlab
a = 10;
b = 3;
% Suma
c = a + b % 13
% Resta
c = a - b % 7
% Multiplicacion
c = a * b % 30
% Division
c = a / b % 3.3333
c = a \ b % 0.3 (division izquierda)
% Potencia
c = a ^ b % 1000 (10^3)
```
### Matriz vs Elemento por Elemento
```matlab
A = [1, 2; 3, 4];
B = [2, 2; 2, 2];
% Multiplicacion de matrices
C = A * B % [6, 6; 14, 14]
% Multiplicacion elemento por elemento
C = A .* B % [2, 4; 6, 8]
```
### Operadores Elemento por Elemento
| Operador | Descripcion | Ejemplo |
|----------|-------------|---------|
| `.+` | Suma elemento por elemento | `A .+ B` |
| `.-` | Resta elemento por elemento | `A .- B` |
| `.*` | Multiplicacion elemento por elemento | `A .* B` |
| `./` | Division elemento por elemento | `A ./ B` |
| `.^` | Potencia elemento por elemento | `A .^ 2` |
### Incremento/Decremento
```matlab
x = 5;
x = x + 1 % 6
x = x - 1 % 5
x += 1 % No soportado en MATLAB
```
## Operadores Relacionales
### Operadores de Comparacion
```matlab
a = 5;
b = 10;
% Igual
c = (a == b) % false (0)
% Diferente
c = (a ~= b) % true (1)
% Mayor que
c = (b > a) % true (1)
% Menor que
c = (a < b) % true (1)
% Mayor o igual que
c = (b >= 10) % true (1)
% Menor o igual que
c = (a <= 5) % true (1)
```
### Comparaciones de Arreglos
```matlab
A = [1, 2, 3];
B = [3, 2, 1];
% Comparar elemento por elemento
C = (A == B) % [0, 1, 0]
% Comparar con escalar
D = (A > 2) % [0, 0, 1]
```
### Comparacion de Punto Flotante
```matlab
% Due to floating point precision
a = 0.1 + 0.2;
b = 0.3;
a == b % false (0)
% Usar tolerancia
tol = 1e-10;
abs(a - b) < tol % true (1)
% Usar isequaln para manejo de NaN
isequaln(a, b) % false
```
## Operadores Logicos
### Operadores Logicos Basicos
```matlab
a = true;
b = false;
% AND
c = a & b % false (0)
% OR
c = a | b % true (1)
% NOT
c = ~a % false (0)
% XOR
c = xor(a, b) % true (1)
```
### Operadores de Cortocircuito
```matlab
% && (AND de cortocircuito)
% Detiene la evaluacion si la primera condicion es false
% || (OR de cortocircuito)
% Detiene la evaluacion si la primera condicion es true
% Ejemplo
x = 0;
y = 10;
if (x ~= 0) && (y/x > 5)
disp('True');
else
disp('False o error evitado');
end
```
### Funciones Logicas
```matlab
A = [1, 0, 3, 0, 5];
any(A) % true (existe no-cero)
all(A) % false (no todos son no-cero)
isnan([1, NaN, 3]) % [0, 1, 0]
isinf([1, Inf, 3]) % [0, 1, 0]
isfinite([1, Inf, NaN]) % [1, 0, 0]
```
## Precedencia de Operadores
### Orden de Precedencia (de mayor a menor)
1. Parentesis `()`
2. Transpuesta `.'` `.^`
3. Potencia `^`
4. Unario `+` `-` `~`
5. Multiplicacion `*` `/` `\`
6. Suma `+` `-`
7. Dos puntos `:`
8. Comparacion `<` `<=` `>` `>=` `==` `~=`
9. Elemento por elemento `&`
10. Elemento por elemento `|`
11. Cortocircuito `&&`
12. Cortocircuito `||`
```matlab
% Ejemplo
resultado = 2 + 3 * 4 % 14 (no 20)
resultado = (2 + 3) * 4 % 20
```
## Operaciones de Conjuntos
```matlab
A = [1, 2, 3, 4];
B = [3, 4, 5, 6];
union(A, B) % [1, 2, 3, 4, 5, 6]
intersect(A, B) % [3, 4]
setdiff(A, B) % [1, 2]
setxor(A, B) % [1, 2, 5, 6]
ismember(3, A) % true (1)
% Elementos unicos
unique([1, 2, 2, 3]) % [1, 2, 3]
```
## Operaciones a Nivel de Bits
```matlab
a = 5; % Binario: 101
b = 3; % Binario: 011
bitand(a, b) % 1 (001)
bitor(a, b) % 7 (111)
bitxor(a, b) % 6 (110)
bitcmp(a, 3) % 2 (010) - complemento de 3 bits
% Desplazar bits
bitshift(a, 1) % 10 (1010) - desplazamiento izquierdo
bitshift(a, -1) % 2 (10) - desplazamiento derecho
```
## Operadores Especiales
### Operador Dos Puntos
```matlab
1:5 % [1, 2, 3, 4, 5]
0:0.5:2 % [0, 0.5, 1, 1.5, 2]
10:-2:4 % [10, 8, 6, 4]
```
### Concatenacion de Cadenas
```matlab
str1 = 'Hola';
str2 = 'Mundo';
% Concatenacion horizontal
str = [str1, ' ', str2] % 'Hola Mundo'
str = strcat(str1, ' ', str2)
% Concatenacion vertical
str = char(str1, str2) % Arreglo de caracteres 2x5
```
## Resumen
- Usar `.*`, `./`, `.^` para operaciones elemento por elemento
- Los operadores relacionales devuelven valores logicos (0 o 1)
- Usar `&&` y `||` para evaluacion de cortocircuito
- La precedencia de operadores sigue las reglas matematicas estandar
- Usar parentesis para clarificar la intencion
- Las comparaciones de punto flotante deben usar tolerancia
Comments
Comments powered by Giscus
To enable comments, add your Giscus embed code here.
Learn more about Giscus →