Você está na página 1de 35

UNIVERSIDAD DE ANTIOQUIA

FACULTAD DE INGENIERÍA
BIOINGENIERÍA
Laboratorio Teoría de Modelos y Simulación de Sistemas
Docentes: Mauricio Hernández Valdivieso
Isabel Cristina Muñoz Ortega
teo.modelos.sim@gmail.com
____________________________________________________________________________
SESIÓN 1
INTRODUCCIÓN A MATLAB

Descripción de la sesión de laboratorio


Esta sesión tiene el formato clásico de un tutorial, en el cual se explica el funcionamiento de los
comandos y se desarrollan ejemplos paso a paso. Aunque se ha escogido una serie de comandos
que resultan fundamentales para el proyecto de aula Teoría de Modelos y Simulación, es inviable
estudiarlos todos en una sola sesión de laboratorio.

Introducción a Matlab
Matlab es un programa para el cálculo numérico y su estructura básica para el tratamiento de
datos son las matrices, por ejemplo un escalar a, es considerado como una matriz de 1 × 1, y un
vector columna un vector de 𝑛 × 1. Cuando se necesita ayuda sobre algún comando se utiliza el
comando help nombre_ del_comando, por ejemplo help plot. Una ayuda más completa se obtiene
con el comando doc, utilizando la misma sintaxis de help (plot es el comando principal utilizado
para graficar datos).
Matlab distingue entre mayúsculas y minúsculas por tanto se debe tener cuidado a la hora de
nombrar e invocar las variables y los nombres de las funciones.
Matlab crea un espacio en la memoria del computador para guardar y procesar los datos que
utilizamos en una sesión, este espacio en memoria se denomina wokspace, para borrar las
variables que hemos usado en una sesión, se utiliza el comando clear, para limpiar la ventana de
comandos clc, para saber las variables que hay en el workspace who y para conocer el espacio
ocupado por las variables y las dimensiones se usa el comando whos.
Cuando se desea guardar las variables utilizadas en una sesión se usa el comando save, ej: save
mi_sesion. Para utilizar la sesión guardada, load mi_sesion.

1
Matlab tiene predefinidas unas constantes que no pueden ser usadas por el usuario pues
produciría un error, las más importantes son: i y j, que designan el número imaginario, y pi, el
número 3.1416…

Esquema de la interfaz de Matlab y sus herramientas

Workspace: muestra las variables definidas en cada instante.


Command Window: en este espacio se pueden ingresar los comandos o tareas a ejecutar en Matalb.
Command History: muestra los comandos ingresados en la ventana de comandos.
Editor de ficheros *.m: editor con depurador paso a paso y visualización de variables internas.

2
1 Matrices

1.1 Generación y manipulación de matrices


Ejemplo 1: Ingresar la matriz

1 5 4 6
2 1 3 5
A=[ ]
1 6 8 4
4 8 7 1
Para ingresar elementos en una misma fila se separan los elementos de la fila por un espacio o
por una coma y para terminar una fila se usa “ ; “ , esta información se ingresa dentro de
corchetes.

Ejemplo 2
Si se necesita trabajar con números complejos se ingresa la parte real y la imaginaria.

Ejemplo 3
También es posible ingresar la parte real y la imaginaria independientemente y después sumar
las matrices

3
Ejemplo 4
Algunas veces es importante conocer las dimensiones de la matriz, el comando usado es size.

1.2 Manipulación de elementos de la matriz y operaciones


Ejemplo 1
Obtener el tercer elemento de la segunda fila de la matriz A.

Ejemplo 2
Calcular el producto escalar entre la primera y la cuarta columna de A

4
Ejemplo 3
Si se necesita hacer operaciones elemento por elemento en la matriz, se antepone un punto
antes del símbolo de la operación.

De esta manera cada elemento de A es elevado al cuadrado. Note la diferencia cuando se


multiplican matrices y cuando se multiplica elemento por elemento de la matriz.

Ejemplo 4
Sea la matriz B

5
1.3 Construcción de submatrices
Matlab posee una serie de funciones útiles para crear matices comúnmente utilizadas.
Eye Matriz identidad
Zeros Matiz de ceros
ones Matiz de unos
diag Matriz diagonal
triu Matriz triangular superior
tril Matriz triangular inferior
Rand Matriz aleatoria

El carácter “ : ” sirve para referenciar el rango deseado de posiciones de una matriz.


Ejemplo 1
Crear una submatriz con los elementos de la segunda a la cuarta fila, y de la segunda a la cuarta
columna de la matriz A.

Si se desea obtener todos los elementos de la columna dos de la matriz Z

6
Para calcular el producto escalar de la primera y la cuarta columna de A.

El caracter “ ‘ ” se usa para transponer el vector columna.

Ejemplo 2
También es posible obtener filas y columnas no consecutivas ingresando entre corchetes sus
respectivos índices
Eliminar la columna 2 de la matriz A.

Ejemplo 3
Obtener una submatriz con las componentes de la primera y la cuarta fila, y con la segunda y
tercera columna de la matriz A.

1.4 Operaciones con matrices


Para operar con matrices matlab dispone de las funciones habituales:

7
+ suma
- Resta
/ División
* Multiplicación
‘ Transpuesta conjugada

El operador “ ‘ ” funciona diferente para números reales y para complejos, para ver la
diferencia analice los siguientes dos ejemplos.

Ejemplo 1
Hallar la transpuesta de A.

La transpuesta conjugada de una matriz de números reales transpone las filas y columnas.
Si la matriz es de números complejos, la transpuesta conjugada halla la transpuesta del
conjugado de los números complejos

Ejemplo 2
Hallar la transpuesta conjugada de la matriz Z.

Para hallar la transpuesta de una matriz de números complejos, se halla la conjugada de la


transpuesta conjugada.

8
Ejemplo 3
Además de las operaciones básicas matlab dispone de ciertas funciones útiles para la
manipulación de matrices.

Eig Valores y vectores propios


poly Ecuación característica
conv Convolución
deconv deconvolución
Expm Matriz exponencial
Det Determinante
Size dimensión
Inv Matriz inversa
Trace Suma de la diagonal

Obtener los valores y vectores propios de la matriz A

La función eig retorna los vectores propios como vectores columna correspondientes a los
valores propios de la misma columna.

9
1.5 Representación de polinomios
Los polinomios en Matlab se representan por vectores fila, correspondientes a los coeficientes
de cada una de las potencias del polinomio en orden decreciente.

Ejemplo 1
Ingresar el polinomio 𝑃(𝑥) = 𝑥 4 + 4𝑥 3 + 5𝑥 2 + 2

Las principales operaciones con polinomios son convolución y deconvolución, que multiplican
y dividen polinomios, respectivamente.

Ejemplo 2
Multiplicar los polinomios 𝑃1 (𝑥) = 𝑥 2 + 2𝑥 + 3 y 𝑃2 (𝑥) = 𝑥 2 + 3

El polinomio resultante es 𝑃12 (𝑥) = 𝑥 4 + 2𝑥 3 + 6𝑥 2 + 6𝑥 + 9

Ejemplo 3
Dividir el polinomio 𝑃(𝑥) por (𝑥 + 1)

10
q es el cociente, r el residuo.

Ejemplo 4
Otras funciones importante son roots y residue.
El primero se utiliza para hallar las raíces o ceros de un polinomio y el segundo para hallar los
coeficientes de la expansión en fracciones parciales de una función de transferencia.
Hallar las raíces del polinomio P(x)

Ejemplo 5
𝑥 2 +3𝑥+4
Hallar la expansión en fracciones parciales de 𝑃 (𝑥 ) =
𝑥(𝑥 2 +5𝑥+2)

11
12
2. Representación grafica
El comando para graficar señales continuas en dos dimensiones es plot , este grafica parejas
ordenadas (x,y), x e y son vectores fila y pueden estar en función de un parámetro t, para graficar
ecuaciones paramétricas o simplemente x ser la abcisa e y la ordenada. Para que se grafique es
necesario que x e y tengan las mismas dimensiones. Es posible graficar varias curvas en una
misma ventana utilizando la siguiente sintaxis:
plot(t1,y1, t2,y2,, ..., tn,yn)
Cuando se utiliza el comando para graficar números complejos, se grafica la parte real como
abscisa y la imaginaria como ordenada.
Si se desean graficar señales muestreadas o discretas se usa el comando stem. Para graficar
funciones simbólicas se utiliza el comando ezplot.

Ejemplo 1
𝑥 2 𝑦 2
Graficar la ecuación ( ) + ( ) − 1 = 0
2 5

1/4 x 2+1/25 y 2-1 = 0


6

0
y

-2

-4

-6
-6 -4 -2 0 2 4 6
x

13
Figura 1. Representación gráfica de la ecuación del ejemplo 1
2.1 Gestión de graficas
Algunas veces es necesario almacenar las gráficas para utilizarlas después o imprimirlas, para
realizar esas tareas Matlab dispone del comando print, el cual nos permite imprimir la gráfica,
copiarla en el clipboard para pegarla en otro programa como Word o almacenarla en un archivo.

Con la primera opción se guarda la imagen en el disco duro en formato posScript. Con la
segunda se imprime y con la tercera se guarda en el clipboard de Windows con formato de mapa
de bits.
2.2 Formato de presentación
Matlab permite personalizar la presentación de los gráficos. Con el comando grid aparece una
cuadricula en la figura actual. Para marcar los ejes se usa xlabel, ylabel y para dale un título a la
gráfica, title. Para especificar la escala de los ejes se usa el comando axis([xmin, xmax, ymin,
ymax]).

Ejemplo 2
Graficar una señal senoidal con cuadricula, ejes, título, tipo de línea punteada y color rojo

14
señal senoidal
1

0.8

0.6

0.4

0.2
amplitud
0

-0.2

-0.4

-0.6

-0.8

-1
-3 -2 -1 0 1 2 3
tiempo

Figura 2. Representación de la figura del ejemplo 2

Además es posible cambiar el color, tipo de línea y tipo de marcador utilizando un tercer
argumento en el comando plot, este argumento es una cadena de tres caracteres donde se
especifica el tipo de línea, de marcador y el color. La configuración de cada una de estas
características se realiza con base en las siguientes tablas:

15
Por ejemplo, plot(x,y,'-.or') dibuja x versus y usando un dash-dot line, marcadores circulares
para los datos de los puntos, y color rojo tanto para el marcador como para el tipo de línea. Estos
componentes se pueden especificar en cualquier orden después de los argumentos de la función
plot, es decir, en lugar de ingresar plot(x,y,'-.or') también se podría ingresar plot(x,y,'o-.r') o
plot(x,y,'or-.') o las otras posibles combinaciones.
Utilizando el comando doc plot es posible obtener todas las opciones para este comando.
El comando hold se usa para mantener la figura actual activa y poder superponer curvas.
Cuando se utiliza el comando hold on la figura queda congelada y todos los resultados que se
grafiquen aparecerán en la misma ventana. Si se desea graficar en una figura nueva se digita hold
off.
Por ejemplo para graficar y1, y2 en una misma figura y y3, y4 en otra:
plot(y1)

16
hold on;
plot(y2)
hold off

Hasta este momento es posible visualizar y1,y2 en una misma figura.


plot(y3)
hold on;
plot(y4)
hold off:

Ahora 3 y 4 aparecen juntos en una nueva figura


El comando figure, se usa para crear nuevas ventanas para gráficos
plot(y1)
hold on;
plot(y2)
figure;
plot(y3)

plot(y4)

El comando legend permite especificar los nombres de cada una de las gráficas y muestra el
patrón correspondiente de la curva. Es útil cuando se están graficando varias señales en una
misma figura.

También es posible especificar el ancho de línea, el tamaño del marcador y los colores de la línea
y de borde y de cara del marcador en una gráfica.
El comando clf se usa para borrar lo que haya graficado en una figura, pero mantiene la figura
activa, mientras que el comando close, cierra la figura.

Ejemplo 3
Graficar la función Seno en tres diferentes rangos usando diferentes estilos de línea, colores y
marcadores.

17
Señales Senoidales
1
sin(t)
0.8 sin(t-pi/2)
sin(t-pi)
0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6
tiempo(s)

Figura 3. Representación gráfica del ejemplo 3

18
3. Generación de Señales
El carácter anteriormente utilizado “ : “ se utiliza tanto para referenciar matrices, como para
generar vectores.
Ejemplo 1
Construir un vector con los enteros comprendidos entre 0 y 6.

Para generar incrementos diferentes a la unidad se ingresa un tercer parámetro para indicar el
incremento del paso.

Ejemplo 2
Si en lugar de determinar el paso del incremento, se necesita tener un número de elementos
igualmente espaciados se utiliza el comando linspace. La sintaxis es:

Construir el vector t = 0:6 usando el comando linspace

También es posible generar vectores en escala logarítmica usando el comando logspace.


La sintaxis es:

Valor_Inicial y Valor_Final se especifican en décadas.

Ejemplo 3

19
Generalmente las señales están en función del tiempo por tanto es necesario generar este
vector.
Generar una señal parabólica unitaria de duración 2s y periodo de muestreo de 0.1s

Señal Parabólica
2

1.8

1.6

1.4

1.2
y = (1/2)*t.2

0.8

0.6

0.4

0.2

0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo(s)

Figura 4. Representación gráfica del ejemplo 3

20
Ejemplo 4
Construir una señal senoidal de amplitud 4 y frecuencia 20rad/s a partir del vector de tiempo
anterior y graficar con el comando stem.

21
Señal Senoidal
4

y = 4*sin(20*t) 0

-1

-2

-3

-4
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo(s)

Figura 5. Representación gráfica del ejemplo 4.

Como se observa en los resultados numéricos y en la gráfica, los cambios de valores son muy
bruscos pues el periodo de muestreo es muy grande comparado con la frecuencia de la señal,
por lo que la anterior grafica no corresponde a una señal senoidal.

Pero si disminuye el periodo de muestreo, se obtiene:

22
Señal Senoidal
4

1
y = 4*sin(20*t)

-1

-2

-3

-4
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
tiempo(s)

Figura 6. Representación gráfica del ejemplo 4 con un menor periodo de muestreo.

23
4. Análisis de datos

En Matlab se puede realizar el análisis de datos estadística o probabilísticamente. Entre estos


análisis están cálculos de medias, máximos, mínimos, desviaciones estándar, etc.

Ejemplo 1
Análisis conjunto de datos

Si escribimos el comando plot (x), tenemos la representación gráfica de los puntos anteriores.

24
45

40

35

30

25

20

15

10

0
0 2 4 6 8 10 12 14

Figura 7. Representación gráfica de los puntos

A continuación se hace una análisis de los datos presentados, habrá dos respuestas porque se
tienen dos columnas.

0
0 5 10 15 20 25 30 35 40 45

25
Figura 8. Histograma obtenido

5. Interpolación

Matlab dispone de una herramienta que permite realizar varios tipos de interpolaciones a datos
experimentales, ésta se invoca mediante el uso del comando cftool en la ventana de comandos.
Al abrir la herramienta, esta presenta los siguientes botones de opciones:

Figura 9. Opciones de la herramienta cftool

El botón Data permite realizar la entrada de los datos experimentales a la herramienta (x, y), el
botón Fitting permite seleccionar el tipo de interpolación a realizar.

Ejemplo 1
Interpolación de grado 2 para un conjunto de datos

Luego se selecciona Data y en X Data y Y Data se seleccionan los vectores x, y


respectivamente y se finaliza dando clic en Create data set y close.

26
Figura 10. Menú de la opción Data

Posteriormente a crear el conjunto de datos a analizar, se entra a la opción Fitting del menú
principal de la herramienta cftool y se selecciona New fit, luego de esto se puede seleccionar
cualquier tipo de interpolación de las cuales dispone la herramienta. Se puede cambiar el nombre
de la interpolación en la opción Fit name. Se selecciona Type of fit: polynomial y el tipo de
polinomio como quadratic polynomial, luego se da clic en Apply y se observan los parámetros
del ajuste en la ventana de resultados (Debajo de la selección del polinomio).

27
Figura 11. Opciones del editor de selección de interpolación

Figura 12. Resultados de la interpolación en los cuales se presenta la ecuación polinómica


obtenida y el ajuste de la interpolación (Se busca R-sqare=1 para un excelente ajuste).

Luego de esto, al cerrar el Fit editor, en la ventana principal de cftool, se observa la interpolación
obtenida y luego dando clic en file y print to figure, se obtiene un archivo .fig de Matlab el cual
se puede editar mediante los comandos title, axis, legend, grid, xlabel, ylabel para darle la
información pertinente a la figura obtenida.

28
Interpolación de segundo Orden
0.7

0.6

0.5

0.4
y

0.3

0.2

Señal Original
0.1
Interpolación de 2 Orden

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


x

Figura 13. Interpolación de segundo orden al conjunto de datos experimentales

En la gráfica anterior se puede observar que la interpolación es pobre.

Ejemplo 2
Para una interpolación de quinto grado se obtiene:

Interpolación de Quinto Orden


0.7

0.6

0.5

0.4
y

0.3

0.2 Señal Original


Interpolación de 5 Orden

0.1

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1


x

Figura 14. Interpolación de quinto orden al conjunto de datos experimentales

La cual es una aproximación muy buena de los datos de entrada (R-square: 0.9887).

29
6. Estructuras de control de flujo

Matlab dispone de diferentes estructuras de control de flujo empleadas comúnmente en


progamación.

➢ Instrucción for
For i =valorInicial : incremento : valorFinal
Instrucciones
End
➢ Instrucción while
While expresión
Instrucciones
End
➢ Instrucción if
if expresión 1
Instrucciones
else if expresión 2
Instrucciones
.
.
else if expresión n
Instrucciones
else
Instrucciones
end
➢ Instrucción switch
switch switch expresion
case case expresión1
Instrucciones
case case expresión2
Instrucciones
Otherwise,
Instrucciones

30
7. Scripts y funciones
Matlab permite automatizar procedimientos y crear nuevas funciones para facilitar tareas
repetitivas.
Un script es un conjunto de instrucciones que se escribe en el editor de comandos y que una vez
se cargan en Matlab se ejecuta todo el procedimiento, la diferencia entre el script y las funciones
es que las segundas permiten el ingreso de argumentos. De esta manera es posible ejecutar una
secuencia de instrucciones de manera repetida pero sin tener que escribir todo el programa de
nuevo.

Ejemplo 1:
Escribir un script que genere automáticamente una matriz aleatoria de 3x3 y con ceros en las
esquinas.
Solución: en la ventana del editor escribimos

Se guarda con el nombre que se desee y luego para ejecutar el programa, en la ventana de
comandos se ingresa el nombre con el que lo guardamos.
Si en la primera fila ingresamos el comando function, creamos una función. La sintaxis es la
siguiente:

Ejemplo 2
Crear una función que genere una matriz aleatoria de 𝑛 × 𝑛 y con ceros en las esquinas
Solución:
En el editor de comandos se escribe:

Luego en la ventana de comandos se ingresa

31
El resultado es

Si ingresamos help matrizN en la ventana de comandos, aparece la documentación del


programa.

Ejemplo 3
Diseñar una función que genere un tren de impulsos rampa y permita ingresar el número, la
duración de los pulsos y el periodo de muestreo.

32
Señal Rampa
5

4.5

3.5

amplitud 2.5

1.5

0.5

0
0 5 10 15 20 25 30 35 40 45 50
tiempo(s)

Figura 15. Señal rampa obtenida por el generador de pulsos del ejemplo 3
Ejemplo 4

Construir una función que genere una señal sinusoidal de duración, período de muestreo,
frecuencia y amplitud arbitrarias. Con la función realizada genere la siguiente señal Sinusoidal:
señal senoidal
10

2
amplitud

-2

-4

-6

-8

-10
0 1 2 3 4 5 6
tiempo(s)

Figura 16. Señal Sinusoidal que se debe reproducir

Ayuda: Utilice como guía la lógica implementada en la función de ejemplo del ejemplo 3.

33
Ejemplo 5
Escriba un script que permita escoger el tipo de señal mediante un menú, de tal manera que se
puedan ingresar en la ventana de comandos los parámetros de las señales y permita escuchar la
señal senoidal.

Al correr el programa se obtiene el siguiente menú:

34
Figura 17. Menú del generador de señales

Al ingresar determinados valores en los parámetros de entrada, se obtienen las siguientes gráficas
para verificar el correcto funcionamiento del generador de señales:

Señal Rampa
6

4
amplitud

0
0 5 10 15 20 25 30 35 40 45 50
tiempo(s)
señal senoidal
10

5
amplitud

-5

-10
0 2 4 6 8 10 12 14
tiempo(s)

Figura 18. Señales de verificación del generador de señales.

El comando sound permite convertir vectores en sonido, es importante resaltar que para
percibir el sonido la frecuencia del vector debe estar entre 1 y 18 Khz además el periodo de
muestreo debe ser acorde a la frecuencia de la señal.
Para más información sobre alguno de los comandos utilice:

35