2. Contenidos del curso
• Entorno Matlab.
• Tipos de datos básicos.
• Funciones y operaciones con arrays.
• Notación “:” y array slice.
• Operaciones lógicas.
• Operaciones matemáticas.
• Gráficos.
• Miscelánea.
• Ciclo de vida del software.
• Tipos de datos.
• Estructuras de control.
• Descomposición funcional y diseño descendente.
• Funciones.
• Recursividad.
• Debug.
• Proyecto Final.
Matlab CLI
Programación en Matlab
3. Tipos de datos básicos
• Matlab reconoce varios tipos de datos, en esta
sección presentaremos los básicos o
primitivos, más adelante veremos tipos de
datos más complejos.
• Entero: 23
• Real: -18.566
• Complejo: 23.1 + 34.8i
• Infinito : Inf
• NaN: Not a Number
4. Enteros(1)
• Según la resolución o tamaño de palabra que
escojamos podemos tener varios tipos de
rango para codificar los enteros.
• Con signo 8 bits: [-27
,27
-1]
>> x = int8(5)
x =5
>> x = int8(145)
x =127
5. Enteros(2)
• Con signo 16 bits: [-215
,215
-1]
• Con signo 32 bits: [-231
,231
-1]
• Con signo 64 bits: [-263
,263
-1]
>> x = int16(145)
x =5
>> x = int16( 33000 )
x =32767
6. Enteros(3)
• Sin signo 8 bits: [0 ,28
-1]
• Sin signo 16 bits: [0 ,216
-1]
• Sin signo 32 bits: [0 ,232
-1]
64
>> x = uint8(257)
x =255
>> x = uint8(-3)
x =0
>> x = uint8(1.9)
x = 2
7. Enteros(4)
• Para saber el valor máximo y mínimo de cada
tipo de entero podemos consultar a través de
las funciones intmax, intmin
>> intmax('uint8')
ans =255
>> intmin('int32')
ans =-2147483648
>> intwarning('on')
>> x = int8(234)
Warning: Out of range value converted to intmin('int8') or intmax('int8').
x =127
>> intwarning('off')
>> flag = intwarning('query')
8. Enteros(5)
• Funciones para trabajar con enteros: ceil,
class, floor, isinteger, isa, isnumeric, round.
>> ceil(1.2)
ans =2
>> class(single(0))
ans =single
>> floor(3.7)
ans =3
¿>> isinteger(4)
ans =0
>> isinteger(int16(4))
ans =1 ?
9. Enteros(6)
>> isnumeric(pi)
ans =1
>> isnumeric(true)
ans =0
>> isnumeric('test')
ans =0
>> round(1.2)
ans =1
>> round(1.5)
ans =2
>> round(1.9)
ans =2
>> isa(false,'logical')
ans =1
10. Flotantes(1)
• Matlab tienes dos tipos diferentes de números
flotantes, los de doble precisión y los de
simple precisión, por defecto Matlab usa
flotantes de doble precisión.
>> x = 1;
>> whos x
Name Size Bytes Class Attributes
x 1x1 8 double
>> isfloat(x)
ans =1
11. Flotantes(2)
• También podemos saber los valores máximos
y mínimos que podemos codificar con tipos de
datos flotantes con las funciones realmax y
realmin.
>> realmax('single')
ans =3.4028e+038
>> realmax('double')
ans =1.7977e+308
>> realmin('single')
ans =1.1755e-038
>> realmin('double')
ans =2.2251e-308
12. Booleanos(1)
• El tipo de datos booleano puede tomar dos
valores, cierto o falso.
• Las variables booleanas se pueden operar
mediante operadores lógicos (~, &&, ||)
• La comparación numérica puede devolver un
valor lógico (<, <=, >, >=, ==, ~= ).
• Hay funciones que devuelven un valor lógico.
>> isfinite(inf)
ans =0;
13. Booleanos(2)
• Los operadores lógicos siguen las reglas de las
tablas de la verdad de cada operador.
Encontrar la tabla de la verdad de (&&, ||)
>> true && false
ans =0
>> true || false
ans =1
>> ~true
ans =0
>> (isnumeric('test') || true) && true
ans =1
14. Booleanos(3)
• Regla de Demorgan: (Demostración conjuntos)
¬(A + B) = (¬A)·(¬B)
¬(A · B) = (¬A)+(¬B)
• Usamos las tablas de la verdad cuando
queremos evaluar todos los posibles valores
de una expresión:
F = (A + B) -> ¬A
• Dada una tabla de la verdad podemos
encontrar su expresión algebraica mediante la
expresión canónica de suma de productos.
15. Booleanos(4)
• Cuando una expresión es verdadera para
todos los posibles valores de sus variables lo
llamamos tautología.
P + ¬P
A->A
(P->Q)·(Q->R)->(P->R)
• Ojo avizor: A+A = A, A·A = A, A·1=A, A+0=A
¿ Cómo se puede simplificar la expresión:
¬P·(Q + ¬Q) ?
16. Booleanos(5)
• Otra forma de representar una función o
expresión booleana: F = Σ3(0,2,3,4,7) =
Π3(1,2,6)
• Encuentre la expresión algebraica de F.
• El amo del bar “el tropezón” está cansado que sus órdenes lleguen con errores a cocina,
luego pasa que a los que han pedido una ensalada les traen un codillo. Las quejas de los
comensales ya han llegado a la Generalitat y don Anselmo está desesperado. Buscando
soluciones, una consultora Americana le pretende vender un sistema de comunicaciones
entre la barra y la cocina por una millonada. Para ello le han dicho que codificarán sus 30
platos de la carta en un código binario de 4 bits con un bit de paridad par y que serán capaces
con este esquema de detectar incluso dos errores de transmisión. Don Anselmo conocedor
de las capacidades del departamento de psiquiatría nos ha escrito para ver si puede confiar
en ellos. Qué le decimos?