Curso de MATLAB dictado en ESPOL, Guayaquil, Ecuador. Basado en recursos de la Web y de material desarrollado en ESPOL.
- 1. Introduccin a MATLABpara Ingenieros Ing. Jos Crdova
Garca
2. Capacitacin en MATLAB
-
- MATLAB Aplicado a la Ingeniera.
-
- Introduccin a MATLAB para Ingenieros.
3. Contenido
4. Presentacin del Curso.
- Perfil de los participantes:
- Competencias a adquirir al finalizar el Curso.
5. Evaluacin del Curso
- Para obtener el CERTIFICADO DE APROBACION del curso necesita
obtener por lo menos el 70% de calificacin.
-
-
-
- 50% Evaluacin Terica a mitad del contenido del curso
(opcional).
-
-
-
- 50%/100% Evaluacin del desempeo Grupal (Asistencia) y Proyecto
final.
6. Evaluacin del Curso
- Para obtener el CERTIFICADO DE ASISTENCIA al curso usted
necesita tener por lo menos el 70% de asistencias del total de
horas impartidas del curso.
- El certificado se entregar por 30 Horas, vlidas para convalidar
la Materia Seminarios (Optativa en las carreras de la FIEC).
7. Formato del Curso
- Practicas Guiadas y Hands-on (Kolb).
- 10 Sesiones Planificadas de 2 horas y media de duracin.
- La asistencia se considera solo al completar la practica.
- Poltica de Examen y Ejemplo.
- Fecha de Entrega de Certificados.
8. MATLAB Introduccion 9. Que es MATLAB
- Computacin, Visualizacin y Programacin.
- Problemas y soluciones en notacin Matemtica (de Matrices).
10. Aplicaciones?
- Desarrollo y Test de algoritmos.
- Modelado, Simulacin y Prototipos.
- Anlisis de Datos, exploracin y visualizacin.
- Grficas de Ingeniera y Cientficas.
- Desarrollo de Aplicaciones finales (GUI)
11. Aplicaciones? 12. MATLAB?
- Matrix Laboratory (Laboratorio de Matrices).
- Elemento bsico: [Matriz] (en adelante Arreglo) que no requiere
dimensin.
- Problemas que involucran matrices y vectores son consumidores
de tiempo (C, C++, Fortran, etc.)
13. Entorno de Trabajo
14. MATLAB como Calculadora
- Desde la ventana de comandos ingrese:
- Verifique la respuesta de MATLAB.
15. Nmeros
- Por defecto se usa la notacin decimal convencional.
- La letra e se usa para definir notacin cientfica (x10).
- Los nmeros imaginarios se definen usando las letras i y j.
16. Nmeros
- Los nmeros tienen una precisin de 16 dgitos significativos
decimales y un rango entre 10 -308y 10 +308 .
- Todas las operaciones en MATLAB se realizan en precisin
doble.
- El formato es la manera en como se muestran los valores
17. Formato
- Usando el comando format:
18. Variables
- La variable ANS es bsica en MATLAB.
- Verifique el resultado almacenado en ANS.
- Verifique el uso de variables y resultado.
19. Variables
- Las variables no requieren de una declaracin de tipo o
tamao.
- MATLAB crea el espacio necesario y asocia el tipo adecuado para
definir esa variable, si es que no la encuentra en el
Workspace.
20. Variables
- Las variables tienen un limite de tamao de nombre de 31
caracteres.
- Deben empezar con una letra SIEMPRE.
- NO deben contener caracteres especiales, salvo el underscore
_
21. Las letras i y j
- i y j estan reservadas para definir numeros complejos.
- Verifique el comportamiento de i
22. Otras palabras reservadas
- realmin el nmero ms pequeo, 2 -1022
- realmax el nmero ms grande, 2 1023
23. Comandos de manejo de Sesin
24. Practica 1
- Precedencia de Operadores.
25. MATLAB Vectores 26. Vectores Fila
- Vectores que se ven como filas
- Se definen con espacios o comas entre sus elementos.
- Verifique el resultado en el workspace.
- Verifique el resultado en el workspace.
27. Vectores Fila
- Puede haber problemas con los espacios.
- Verifique el comportamiento
- Verifique el comportamiento
28. Operaciones Vectores Fila
- Deben tener la misma dimensin para la suma.
- Pueden multiplicarse por un escalar.
29. Definicin Vectores
- Se pueden formar vectores a partir de otros vectores
(variables) ya definidos:
- >> w = [1 2 3], z = [8 9]
- >> cd = [2*z,-w], sort(cd)
- Verifique el comportamiento.
30. Indice en Vectores Fila
- Se puede recuperar (ver) el valor de un componente de un vector
o cambiarlo haciendo uso de un indice.
- El indice se define con el nombre de variable del vector y con
los parntesis para acceder a la posicin del elemento a
cambiar/ver.
31. El operador :
- Cual es la funcin del operador :?
- De manera general a : b : c produce un vector con valor inicial
a, valor final c e incrementos de b.
32. El operador :
- Se puede usar el operador : para definir vectores:
- >> r5 = [1:2:6, -1:-2:-7]
- Para obtener los elementos del 3 al 6
- Cual sera el resultado de?
33. Vectores Columna
- Vectores que se ven como columna.
34. Transpuesta
- Se puede convertir un vector fila en un vector columna y
viceversa.
- Defina el vector complejo:
- La transpuesta para x corresponder a la transpuesta
conjugada.
35. Producto de Vectores
- Multiplicacin de Vector Fila x Columna
- >> u = [ 10, -11, 12], v = [20; -21; -22]
- Es una multiplicacin Matricial!.
- >> w = [2, 1, 3], z = [7; 6; 5]
- Verifique ambos ejemplos.
36. Norma de un Vector
- El siguiente muestra dos maneras de obtener la norma (distancia
euclidiana) de un vector:
- >> [ sqrt(u*u'), norm(u)]
37. El operador .
- Corresponde al producto Hadamard.
- Trabaja sobre vectores del mismo tipo (fila o columna).
38. El operador .
- Se puede usar tambin para la divisin:
- >> a = 1:5, b = 6:10, a./b
39. MATLAB Matrices 40. Ingreso de Matrices
- Ingrese en la ventana de comandos:
- >>A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1 ]
- Use la flecha hacia arriba y reemplace los espacios en blanco
con comas.
41. Manejo de Subindices
- Subindices ser la manera de acceder a un elemento de una
matriz.
- Usa los parentesis y el nombre de la variable.
- Verifique el resultado y la relacin con A.
42. El operador :
- Cual es la funcin del operador : manejando subindices?
43. El operador :
- Se puede utilizar el operador : para generar matrices:
- >> D = [1:5; 6:10; 11:2:20]
- Verifique el resultado anterior.
44. Vectores y Matrices
- En MATLAB en general todos son arreglos.
- Un vector columna ser una matriz de mx1.
- Un vector fila ser una matriz de 1xn.
45. Tamao de Matrices
- El comando size nos devuelve la dimensin de la matriz que se
usa como parametro.
- El ultimo comando muestra que el valor retornado por size es en
si mismo una matriz de 1x2.
46. Tamao de Matrices
- Tambin se puede guardar las dimensiones de una matriz en
variables separadas.
- >> [r c] = size(A'), S = size(A')
- Verifique los valores de r y c y de S.
- Verifique tambin los tipos de dato (arreglo) de dichas
variables.
47. Matrices Especiales
- MATLAB provee algunas funciones propias de un tamao
deseado.
- ones(m,n) da una matriz de mxn llena de unos.
- zeros(m,n) da una matriz de mxn llena de ceros.
48. Matriz Identidad
- Es una matriz de ceros pero en su diagonal principal esta llena
de unos.
- >> I = eye(3), x = [8; -4; 1], I*x
- Note que eye(3) es una matriz cuadrada identidad.
- Verifique el resultado de I*x.
49. Matriz Diagonal
- Es una matriz identidad pero su diagonal principal no es
necesariamente ceros.
- >> D = [-3 0 0; 0 4 0; 0 0 2]
- El comando diag puede generar una matriz diagonal a partir de
un vector.
- >> d = [-3 4 2], D = diag(d)
50. Matriz Diagonal
- Por otro lado si A es una matriz el comando diag(A) extrae la
diagonal principal de dicha matriz, incluso si la matriz A no es
cuadrada.
- >> F = [0 1 8 7; 3 -2 -4 2; 4 2 1 1]
- Verifique la variable ans e identifique la diagonal de F.
51. Construccin de Matrices
- A veces es necesario generar matrices grandes a partir de otras
mas pequeas (o vectores).
- >> C=[0 1; 3 -2; 4 2]; x=[8;-4;1];
- Note que C es una matriz y x es un vector columna.
52. Construccin de Matrices
- Se pueden construir matrices usando tambin funciones y
operaciones sobre matrices:
- >> J = [1:4; 5:8; 9:12; 20 0 5 4
- >> K = [ diag(1:4) J; J' zeros(4,4)]
- Pruebe el siguiente comando:
53. El operador end
- Indica el ultimo elemento.
54. MATLAB Comandos y Funciones tiles 55. Expresiones
- Expresiones Matemticas elementales:
- Expresiones Matemticas especiales:
- Expresiones de Matrices elementales:
56. Nmeros Aleatorios
- Para generalos usamos las funciones:
57. Suma de Elementos
- Se utiliza el comando sum.
- Genere un matriz para probar los siguientes comandos:
58. Manejo de valores
- Se manejan complejos automaticos:
- Y valores excepcin correctamente:
59. Residue
- La funcin residue, descompone el cociente de una fraccin en
fracciones parciales.
- Teniendo un cociente de la forma:
60. Residue
- Entrega los resultados para:
61. Residue
62. Sistema Lineal
- Use representacin en MATLAB para resolver un sistema lineal del
tipo:
63. MATLAB Scripts y Funciones 64. Scripts
- Son archivos de texto (.m) que contienen comandos de
MATLAB.
- Para ejecutar los comandos de ese archivo se debe escribir el
nombre del archivo en la ventana de comandos.
- Las variables y resultados son de ambito GLOBAL.
65. Scripts
- Debe estar contenido en el directorio actual para poder
ejecutarlo (F5 o como comando).
- Los nombres de los scripts deben seguir la regla de las
variables de MATLAB.
- Mucho ojo con los espacios.
66. Scripts
- El nombre del script no debera interferir con alguna funcin o
con una variable (error comun).
- Los comentarios en MATLAB se generan con el smbolo %:
- >> %Esto es un comentario
67. Script de Ejemplo 68. Funciones
- Son user-defined a diferencia de las built-in, tambin escritas
en .m.
- Las buit-in tambin son llamadas funciones de llamada.
- Las user-defined son llamadas funciones de definicin.
- SIEMPRE reciben parametros para realizar los calculos.
69. Funciones
- Los comandos dentro de las funciones operan sobre los
parmetros.
- Las variables y resultados son de ambito LOCAL.
- Los .m de funciones deben encontrarse en el directorio actual
para poder ser llamadas.
70. Funciones
- Luego de ser creadas y siempre que estemos en el directorio
actual donde esta contenido el .m de la funcin de definicin,
entonces la funcin se convertir en de llamada.
- Tambin se puede agregar funciones de definicin a MATLAB.
71. Funciones
- El nombre de la funcin no DEBERIA interferir con alguno de una
buit-in, ni de otra variable (error comn).
- El nombre del archivo .m conteniendo a la definicin de la
funcin DEBE ser igual al nombre de la funcin.
72. Funciones
- La primera linea del archivo debe tener el formato:
- Luego de esta linea se puede documentar la funcin usando
comentarios.
73. Ejemplo Funciones
- Escriba desde la ventana de comandos:
74. Scripts vs. Funciones 75. Mostrar y Pedir datos
- La funcin INPUT imprime un mensaje en la ventana de comandos y
devuelve el resultado de una expresin teclada por el usuario.
- INPUT espera hasta que el usuario ingrese un valor numrico o
una expresin
76. Mostrar y Pedir datos
- Cualquier expresin vlida de MATLAB es aceptada por INPUT.
- >> edad = input(Ingrese la edad: ')
- En el caso que sea una cadena de texto es recomendable:
- >> nombre = input('Cmo te llamas?','s')
77. Mostrar y Pedir datos
- La funcin DISP imprime un mensaje en la ventana de comandos,
puede ser un mensaje de texto o variables.
- >> disp('El programa ha terminado')
78. Practica 3
- Participantes por grupo: 2.
- Ambos ejercicios en modo script.
79. MATLAB Otros Tipos de Datos 80. Tipos de Datos 81. Tipos de
Datos
- Nos devuelve el tipo de dato de x.
- Tambien existen comandos que nos dan informacin lgica sobre
cada tipo:
- isinteger(x), isfloat(x), ischar(x), islogical(x), iscell(x),
isstruct(x).
- isempty(x), isnan(x), isinf(x).
82. Tipos de Datos
- El tipo de Dato entero corresponde:
- El tipo de Dato float corresponde:
83. Conversin de Tipo
- Para convertir se usa el nombre del tipo a generar como si
fuera funcin:
84. Funciones de Redondeo
- round: redondea al entero mas proximo.
- fix: redondea hacia cero.
85. Funciones de Redondeo
- >> x = pi*(-1:3), round(x)
86. Caracteres, Cadenas y Texto
- MATLAB maneja el tipo Carcter.
- Una cadena es un vector de caracteres.
- Un Texto es una matriz de caracteres.
- Asigna el valor de A al arreglo de carcter 1x1 t1.
87. Caracteres, Cadenas y Texto
- Asigna el valor BCDE al arreglo de caracteres 1x4 t2.
- Las cadenas creadas se pueden tomar como arreglos regulares y
manipularlos.
88. Acceso de Cadenas
- El direccionamiento funciona como en vectores:
89. Construccin de Cadenas
- >> t4 = [t3,' are the first 5 ';...
- 'characters in the alphabet.']
- 'characters in the alphabet.'
90. Construccin de Cadenas
- Al arreglo de 2x27 t4, es NECESARIO que ambas filas del arreglo
tengan el mismo numero de caracteres (elementos), eso es una regla
general de arreglos en MATLAB.
- Los significan que el comando continua en la lnea
siguiente.
91. Cadenas y Nmeros
- Todo carcter tiene un equivalente en valor numrico.
- str2numconvierte una cadena a su correspondiente representacin
numrica.
- int2strynum2strconvierte respectivamente un entero y un numero
real a su correspondiente cadena de caracteres.
92. Cadenas y Nmeros
- Deseamos generar la cadena: El valor de pi es 3.1416'.
- [El valor de pi es ',num2str(pi)].
- >> ['The value of N is ',int2str(N),...
93. Manejo de Cadenas
- El operador == realiza comparaciones entre vectores (elemento a
elemento)
94. Manejo de Cadenas 95. MATLAB Grficas 96. PLOT
- La funcin PLOT realiza grficos con por lo menos un
parmetro.
- En el siguiente ejemplo se crea un vector x con valores entre 0
y 2, se calcula el seno de esos valores y se grafican los
resultados:
97. PLOT: Ejemplo 1
98. PLOT: Ejemplo 2
- > >y = [0; .25; 3; 1.5; 2]
99. PLOT y Muestreo
- Para graficarpara el rango [0,1] se muestrea la funcin a un
numero suficientemente grande de puntos y luego se los une con
lneas rectas.
- Para tomar N+1 puntos igualmente espaciados a una distancia
h:
- >> N = 10; h = 1/N; x = 0:h:1;
100. PLOT y Muestreo
- Verifique el grfico e identifique que el numero N es muy pequeo
aun.
- Cambie N=100 y verifique el resultado.
101. PLOT y Muestreo
- El seno es una funcin continua.
- MATLAB trabaja con datos discretos.
- PLOT realiza una interpolacin lineal entre esos datos para
graficar.
- Mayor cantidad de puntos (muestras) harn que la grfica sea
practicamente continua.
102. Propiedades de un PLOT
- >>title('Grfica de la funcin seno','FontSize',12)
103. PLOTs con Estilo
- Plot puede recibir un tercer argumento.
- Tercer argumento es una cadena que recibe como primer carcter
el color y segundo el estilo de linea.
104. PLOTs con Estilo
- La cadena recibe hasta 3 caracteres:
105. Multi-PLOT
- >>legend('seno(x)','seno(x-.25)','seno(x-.5)')
106. PLOT y el GCA
- Cada llamado de la funcin PLOT es una peticin para crear un
nuevo eje (axis ventana donde se contiene el grfico).
- Cada llamado de PLOT entonces reemplazar la grfica
anterior.
- Mantiene el grfico actual en el eje actual.
107. PLOT y el HOLD
- Se puede llamar muchas veces a PLOT pero no se reemplazar el
grfico hasta que exista un:
- Comparar con lo aprendido en Varios Grficos en un PLOT.
108. AXIS
- La funcin/comando axis ajusta los ejes del grfico actual. Tiene
esta sintaxis:
- >>axis([xmin xmax ymin ymax])
- Cuando se crea un plot y no se ha definido axis entonces el
axis es automatico:
109. AXIS
- Pruebe estos valores para axis e identifique el efecto:
110. Resumen 111. Practica 112. SUBPLOT
- Divide la ventana de graficos en un arreglo mxn en donde se
pueden plotear mxn grficos.
- Se enumeran de izquierda a derecha, de arriba hacia abajo.
- subplot(221) (o subplot(2,2,1)) indica que se divide en 2x2
grficos y selecciona el 1 subgrfico.
113. SUBPLOT
- >> subplot(221), plot(x,y)
- >> xlabel('x'),ylabel('sin 3 pi x')
- >> subplot(222), plot(x,cos(3*pi*x))
- >> xlabel('x'),ylabel('cos 3 pi x')
- >> subplot(223), plot(x,sin(6*pi*x))
- >> xlabel('x'),ylabel('sin 6 pi x')
- >> subplot(224), plot(x,cos(6*pi*x))
- >> xlabel('x'),ylabel('cos 6 pi x')
114. Figuras, Ejes y Panel
- clf, limpia la figura actual.
- close 1, cierra la ventana llamada Figure 1.
- figure, abre una nueva ventana.
- figure(9), abre una nueva ventana Figure 9.
115. Figuras, Ejes y Panel
- Cuando se ha ejecutado el comando PLOT se crea (abre) una nueva
ventana que puede recibir graficos (ejes).
- El comando figure crea una ventana adicional y la convierte en
la actual, lo que significa que si ejecutamos un comando
relacionado a graficos (plot) usara la ventana actual para
graficarlo.
116. Figuras, Ejes y Panel
- El comando close cierra la ventana actual y el comando close
all cierra todos los graficos.
- Se pueden tener tambien varias graficas sobre la misma
ventana.
- La funcion hold permite montar los graficos de una misma
ventana actual.
117. Setear Propiedades a un Plot
- Todas las propiedades de cada objeto del grfico (figura, ejes,
elemento grfico,...) estn guardadas en "handles
- gcfcurrent figure, gca current axis
- get(handle) muestra todos las propiedades que se pueden
cambiar.
118. Setear Propiedades a un Plot
- set(handle,'PropertyName','Value',...) cambia propiedades.
- Para personalizar el eje x sin dependencia del vector:
- set(gca,'Xtick',[1 2 3 4 5 6]);
-
set(gca,'XtickLabel',['ene';'feb';'mar';'abr';'may';'jun']);
119. Funciones para Graficar Funciones para graficar en 2D bar
Grfica de barra fill Dibujo de polgono en 2D relleno hist
Histograma image Imagen loglog Grfica con ambos ejes en escala
logartmica plot Grfica simple polar Grfica en coordenadas polares
semilogx Grfica con ejexen escala logartmica semilogy Grfica con
ejeyen escala logartmica stairs Grfica de escalera stem Grfica de
secuencia discreta 120. Otras Funciones para Graficar
- x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8];
- Interprete los resultados.
121. Otras Maneras de Graficar 122. Otras Maneras de Graficar
123. Practica
- Ejecute el siguiente cdigo:
- >> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y;
- >> plot(x,y,':',x,Y,'-' )
- Interprete los resultados.
124. Practica
- Grafique en un solo panel:
125. Practica 126. MATLAB Estructuras de Control 127.
Estructuras de Control
- Se basan en evaluar una expresin si es verdadera o falsa
(1/0).
- Estas expresiones son resultados de operaciones con:
- (mayor que), == (igual a), = (mayor o igual que) y ~= (distinto
a).
128. Seleccin: IF
- Evala una condicin lgica y si dicha expresin evala un resultado
POSITIVO (1) entonces selecciona ejecutar un grupo de
instrucciones, sino evala otro grupo.
129. Seleccin: IF
- aun_otros_comandos_matlab
130. Seleccin: IF
- disp(valor es mayor que 0.5)
- >> subplot(4,2,n), plot(x,sin(n*pi*x))
137. Repeticin: Lazo While
- Se usa regularmente cuando no se conoce en primera instancia
cuantas repeticiones se deben ejecutar.
- Las repeticiones dependern de la expresin condicional que se
evala.
- MIENTRAS se cumpla sigue la repeticin.
138. Repeticin: Lazo While
139. Repeticin: Lazo While
- Imprimir el valor de x, mientras este sea positivo,
decrementando cada vez x en 17:
140. MATLAB Comandos y Funciones tiles II 141. Construccin de
Vectores Construccin de Vectores x = [1 3 9 33 0 -2] Se crea vector
filaxcon los elementos especificados x = primero:ltimo Se crea
vector filaxcomenzando conprimero , aumentando en intervalos de
uno, terminando en o antes deltimo x = primero:incremento:ltimo Se
crea vector filaxcomenzando conprimero , aumentando en intervalos
deincremento , terminando en o antes deltimo x =
linspace(primero,ltimo,n) Se crea vector filaxcomenzando conprimero
, terminando enltimo , teniendonelementos x =
logspace(primero,ltimo,n) Se crea vector filaxespaciado
logartmicamente comenzando con 10 primero , terminando en 10 ltimo
, teniendonelementos 142. Maximo y Minimo
- La funcin max opera sobre un vector retornando el valor
mximo.
- >> x = [1.3 -2.4 0 2.3], max(x), max(abs(x))
- Cuando tomamos 2 resultados de max, que representa el 2do.
Resultado?
143. Maximo y Minimo
- La funcin min opera d emanera similar a max.
- En el caso de que A sea una matriz max(A) retorna un vector
conteniendo el mximo elemento de cada columna (similar al
comportamiento de sum).
144. Busqueda en vectores
- El comando find devuelve una lista con las posiciones de los
elementos de un vector que satisfacen una determinada
condicin.
- >> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':')
- Verifique el contenido de k e interpretelo.
145. Busqueda en Vectores
- Representacin grfica de la bsqueda:
- >> hold on, plot(x(k),y(k),'o')
- >> km = find( x>0.5 & y>
plot(x(km),y(km),'-')
146. Busqueda en matrices
- Opera de manera muy similar en matrices:
- >> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0 1]
- Verifique e interprete el contenido de k.
- Find en una matriz realmente primero reordena (reshape) la
matriz en un vector para buscar.
147. Busqueda en matrices
123... 148. Busqueda en matrices
- Los indices del reordenamiento de la matriz quedan:
149. Busqueda en matrices
- n devuelve una lista de los lugares de las entradas de A que
cumplen ser menores que cero, luego A(n) nos devuelve los valores
de los elementos seleccionados.
150. Polinomios
- Los polinomios se definen en base a un vector de
coeficientes.
- MATLAB es una herramienta de clculo numerico.
151. Polinomios: Funciones
- Se pueden realizar algunas funciones, como obtener las raices
del polinomio y tambin evaluar el polinomio para un valor de
x.
152. Polinomios: Funciones
- Para realizar la multiplicacin entre polinomios MATLAB usa el
producto de convolucin.
153. Hipermatrices
- Matrices de mas de dos dimensiones.
- El tercer subindice representa la tercera dimensin: La
profundidad de la hipermatriz.
154. Manejo de Datos: Paginas
- Se muestra a continuacin cmo organizar las matrices x1 y x2 de
3x3 en dos pginas, o sea en un arreglo x de 3x3x2. (La variable x
debe estar inicialmente vaca o no existir):
- x2=[10 20 30; 40 50 60; 70 80 90]
155. Hipermatrices
- La informacin quedar organizada como se muestra en la
figura:
156. Hipermatrices
- Creacin a partir de otras matrices de dos dimensiones:
- >> AA(:,:,1)=[1 2 3; 4 5 6]
- >> AA(:,:,2)=[2 3 4; 5 6 7]
- Las funciones comunes para uso con matrices, tambin pueden
manejar hipermatrices.
157. Hipermatrices
- Verifique el resultado como MATLAB muestra el contenido de las
hipermatrices pequeas.
- >> A=zeros(2,3); B=ones(2,3);
- Por su naturaleza la concatenacin se realiza a traves de
funciones.
158. Hipermatrices
- La funcin cat concatena arreglos.
- Recibe 3 parametros el primero es la dimensin a lo largo de la
cual concatenar 2 matrices pasadas como parametros.
- CAT(2,A,B) is the same as [A,B].
- CAT(1,A,B) is the same as [A;B].
159. Hipermatrices
- Verifique como MATLAB arma la matriz usando cat.
160. Hipermatrices
- Tienen reglas especiales para usar funciones con ellas.
- Todas las funciones de MATLAB que operan sobre escalares (
sin(), cos(), etc.)se aplican sobre hipermatrices elemento a
elemento (igual que sobre vectores y matrices).
161. Hipermatrices
- Las funciones que operan sobre vectores ( sum(), max(), etc.)se
aplican a matrices e hipermatrices segn la primera dimensin,
resultando un array de una dimensin inferior.
162. Hipermatrices
- Las funciones matriciales propias del lgebra Lineal ( det(),
inv(), etc.)no se pueden aplicar a hipermatrices. Para poderlas
aplicar hay que extraer primero las matrices correspondientes (por
ejemplo, con el operador dos puntos (:)).
163. Hipermatrices: Reshape
164. Manejo de Datos
- Matlab permite varias opciones para almacenar las variables con
las cuales se trabaja para su posterior utilizacin. En todos los
casos el comando es save.
- Para guardar archivos con cdigo ASCII. La sintaxis es:
- Todas las variables que se graben usando este metodo deben
tener la misma dimensin.
165. Manejo de Datos
- Todas las variables que se graben usando este metodo deben
tener la misma dimensin.
166. Manejo de Datos
- Para guardar datos en formato binario:
- Las variables no necesariamente deben tener la misma
dimensin.
- Se pueden generar archivos de datos para leer desde MATLAB
usando un editor de texto como el Notepad, mantener la extensin
.dat para identificar que es un archivo de datos.
167. Manejo de Datos
- Supongamos un fichero llamado datos.txt que tiene, por ejemplo,
dos columnas de valores que son nmeros reales.
- Para leer los datos del fichero:
- [x1,x2] = textread(datos.txt,%f %f);
168. Manejo de Datos
169. Manejo de Datos
- Creando un archivo llamado flat.txt que contenga las
lneas:
- El comandoA=load(flat.txt)leer estos valores y los asignar a la
matrizA .
170. MATLAB Grficas 3D 171. Grficas en 3 Dimensiones
- Tambin se basa en graficar puntos:
- >> plot3(sin(t),cos(t),t)
- Esta grfica es paramtrica.
- Un solo parmetro resulta en una grfica de linea. Se extiende la
etiqueta zlabel(texto)
172. Graficas en 3 Dimensiones
- Se deben generar los valores a graficar, estos deben ser una
matriz.
173. Graficas en 3 Dimensiones
- Se puede cambiar la vista desde la ventana de comandos:
174. Superficies
- Una superficie tambin se define matemticamente con una funcin
f(x,y).
- Para cada valor de (x,y) se calcula la altura de la funcin: z =
f(x,y).
- Para plotear esto debemos definir un rango de x y de y para el
grfico.
175. Superficies
- x = 2:0.5:4; y = 1:0.5:3;
- Definido el dominio debemos definir la grilla de valores que
servirn de los puntos (x,y) para graficar.
- Esto es como relacionar x y y.
176. Superficies
- >> [X,Y] = meshgrid(2:.5:4, 1:.5:3);
- Si tomamos el i-esimo punto desde la izquierda y el j-esimo
punto desde debajo de la grilla como el correspondiente (i,j)
entrada en una matriz, entonces (X(i,j),Y(i,j)) seran las
coordenadas de ese punto.
177. Superficies
- Plotee la siguiente funcin:
- >> [X,Y] = meshgrid(2:.2:4, 1:.2:3);
- >> Z = (X-3).^2-(Y-2).^2;
- >> title(Silla'), xlabel('x'),ylabel('y')
178. Superficies
- Grafique la siguiente superficie:
- Encuentre los valores mximos de la funcin.
179. Superficies
- >> [X,Y] = meshgrid(-2:.1:2,-2:.2:2);
- >> f = -X.*Y.*exp(-2*(X.^2+Y.^2));
- >> mesh(X,Y,f), xlabel('x'), ylabel('y'), grid
- >> figure (2), contour(X,Y,f)
- >> xlabel('x'), ylabel('y'), grid, hold on
180. Superficies
- Para encontrar los mximos:
- >> Pos = [X(kmax), Y(kmax)]
- >> plot(X(kmax),Y(kmax),'*')
- >> text(X(kmax),Y(kmax),' Maximo')
181. Diferentes Dominios
- x=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10;
182. Diferentes Dominios
183. Otros Graficos 3D 184. MATLAB Estructuras y Celdas 185.
Tipos de Datos 186. Estructuras
- Permiten guardar valores de diferente tipo de dato bajo un
mismo nombre.
- Organizan la informacin, siguen un modelo de campo-valor.
- El acceso a los elementos de cada una de las claves se hace con
.
187. Estructuras
- Se pueden crear tambien vectores de Estructuras:
- >>punto(2).x=4, punto(2).y=5, punto(2).color='verde'
188. Estructuras
- Verifique el direccionamiento:
- Y el direccionamiento de campos:
189. Celdas (Cell Array)
- Construye un arreglo donde cada elemento puede ser de un tipo
diferente.
- >> c={12,'Red',magic(4)};
- Verifique el contenido de c en el workspace
- Se utilizan llaves { } en lugar de corchetes [ ] o parntesis (
)
190. Celdas (Cell Array)
- La diferencia con las estructuras es que se accede a los
valores utilizando un ndice en lugar del nombre del campo.
- Trabajar con estructuras es ineficiente
191. Celdas (Cell Array)
192. Celdas (Cell Array)
- Utilizando ( ) accede a un elemento, que es tipo cell.
- Utilizando { } accede al valor.
193. MATLAB GUIDE 194. GUI
- GUI (Graphical User Interface) es util para presentar un
desarrollo final.
- Adhiere usabilidad al ajuste de parametros y visualizacion de
un programa
- La elaboracin de GUI se puede realizar de dos formas:
-
-
-
- Cdigo a travs de un script
-
-
-
- GUIDE que es la herramienta de diseo de MatLAB .
195. GUIDE
- Para iniciarla ejecute el comando guide en MATLAB
196. GUIDE
- Obtendra un formulario en blanco al cual puede agregar
CONTROLES.
- Se debe antes preparar un diseo de la GUI
197. Partes de la ventana GUIDE 198. Estructura Jerrquica de
controles 199. Ejemplo: PLOTTER
- Se desea crear una GUI que realice un PLOT de una funcion
determinada.
- Primero se ubican los controles basicos para el programa del
menu: axes, static text, edit box, button.
200. Controles Basicos
- Axes: un espacio para dibujar.
- Static text: texto que se adhiere a lapantalla y el usuario no
puede editarlo
- Edit box: una caja blanca que el usuario puede modificarel
contenido
- Button: realiza una accion cuando el usuario da click en
el.
201. El Inspector de Propiedades
- Cuando le dan doble click a un control, muestra una ventana
listando todas las propiedades de ese control (fuente, posicion,
tamao, etc.).
- Tag: el nombre del control en el codigo, es mejor renombrarlo
por algo identificable.
202. El Inspector de Propiedades
- String: el texto queaparece en el control.
- ForegroundColor:color del texto.
- Background color:color del control.
203. Ejecutando
- Si presionan la flecha verde en la parte superior del editor
GUI se grabara el trabajo actual y correra el programa.La primera
vez que lo corra preguntara el nombre del programa.
- Probar corriendo el programa. (que aun no hace nada).
204. Ejecutando
- Para agregar funcionalidad a la GUI se debe definir un callback
para el boton para que asi grafique la funcion cuando se
presione
205. Plotter 206. Escribiendo Callbacks
- Cuando se corra el programa, se crean 2 archivos:
- .fig: contiene el esquema grafico de los controles.
- .m: contiene el codigo que define la funcin callback para cada
uno de los controles.
207. Escribiendo Callbacks
- Generalmente no se edita el codigo de inicializacion del
.m.
- Probablemente muchos callbacks de controles se quedaran en
blanco.
- Se puede seleccionar el control y dar click derecho para editar
el Callback con la opcin View Callback.
208. El Callback del botn
- % --- Executes on button press in PlotButton.
- functionPlotButton_Callback(hObject, eventdata, handles)
- % hObject handle to PlotButton (see GCBO)
- % eventdata reserved - to be defined in a future version of
MATLAB
- % handles structure with handles and user data (see
GUIDATA)
209. El Callback del boton
- Se pueden borrar los comentarios.
- Cada funcion tiene el parametro handles.Dicho parametro
contiene todos los controles: handles.PlotButton, handles.edit1,
etc
- Se pueden agregar variables a handles para hacerlas disponbiles
en todos los controles/funciones: handles.x=42;
210. Handles
- Cada uno de los objetos de MATLAB tiene un identificador nico
(handle), a los cuales se les llamar handle o id.
- Los identificadores de la ventana activa, de los ejes activos y
del objeto activo se pueden obtener respectivamente con los
comandos :
211. Handles
-
-
- gcf (get current figure) devuelve un entero, que es el handle
de la ventana activa
-
-
- gca (get current axes) devuelve el handle de los ejes
activos
-
-
- gco (get current object) devuelve el handle del objeto
activo
-
-
- delete(handle) borra el objeto correspondiente y todos sus
objetos que dependen de l.
212. Escribiendo Callbacks
- Se puede obtener cualquier propiedad de un control con la
funcion GET.De manera similar, se puede cambiar el valor de
cualquier propiedad con la funcin SET.
- En este caso queremos OBTENER el String escrito en el edit box
y graficarlo.
213. Escribiendo Callbacks
- function PlotButton_Callback(hObject, eventdata, handles)
- s = get(handles.functionEdit, 'String');
- y = eval(s);%eval just evaluates the given string
- handles.axes1;%Subsequent commands draw on axes1.
214. Corriendo el programa
- Cuando se modifica el codigo del m-file no se tiene que volver
a correr la GUI (solo se ha modificado la funcionalidad).
- Para correr el GUI se puede usar tambien desde el command
window el nombre de la GUI como si fuera un script.
215. Otros controles
- Slider bar: el usuario puede moverse adelante y hacia atrs. La
posicion actual es dada por Value, el cual esta entre un Min y un
Max.El callback se activa en cualquier momento que el slider es
movido.
- Check box: el usuario puede activar o desactivarlo, similar al
Radio Button.
216. Otros controles
- Pop-up menu: el usuario puede seleccionar de una lista de
items. En la propiedad String, se pueden tipear multiples lineas.La
opcion seleccionada actualmente esta dada por Value.
- Panel: un rectangulo para colocar controles, util para
organizar la GUI.
217. Trabajando con el Workspace
- Desde la ventana de comandos se puede modificar el workspace de
matlab.
- El comando evalin permite leer variables desde el
workspace.
- Por ejemplo para leer el nombre de variable tipeado en un edit
box a handles.x
218. Trabajando con el Workspace
- s = get(variableEdit, 'String');
- handles.x=evalin('base',s);
- Para escribir un valor en el workspace se usa assignin.
- Para crear una variable x en el workspace:
- assignin ('base', 'x', handles.x);
219. Practica:
- Deber re-escribir 3 metodos callback para la funcionalidad
mostrada:
- Usar funciones: get y set, conversion de caracteres,
operaciones matematicas, y para salir muestre un mensaje (msgbox)
diciendo que va a salir del programa durante 3 segundos antes que
se cierre (close).
220. Practica 221. MATLAB DAQ 222. Toolbox: DAQ
- El toolbox de Adquisicin de Datos (DAQ) le permite al usuario
capturar y/o generar seales reales e interactuar con ellas desde
Matlab.
- Un sistema de adquisicin de datos es un conjunto de software y
hardware que permiten a un sistema digital conectarse al mundo
real.
223. Toolbox: DAQ
- Un sistema de adquisicin de datos tpico est formado de:
-
-
-
- Hardware de adquisicin de datos
-
-
-
- Hardware de acondicionamiento de seal
224. Esquema de DAQ 225. Transductores y Hardware
- A los sensores y actuadores tambin se les conoce como
transductores.
- Transductor es aquel elemento que convierte una seal de entrada
de cierta naturaleza en una seal de salida de otra naturaleza.
226. Transductores y Hardware
- Por ejemplo, un micrfono es un sensor que convierte energa
sonora (en forma de presin) en energa elctrica, mientras que una
bocina es un actuador que convierte una seal elctrica en una seal
sonora.
227. Transductores y Hardware
- El Hardware es el corazn de cualquier sistema de adquisicin de
datos. Su funcin es convertir seales analgicas provenientes del
mundo real a seales digitales (convertidores analgico a digital,
ADC) y/o convertir seales digitales a analgicas (convertidores
digital a analgico, DAC).
228. HW de acondicionamiento de la seal
- Generalmente las seales de los sensores son incompatibles con
el hardware de adquisicin de datos; para lograr la compatibilidad
se requiere acondicionar la seal.
- Por ejemplo, si la seal es muy pequea, es necesario
amplificarla; por el contrario, si la seal es muy grande se
requiere atenuarla.
229. HW de Acondicionamiento
- Tambin es muy comn eliminar componentes de frecuencias
indeseables que se encuentran presentes en la seal a procesar. En
el caso de las seales de salida, generalmente estas son de baja
corriente y mediante hardware se les amplifica y aumenta la
corriente.
230. La computadora y el Software
- La computadora proporciona un procesador, un reloj, un bus para
transferir datos y espacio de memoria o disco para almacenar
datos.
- El software de adquisicin de datos permite intercambiar
informacin entre la computadora y el hardware.
231. La computadora y el Software
- Por ejemplo, los programas tpicos permiten configurar la tasa
de muestreo de una tarjeta de adquisicin de datos y adquirir un
nmero predefinido de muestras.
232. Toolbox de DAQ
- El toolbox de adquisicin de datos se divide en tres componentes
principales:
-
-
-
- Las funciones M establecidas
-
-
-
- El motor de adquisicin de datos
-
-
-
- Los manejadores (drivers) de la tarjeta de adquisicin de datos
(en este caso, la de
233. DAQ y MATLAB 234. Adaptadores
- FabricanteNombre del adaptador
- National Instrumentsnidaq
- Agilent Technologieshpel432
- Tarjetas de sonido para Windowswinsound
235. DAQ Bsico: IN
- 1. Creacin el dispositivo de objeto. Crear el objeto del canal
analgico de entrada ai para la tarjeta de sonido
- 2. Agregar canales. Agregar un canal de hardware
236. DAQ Bsico: IN
- 3. Configurar los valores correspondientes. Configure la tasa
de muestreo a 44.1 KHz y capture un segundo de muestras (44100
muestras)
-
-
-
- set(ai,'SampleRate',44100)
-
-
-
- set(ai,'SamplesPerTrigger',44100)
237. DAQ Bsico: IN
- 4. Adquirir datos. Iniciar la adquisicin. Cuando terminen de
adquirir todos los datos, ai automticamente detiene la
ejecucin.
238. DAQ Basico: IN
- 5. Limpiar el espacio de trabajo. Una vez que ya no se requiera
utilizar ai, debe eliminarse de la memoria y del espacio de trabajo
de Matlab.
239. DAQ Basico: OUT
- 1. Creacin el dispositivo de objeto. Crear el objeto del canal
analgico de salida ao para la tarjeta de sonido
-
-
-
- ao=analogoutput(winsound)
- 2. Agregar canales. Agregar un canal de hardware a
aoaddchannel(ao,1);
240. DAQ Bsico: OUT
- 3. Configurar los valores correspondientes. Configure la tasa
de muestreo a 44.1 KHz y capture un segundo de muestras (44100
muestras)
-
-
-
- set(ao,'SampleRate',44100)
241. DAQ Bsico: OUT
- 4. Sacar datos. Iniciar la adquisicin. Crear un segundo de
datos de salida y almacenarlos para una eventual salida por el
subsistema de salida analgico. Debe almacenarse una columna de
datos para cada canal aadido.
-
-
-
- data = sin(2*pi*n*1000/44100);
242. DAQ Bsico: OUT
- Iniciar la salida. Cuando todos los datos hayan salido, ao
automticamente finaliza la ejecucin.
- Esta lnea bloquea la lnea de comando de Matlab hasta que se
detiene ao
-
-
-
- while strcmp(ao.Running,'On')