Introducción a MATLAB  para Ingenieros Ing. José Córdova García
Capacitación en MATLAB <ul><li>Cursos Anteriores: </li></ul><ul><ul><li>MATLAB. </li></ul></ul><ul><ul><li>MATLAB Aplicado...
Contenido <ul><li>Introducción. </li></ul><ul><li>Vectores/Matrices. </li></ul><ul><li>Funciones. </li></ul><ul><li>Cadena...
Presentación del Curso. <ul><li>Perfil de los participantes: </li></ul><ul><ul><li>Nombre </li></ul></ul><ul><ul><li>Estud...
Evaluación del Curso <ul><li>Para obtener el CERTIFICADO DE APROBACION del curso necesita obtener por lo menos el 70% de c...
Evaluación del Curso <ul><li>Para obtener el CERTIFICADO DE ASISTENCIA al curso usted necesita tener por lo menos el 70% d...
Formato del Curso <ul><li>Practicas Guiadas y Hands-on (Kolb). </li></ul><ul><li>10 Sesiones Planificadas de 2 horas y med...
MATLAB Introduccion
Que es MATLAB <ul><li>Lenguaje de Programación. </li></ul><ul><li>Alto Rendimiento. </li></ul><ul><li>Computación Técnica....
Aplicaciones? <ul><li>Matemáticas y Computación. </li></ul><ul><li>Desarrollo y Test de algoritmos. </li></ul><ul><li>Mode...
Aplicaciones?
MATLAB? <ul><li>Matrix Laboratory (Laboratorio de Matrices). </li></ul><ul><li>Elemento básico: [Matriz] (en adelante Arre...
Entorno de Trabajo <ul><li>Abra MATLAB. </li></ul><ul><li>Identifique: </li></ul><ul><ul><li>Ventana de Comandos. </li></u...
MATLAB como Calculadora <ul><li>Desde la ventana de comandos ingrese: </li></ul><ul><li>>> 2 + 3/4*5 </li></ul><ul><li>Ver...
Números <ul><li>Por defecto se usa la notación decimal convencional. </li></ul><ul><li>La letra “e” se usa para definir no...
Números <ul><li>Los números tienen una precisión de 16 dígitos significativos decimales y un rango entre 10 -308  y 10 +30...
Formato <ul><li>Usando el comando format: </li></ul>
Variables <ul><li>La variable ANS es básica en MATLAB. </li></ul><ul><li>Ejecute: </li></ul><ul><li>>> 3-2^4 </li></ul><ul...
Variables <ul><li>Las variables no requieren de una declaración de tipo o tamaño. </li></ul><ul><li>>>num_estudiantes = 25...
Variables <ul><li>Las variables tienen un limite de tamaño de nombre de 31 caracteres. </li></ul><ul><li>Deben empezar con...
Las letras “i” y “j” <ul><li>“ i” y “j” estan reservadas para definir numeros complejos. </li></ul><ul><li>>>i </li></ul><...
Otras palabras reservadas <ul><li>pi 3.14159265... </li></ul><ul><li>i unidad imaginaria </li></ul><ul><li>realmin el núme...
Comandos de manejo de Sesión <ul><li>clc </li></ul><ul><li>clear </li></ul><ul><li>clear var1, var2 </li></ul><ul><li>exis...
Practica 1 <ul><li>Precedencia de Operadores. </li></ul><ul><li>Miembros del Grupo: 2. </li></ul><ul><li>Practica1.doc </l...
MATLAB Vectores
Vectores Fila <ul><li>Vectores que “se ven como filas” </li></ul><ul><li>Se definen con espacios o comas entre sus element...
Vectores Fila <ul><li>Puede haber problemas con los espacios. </li></ul><ul><li>Ejecute: </li></ul><ul><li>v2 = [3+ 4 5] <...
Operaciones Vectores Fila <ul><li>Deben tener la misma dimensión para la suma. </li></ul><ul><li>>> v + v3 </li></ul><ul><...
Definición Vectores <ul><li>Se pueden formar vectores a partir de otros vectores (variables) ya definidos: </li></ul><ul><...
Indice en Vectores Fila <ul><li>Se puede recuperar (ver) el valor de un componente de un vector o cambiarlo haciendo uso d...
El operador : <ul><li>Ejecute: </li></ul><ul><li>>>1:10 </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Cual e...
El operador : <ul><li>Se puede usar el operador : para definir vectores: </li></ul><ul><li>>> r5 = [1:2:6, -1:-2:-7] </li>...
Vectores Columna <ul><li>Vectores que se ven como columna. </li></ul><ul><li>Se definen usando “;” </li></ul><ul><li>Prueb...
Transpuesta <ul><li>Se puede convertir un vector fila en un vector columna y viceversa. </li></ul><ul><li>>> w, w', c, c' ...
Producto de Vectores <ul><li>Multiplicación de Vector Fila x Columna </li></ul><ul><li>>> u = [ 10, -11, 12], v = [20; -21...
Norma de un Vector <ul><li>El siguiente muestra dos maneras de obtener la norma (distancia euclidiana) de un vector: </li>...
El operador . <ul><li>Corresponde al producto Hadamard. </li></ul><ul><li>Trabaja sobre vectores del mismo tipo (fila o co...
El operador . <ul><li>Se puede usar también para la división: </li></ul><ul><li>>> a = 1:5, b = 6:10, a./b </li></ul><ul><...
MATLAB Matrices
Ingreso de Matrices <ul><li>Ingrese en la ventana de comandos: </li></ul><ul><li>>>A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4...
Manejo de Subindices <ul><li>Subindices será la manera de acceder a un elemento de una matriz. </li></ul><ul><li>Usa los p...
El operador : <ul><li>>>A(1:4,4) </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Ejecute: </li></ul><ul><li>>>...
El operador :  <ul><li>Se puede utilizar el operador : para generar matrices: </li></ul><ul><li>>> D = [1:5; 6:10; 11:2:20...
Vectores y Matrices <ul><li>En MATLAB en general todos son arreglos. </li></ul><ul><li>Un vector columna será una matriz d...
Tamaño de Matrices <ul><li>El comando size nos devuelve la dimensión de la matriz que se usa como parametro. </li></ul><ul...
Tamaño de Matrices <ul><li>También se puede guardar las dimensiones de una matriz en variables separadas. </li></ul><ul><l...
Matrices Especiales <ul><li>MATLAB provee algunas funciones propias de un tamaño deseado. </li></ul><ul><li>ones(m,n) da u...
Matriz Identidad <ul><li>Es una matriz de ceros pero en su diagonal principal esta llena de unos. </li></ul><ul><li>>> I =...
Matriz Diagonal <ul><li>Es una matriz identidad pero su diagonal principal no es necesariamente ceros. </li></ul><ul><li>>...
Matriz Diagonal <ul><li>Por otro lado si A es una matriz el comando diag(A) extrae la diagonal principal de dicha matriz, ...
Construcción de Matrices <ul><li>A veces es necesario generar matrices grandes a partir de otras mas pequeñas (o vectores)...
Construcción de Matrices <ul><li>Se pueden construir matrices usando también funciones y operaciones sobre matrices: </li>...
El operador end <ul><li>Indica el ultimo elemento. </li></ul><ul><li>Ejemplo: </li></ul><ul><li>Verifique el resultado. </...
MATLAB Comandos y Funciones Útiles
Expresiones <ul><li>Expresiones Matemáticas elementales: </li></ul><ul><li>>> help elfun </li></ul><ul><li>Expresiones Mat...
Números Aleatorios <ul><li>Para generalos usamos las funciones: </li></ul><ul><li>rand, randn, randint. </li></ul><ul><li>...
Suma de Elementos <ul><li>Se utiliza el comando sum. </li></ul><ul><li>Genere un matriz para probar los siguientes comando...
Manejo de valores <ul><li>Se manejan complejos automaticos: </li></ul><ul><li>>> c=15+sqrt(-1) </li></ul><ul><li>Y valores...
Residue <ul><li>La función residue, descompone el cociente de una fracción en fracciones parciales. </li></ul><ul><li>Teni...
Residue <ul><li>Entrega los resultados para: </li></ul><ul><li>Descomponga: </li></ul>
Residue <ul><li>En fracciones parciales: </li></ul><ul><li>>> b=[1 1 1 2]; </li></ul><ul><li>>> a=[1 0 3 0 2]; </li></ul><...
Sistema Lineal <ul><li>Use representación en MATLAB para resolver un sistema lineal del tipo: </li></ul>
MATLAB Scripts y Funciones
Scripts <ul><li>Son archivos de texto (.m) que contienen comandos de MATLAB. </li></ul><ul><li>Para ejecutar los comandos ...
Scripts <ul><li>Debe estar contenido en el directorio actual para poder ejecutarlo (F5 o como comando). </li></ul><ul><li>...
Scripts <ul><li>El nombre del script no debería interferir con alguna función o con una variable (error comun). </li></ul>...
Script de Ejemplo
Funciones <ul><li>Son “user-defined” a diferencia de las “built-in”, también escritas en .m. </li></ul><ul><li>Las buit-in...
Funciones <ul><li>Los comandos dentro de las funciones operan sobre los parámetros. </li></ul><ul><li>Las variables y resu...
Funciones <ul><li>Luego de ser creadas y siempre que estemos en el directorio actual donde esta contenido el .m de la func...
Funciones  <ul><li>El nombre de la función no DEBERIA interferir con alguno de una “buit-in”, ni de otra variable (error c...
Funciones <ul><li>La primera linea del archivo debe tener el formato: </li></ul><ul><li>Luego de esta linea se puede docum...
Ejemplo Funciones <ul><li>Escriba desde la ventana de comandos: </li></ul><ul><li>>> help med_des </li></ul>
Scripts vs. Funciones
Mostrar y Pedir datos <ul><li>La función INPUT imprime un mensaje en la ventana de comandos y devuelve el resultado de una...
Mostrar y Pedir datos <ul><li>Cualquier expresión válida de MATLAB es aceptada por INPUT. </li></ul><ul><li>>> edad = inpu...
Mostrar y Pedir datos <ul><li>La función DISP imprime un mensaje en la ventana de comandos, puede ser un mensaje de texto ...
Practica 3 <ul><li>Ambos ejercicios en .m </li></ul><ul><li>Participantes por grupo: 2. </li></ul><ul><li>Ambos ejercicios...
MATLAB Otros Tipos de Datos
Tipos de Datos
Tipos de Datos <ul><li>Nos devuelve el tipo de dato de “x”. </li></ul><ul><li>Tambien existen comandos que nos dan informa...
Tipos de Datos <ul><li>El tipo de Dato entero corresponde: </li></ul><ul><li>El tipo de Dato float corresponde: </li></ul>
Conversión de Tipo <ul><li>Para convertir se usa el nombre del tipo a generar como si fuera función: </li></ul><ul><li>>> ...
Funciones de Redondeo <ul><li>round: redondea al entero mas proximo. </li></ul><ul><li>floor: redondea a –inf. </li></ul><...
Funciones de Redondeo <ul><li>>> x = pi*(-1:3), round(x) </li></ul><ul><li>>> fix(x) </li></ul><ul><li>>> floor(x) </li></...
Caracteres, Cadenas y Texto <ul><li>MATLAB maneja el tipo Carácter. </li></ul><ul><li>Una cadena es un vector de caractere...
Caracteres, Cadenas y Texto <ul><li>>> t2 = 'BCDE' </li></ul><ul><li>Asigna el valor BCDE al arreglo de caracteres 1x4 t2....
Acceso de Cadenas <ul><li>El direccionamiento funciona como en vectores: </li></ul>
Construcción de Cadenas <ul><li>Asigne: </li></ul><ul><li>>> t4 = [t3,' are the first 5 ';... </li></ul><ul><li>'character...
Construcción de Cadenas <ul><li>Al arreglo de 2x27 t4, es NECESARIO que ambas filas del arreglo tengan el mismo numero de ...
Cadenas y Números <ul><li>Todo carácter tiene un equivalente en valor numérico. </li></ul><ul><li>str2num  convierte una c...
Cadenas y Números <ul><li>Deseamos generar la cadena: ‘El valor de pi es 3.1416'. </li></ul><ul><li>[‘El valor de pi es ',...
Manejo de Cadenas <ul><li>El operador == realiza comparaciones entre vectores (elemento a elemento) </li></ul>
Manejo de Cadenas
MATLAB Gráficas
PLOT <ul><li>La función PLOT realiza gráficos con por lo menos un parámetro. </li></ul><ul><li>En el siguiente ejemplo se ...
PLOT: Ejemplo 1 <ul><li>>>x = 0:pi/100:2*pi; </li></ul><ul><li>>>y = sin(x); </li></ul><ul><li>>>plot(x,y) </li></ul>
PLOT: Ejemplo 2 <ul><li>> >x = [1; 2; 3; 4; 5] </li></ul><ul><li>> >y = [0; .25; 3; 1.5; 2] </li></ul><ul><li>> >plot(x,y)...
PLOT y Muestreo <ul><li>Para graficar  para el rango [0,1] se muestrea la función a un numero suficientemente grande de pu...
PLOT y Muestreo <ul><li>Se define el conjunto:  </li></ul><ul><li>>> y = sin(3*pi*x); </li></ul><ul><li>>> plot(x,y) </li>...
PLOT y Muestreo <ul><li>El “seno” es una función continua. </li></ul><ul><li>MATLAB trabaja con datos discretos. </li></ul...
Propiedades de un PLOT <ul><li>>>xlabel('x = 0:2pi') </li></ul><ul><li>>>ylabel('Seno de x') </li></ul><ul><li>>>title('Gr...
PLOTs con Estilo <ul><li>Plot puede recibir un tercer argumento. </li></ul><ul><li>Tercer argumento es una cadena que reci...
PLOTs con Estilo <ul><li>La cadena recibe hasta 3 caracteres: </li></ul>
Multi-PLOT <ul><li>>>x = 0:pi/100:2*pi; </li></ul><ul><li>>>y = sin(x); </li></ul><ul><li>>>plot(x,y) </li></ul><ul><li>>>...
PLOT y el GCA <ul><li>Cada llamado de la función PLOT es una petición para crear un nuevo “eje” (axis – ventana donde se c...
PLOT y el HOLD <ul><li>Se puede llamar muchas veces a PLOT pero no se reemplazará el gráfico hasta que exista un: </li></u...
AXIS  <ul><li>La función/comando axis ajusta los ejes del gráfico actual. Tiene esta sintaxis: </li></ul><ul><li>>>axis([x...
AXIS <ul><li>Pruebe estos valores para axis e identifique el efecto: </li></ul><ul><li>>>axis square </li></ul><ul><li>>>a...
Resumen
Practica
SUBPLOT <ul><li>Divide la ventana de graficos en un arreglo mxn en donde se pueden plotear mxn gráficos. </li></ul><ul><li...
SUBPLOT <ul><li>>> subplot(221), plot(x,y) </li></ul><ul><li>>> xlabel('x'),ylabel('sin 3 pi x') </li></ul><ul><li>>> subp...
Figuras, Ejes y Panel <ul><li>clf, limpia la figura actual. </li></ul><ul><li>close 1, cierra la ventana llamada “Figure 1...
Figuras, Ejes y Panel <ul><li>Cuando se ha ejecutado el comando PLOT se “crea” (abre) una nueva ventana que puede recibir ...
Figuras, Ejes y Panel <ul><li>El comando close cierra la ventana actual y el comando close all cierra todos los graficos. ...
Setear Propiedades a un Plot <ul><li>Todas las propiedades de cada objeto del gráfico (figura, ejes, elemento gráfico,...)...
Setear Propiedades a un Plot <ul><li>set(handle,'PropertyName','Value',...) cambia propiedades. </li></ul><ul><li>Para per...
Funciones para Graficar Funciones para graficar en 2D bar Gráfica de barra fill Dibujo de polígono en 2D relleno hist Hist...
Otras Funciones para Graficar <ul><li>» x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8]; </li></ul><ul><li>» hist(x) </li></ul><ul...
Otras Maneras de Graficar
Otras Maneras de Graficar
Practica <ul><li>Ejecute el siguiente código: </li></ul><ul><li>>> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y; </li></ul><...
Practica <ul><li>Grafique en un solo panel: </li></ul><ul><li>Para el rango de [0,10]. </li></ul>
Practica
MATLAB Estructuras de Control
Estructuras de Control <ul><li>Se basan en evaluar una expresión si es verdadera o falsa (1/0). </li></ul><ul><li>Estas ex...
Selección: IF <ul><li>Evalúa una condición lógica y si dicha expresión evalúa un resultado POSITIVO (1) entonces “seleccio...
Selección: IF <ul><li>if expr1 </li></ul><ul><li>comandos_matlab </li></ul><ul><li>elseif expr2 </li></ul><ul><li>otro_com...
Selección: IF <ul><li>t = rand(1) </li></ul><ul><li>if t >0.5 </li></ul><ul><li>disp(“valor es mayor que 0.5”) </li></ul><...
Repetición: Lazos <ul><li>El uso de lazos es o debería ser MUY LIMITADO en MATLAB por el uso del operador :. </li></ul><ul...
Repetición: Lazo For <ul><li>Se recomienda para: Repetir la ejecución de comandos por un número definido de veces. </li></...
Repetición: Lazo For <ul><li>Imprimir el cuadrado de los 5 primeros numeros naturales: </li></ul><ul><li>for i=[1, 2, 3, 4...
Repetición: Lazo For <ul><li>Imprimir el cuadrado de los números decimales de una cifra decimal de 0 a 1, en forma decreci...
Repetición: Lazo For <ul><li>Uso de Matriz para asignar valores </li></ul><ul><li>matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 ...
Repetición: Lazo For <ul><li>Creación de subplots usando FOR. </li></ul><ul><li>>> x = -1:.05:1; </li></ul><ul><li>>> for ...
Repetición: Lazo While <ul><li>Se usa regularmente cuando no se conoce en primera instancia cuantas repeticiones se deben ...
Repetición: Lazo While <ul><li>while expresión </li></ul><ul><li>comandos_matlab </li></ul><ul><li>end </li></ul>
Repetición: Lazo While <ul><li>Imprimir el valor de x, mientras este sea positivo, decrementando cada vez x en 17: </li></...
MATLAB Comandos y Funciones Útiles II
Construcción de Vectores Construcción de Vectores x = [1 3 9 33 0 -2] Se crea vector fila  x  con los elementos especifica...
Maximo y Minimo <ul><li>La función max opera sobre un vector retornando el valor máximo. </li></ul><ul><li>>> x = [1.3 -2....
Maximo y Minimo <ul><li>La función min opera d emanera similar a max. </li></ul><ul><li>En el caso de que A sea una matriz...
Busqueda en vectores <ul><li>El comando find devuelve una lista con las posiciones de los elementos de un vector que satis...
Busqueda en Vectores <ul><li>Representación gráfica de la búsqueda: </li></ul><ul><li>>> hold on, plot(x(k),y(k),'o') </li...
Busqueda en matrices <ul><li>Opera de manera muy similar en matrices: </li></ul><ul><li>>> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0...
Busqueda en matrices <ul><li>A = </li></ul><ul><ul><ul><li>-2  3  4  4 </li></ul></ul></ul><ul><ul><ul><li>0  5  -1  6 </l...
Busqueda en matrices <ul><li>Los indices del reordenamiento de la matriz quedan: </li></ul><ul><li>>> n = find(A <= 0) </l...
Busqueda en matrices <ul><li>“ n” devuelve una lista de los lugares de las entradas de A que cumplen ser menores que cero,...
Polinomios <ul><li>Los polinomios se definen en base a un vector de coeficientes. </li></ul><ul><li>MATLAB es una herramie...
Polinomios: Funciones <ul><li>Se pueden realizar algunas funciones, como obtener las raices del polinomio y también evalua...
Polinomios: Funciones <ul><li>Para realizar la multiplicación entre polinomios MATLAB usa el producto de convolución. </li...
Hipermatrices <ul><li>Matrices de mas de dos dimensiones. </li></ul><ul><li>El tercer subindice representa la tercera dime...
Manejo de Datos: Paginas <ul><li>Se muestra a continuación cómo organizar las matrices x1 y x2 de 3x3 en dos páginas, o se...
Hipermatrices <ul><li>» x(:,:,1)=x1; </li></ul><ul><li>» x(:,:,2)=x2; </li></ul><ul><li>La información quedará organizada ...
Hipermatrices <ul><li>Creación a partir de otras matrices de dos dimensiones: </li></ul><ul><li>>> AA(:,:,1)=[1 2 3; 4 5 6...
Hipermatrices <ul><li>>> BB=randn(2,3,2) </li></ul><ul><li>Verifique el resultado como MATLAB muestra el contenido de las ...
Hipermatrices <ul><li>La función cat concatena arreglos. </li></ul><ul><li>Recibe 3 parametros el primero es la dimensión ...
Hipermatrices <ul><li>>> cat(1,A,B) </li></ul><ul><li>>> cat(2,A,B) </li></ul><ul><li>>> cat(3,A,B) </li></ul><ul><li>Veri...
Hipermatrices <ul><li>Tienen reglas especiales para usar funciones con ellas. </li></ul><ul><li>Todas las funciones de MAT...
Hipermatrices <ul><li>Las funciones que operan sobre vectores ( sum(), max(), etc.)  se aplican a matrices e hipermatrices...
Hipermatrices <ul><li>Las funciones matriciales propias del Álgebra Lineal ( det(), inv(), etc.)  no se pueden aplicar a h...
Hipermatrices: Reshape <ul><ul><ul><ul><ul><li>» reshape(x, 3, 6) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>an...
Manejo de Datos <ul><li>Matlab permite varias opciones para almacenar las variables con las cuales se trabaja para su post...
Manejo de Datos <ul><li>Todas las variables que se graben usando este metodo deben tener la misma dimensión. </li></ul>
Manejo de Datos <ul><li>Para guardar datos en formato binario: </li></ul><ul><li>save <nombre del archivo> <varia bles>  <...
Manejo de Datos <ul><li>Supongamos un fichero llamado datos.txt que tiene, por ejemplo, dos columnas de valores que son nú...
Manejo de Datos <ul><li>Otra opción más: </li></ul><ul><li>load ’datos.txt’ -ascii </li></ul><ul><li>x1 = datos(:,1); </li...
Manejo de Datos <ul><li>Creando un archivo llamado flat.txt que contenga las líneas: </li></ul><ul><li>23.456 56.032 67.80...
MATLAB Gráficas 3D
Gráficas en 3 Dimensiones <ul><li>También se basa en graficar puntos: </li></ul><ul><li>>> t=0:pi/50:10*pi;  </li></ul><ul...
Graficas en 3 Dimensiones <ul><li>Se deben generar los valores a graficar, estos deben ser una matriz. </li></ul><ul><li>E...
Graficas en 3 Dimensiones <ul><li>>> mesh(z)  </li></ul><ul><li>>> contour(z,10)    </li></ul><ul><li>>> surf(z)  </li></u...
Superficies <ul><li>Una superficie también se define matemáticamente con una función f(x,y). </li></ul><ul><li>Para cada v...
Superficies <ul><li>Definiendo el dominio: </li></ul><ul><li>x = 2:0.5:4; y = 1:0.5:3; </li></ul><ul><li>Definido el domin...
Superficies <ul><li>>> [X,Y] = meshgrid(2:.5:4, 1:.5:3); </li></ul><ul><li>>> X </li></ul><ul><li>Si tomamos el i-esimo pu...
Superficies <ul><li>Plotee la siguiente función: </li></ul><ul><li>>> [X,Y] = meshgrid(2:.2:4, 1:.2:3); </li></ul><ul><li>...
Superficies <ul><li>Grafique la siguiente superficie: </li></ul><ul><li>Encuentre los valores máximos de la función. </li>...
Superficies <ul><li>>> [X,Y] = meshgrid(-2:.1:2,-2:.2:2); </li></ul><ul><li>>> f = -X.*Y.*exp(-2*(X.^2+Y.^2)); </li></ul><...
Superficies <ul><li>Para encontrar los máximos: </li></ul><ul><li>>> fmax = max(max(f)) </li></ul><ul><li>>> kmax = find(f...
Diferentes Dominios <ul><li>x=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10; </li></ul><ul><li>y=x; </li></ul><ul><li>[X,Y]=meshgrid...
Diferentes Dominios <ul><li>axis([0 11 0 11 0 2]) </li></ul><ul><li>subplot(3,1,2) </li></ul><ul><li>surf(x,y,Z); </li></u...
Otros Graficos 3D
MATLAB Estructuras y Celdas
Tipos de Datos
Estructuras <ul><li>Permiten guardar valores de diferente tipo de dato bajo un mismo nombre. </li></ul><ul><li>Organizan l...
Estructuras  <ul><li>>> punto.x=2 </li></ul><ul><li>>> punto.y=3 </li></ul><ul><li>>> punto.color='rojo‘ </li></ul><ul><li...
Estructuras <ul><li>Verifique el direccionamiento: </li></ul><ul><li>>> punto(1), punto(2) </li></ul><ul><li>Y el direccio...
Celdas (Cell Array) <ul><li>Construye un arreglo donde cada elemento puede ser de un tipo diferente. </li></ul><ul><li>>> ...
Celdas (Cell Array) <ul><li>>> b{1}=12; </li></ul><ul><li>>> b{2}='Red'; </li></ul><ul><li>>> b{3}=magic(4); </li></ul><ul...
Celdas (Cell Array) <ul><li>>> a{1,1} = 12; </li></ul><ul><li>>> a{1,2} = 'Red'; </li></ul><ul><li>>> a{1,3} = magic(4); <...
Celdas (Cell Array) <ul><li>Utilizando ( ) accede a un elemento, que es tipo cell. </li></ul><ul><li>•  Utilizando { } acc...
MATLAB GUIDE
GUI <ul><li>GUI (Graphical User Interface) es util para presentar un desarrollo final. </li></ul><ul><li>Adhiere usabilida...
GUIDE <ul><li>Para iniciarla ejecute el comando “guide” en MATLAB </li></ul><ul><li>Seleccione un GUI vacio </li></ul>
GUIDE <ul><li>Obtendra un formulario en blanco al cual puede agregar CONTROLES. </li></ul><ul><li>Se debe antes preparar u...
Partes de la ventana GUIDE
Estructura Jerárquica de controles
Ejemplo: PLOTTER <ul><li>Se desea crear una GUI que realice un PLOT de una funcion determinada. </li></ul><ul><li>Primero ...
Controles Basicos <ul><li>Axes: un espacio para dibujar. </li></ul><ul><li>Static text: texto que se adhiere a la  pantall...
El Inspector de Propiedades <ul><li>Cuando le dan doble click a un control, muestra una ventana listando todas las propied...
El Inspector de Propiedades <ul><li>String: el texto que  aparece en el control. </li></ul><ul><li>ForegroundColor:  color...
Ejecutando <ul><li>Si presionan la flecha verde en la parte superior del editor GUI se grabara el trabajo actual y correra...
Ejecutando <ul><li>Para agregar funcionalidad a la GUI se debe definir un callback para el boton para que asi grafique la ...
Plotter
Escribiendo Callbacks <ul><li>Cuando se corra el programa, se crean 2 archivos: </li></ul><ul><li>.fig: contiene el esquem...
Escribiendo Callbacks <ul><li>Generalmente no se edita el codigo de inicializacion del .m. </li></ul><ul><li>Probablemente...
El Callback del botón <ul><li>% --- Executes on button press in PlotButton. </li></ul><ul><li>function  PlotButton_Callbac...
El Callback del boton <ul><li>Se pueden borrar los comentarios. </li></ul><ul><li>Cada funcion tiene el parametro handles....
Handles <ul><li>Cada uno de los objetos de MATLAB tiene un identificador único (handle), a los cuales se les llamará handl...
Handles <ul><ul><ul><li>gcf (get current figure) devuelve un entero, que es el handle de la ventana activa </li></ul></ul>...
Escribiendo Callbacks <ul><li>Se puede obtener cualquier propiedad de un control con la funcion GET.  De manera similar, s...
Escribiendo Callbacks <ul><li>function PlotButton_Callback(hObject, eventdata, handles) </li></ul><ul><li>x = -10 : 0.1 : ...
Corriendo el programa <ul><li>Cuando se modifica el codigo del m-file no se tiene que volver a correr la GUI (solo se ha m...
Otros controles <ul><li>Slider bar: el usuario puede moverse adelante y hacia atrás. La posicion actual es dada por Value,...
Otros controles <ul><li>Pop-up menu: el usuario puede seleccionar de una lista de items. En la propiedad String, se pueden...
Trabajando con el Workspace <ul><li>Desde la ventana de comandos se puede modificar el workspace de matlab. </li></ul><ul>...
Trabajando con el Workspace <ul><li>s = get(variableEdit, 'String'); </li></ul><ul><li>handles.x=evalin('base',s); </li></...
Practica:  <ul><li>Deberá re-escribir 3 metodos callback para la funcionalidad mostrada: </li></ul><ul><li>Usar funciones:...
Practica
MATLAB DAQ
Toolbox: DAQ <ul><li>El toolbox de Adquisición de Datos (DAQ) le permite al usuario capturar y/o generar señales reales e ...
Toolbox: DAQ <ul><li>Un sistema de adquisición de datos típico está formado de: </li></ul><ul><ul><ul><ul><li>•  Sensores ...
Esquema de DAQ
Transductores y Hardware <ul><li>A los sensores y actuadores también se les conoce como transductores.  </li></ul><ul><li>...
Transductores y Hardware <ul><li>Por ejemplo, un micrófono es un sensor que convierte energía sonora (en forma de presión)...
Transductores y Hardware <ul><li>El Hardware es el corazón de cualquier sistema de adquisición de datos. Su función es con...
HW de acondicionamiento de la señal <ul><li>Generalmente las señales de los sensores son incompatibles con el hardware de ...
HW de Acondicionamiento <ul><li>También es muy común eliminar componentes de frecuencias indeseables que se encuentran pre...
La computadora y el Software <ul><li>La computadora proporciona un procesador, un reloj, un bus para transferir datos y es...
La computadora y el Software <ul><li>Por ejemplo, los programas típicos permiten configurar la tasa de muestreo de una tar...
Toolbox de DAQ <ul><li>El toolbox de adquisición de datos se divide en tres componentes principales: </li></ul><ul><ul><ul...
DAQ y MATLAB
Adaptadores <ul><li>Fabricante  Nombre del adaptador </li></ul><ul><li>National Instruments  nidaq </li></ul><ul><li>Compu...
DAQ Básico: IN <ul><li>1. Creación el dispositivo de objeto. Crear el objeto del canal analógico de entrada ‘ai’ para la t...
DAQ Básico: IN <ul><li>3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un s...
DAQ Básico: IN <ul><li>4. Adquirir datos. Iniciar la adquisición. Cuando terminen de adquirir todos los datos, ‘ai’ automá...
DAQ Basico: IN <ul><ul><ul><ul><li>data = getdata(ai); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>plot(data) </li></ul><...
DAQ Basico: OUT <ul><li>1. Creación el dispositivo de objeto. Crear el objeto del canal analógico de salida ‘ao’ para la t...
DAQ Básico: OUT <ul><li>3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un ...
Upcoming SlideShare
Loading in...5
×

MATLAB 2010

22,630

Published on

Curso de MATLAB dictado en ESPOL, Guayaquil, Ecuador.
Basado en recursos de la Web y de material desarrollado en ESPOL.

Published in: Art & Photos
6 Comments
12 Likes
Statistics
Notes
No Downloads
Views
Total Views
22,630
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
1,771
Comments
6
Likes
12
Embeds 0
No embeds

No notes for slide

MATLAB 2010

  1. 1. Introducción a MATLAB para Ingenieros Ing. José Córdova García
  2. 2. Capacitación en MATLAB <ul><li>Cursos Anteriores: </li></ul><ul><ul><li>MATLAB. </li></ul></ul><ul><ul><li>MATLAB Aplicado a la Ingeniería. </li></ul></ul><ul><li>Nuevo curso: </li></ul><ul><ul><li>Introducción a MATLAB para Ingenieros. </li></ul></ul><ul><li>Cursos especializados. </li></ul>
  3. 3. Contenido <ul><li>Introducción. </li></ul><ul><li>Vectores/Matrices. </li></ul><ul><li>Funciones. </li></ul><ul><li>Cadenas de Texto. </li></ul><ul><li>Graficas 2D. </li></ul><ul><li>Graficas 3D. </li></ul><ul><li>GUI y GUIDE. </li></ul><ul><li>Scripts y Funciones. </li></ul><ul><li>Estructuras de Control. </li></ul><ul><li>Celdas. </li></ul><ul><li>Aplicaciones. </li></ul><ul><li>Excel. </li></ul><ul><li>Data Acquisition. </li></ul>
  4. 4. Presentación del Curso. <ul><li>Perfil de los participantes: </li></ul><ul><ul><li>Nombre </li></ul></ul><ul><ul><li>Estudios (Carrera). </li></ul></ul><ul><ul><li>Expectativas del curso </li></ul></ul><ul><ul><li>Conocimientos de: </li></ul></ul><ul><ul><ul><ul><li>MATLAB </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Programación Estructurada </li></ul></ul></ul></ul><ul><li>Target del Curso. </li></ul><ul><li>Competencias a adquirir al finalizar el Curso. </li></ul>
  5. 5. Evaluación del Curso <ul><li>Para obtener el CERTIFICADO DE APROBACION del curso necesita obtener por lo menos el 70% de calificación. </li></ul><ul><ul><ul><ul><li>50% Evaluación Teórica a mitad del contenido del curso (opcional). </li></ul></ul></ul></ul><ul><ul><ul><ul><li>50%/100% Evaluación del desempeño Grupal (Asistencia) y Proyecto final. </li></ul></ul></ul></ul>
  6. 6. Evaluación del Curso <ul><li>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. </li></ul><ul><li>El certificado se entregará por 30 Horas, válidas para convalidar la Materia Seminarios (Optativa en las carreras de la FIEC). </li></ul>
  7. 7. Formato del Curso <ul><li>Practicas Guiadas y Hands-on (Kolb). </li></ul><ul><li>10 Sesiones Planificadas de 2 horas y media de duración. </li></ul><ul><li>La asistencia se considera solo al completar la practica. </li></ul><ul><li>Política de Examen y Ejemplo. </li></ul><ul><li>Fecha de Entrega de Certificados. </li></ul>
  8. 8. MATLAB Introduccion
  9. 9. Que es MATLAB <ul><li>Lenguaje de Programación. </li></ul><ul><li>Alto Rendimiento. </li></ul><ul><li>Computación Técnica. </li></ul><ul><li>Computación, Visualización y Programación. </li></ul><ul><li>Problemas y soluciones en notación Matemática (de Matrices). </li></ul>
  10. 10. Aplicaciones? <ul><li>Matemáticas y Computación. </li></ul><ul><li>Desarrollo y Test de algoritmos. </li></ul><ul><li>Modelado, Simulación y Prototipos. </li></ul><ul><li>Análisis de Datos, exploración y visualización. </li></ul><ul><li>Gráficas de Ingeniería y Científicas. </li></ul><ul><li>Desarrollo de Aplicaciones finales (GUI) </li></ul>
  11. 11. Aplicaciones?
  12. 12. MATLAB? <ul><li>Matrix Laboratory (Laboratorio de Matrices). </li></ul><ul><li>Elemento básico: [Matriz] (en adelante Arreglo) que no requiere dimensión. </li></ul><ul><li>Problemas que involucran matrices y vectores son consumidores de tiempo (C, C++, Fortran, etc.) </li></ul>
  13. 13. Entorno de Trabajo <ul><li>Abra MATLAB. </li></ul><ul><li>Identifique: </li></ul><ul><ul><li>Ventana de Comandos. </li></ul></ul><ul><ul><li>Historial de Comandos. </li></ul></ul><ul><ul><li>Directorio Actual. </li></ul></ul><ul><ul><li>Espacio de Trabajo. </li></ul></ul><ul><ul><li>Barra de Menús. </li></ul></ul>
  14. 14. MATLAB como Calculadora <ul><li>Desde la ventana de comandos ingrese: </li></ul><ul><li>>> 2 + 3/4*5 </li></ul><ul><li>Verifique la respuesta de MATLAB. </li></ul><ul><li>Verifique el workspace. </li></ul>
  15. 15. Números <ul><li>Por defecto se usa la notación decimal convencional. </li></ul><ul><li>La letra “e” se usa para definir notación científica (x10). </li></ul><ul><li>Los números imaginarios se definen usando las letras “i” y “j”. </li></ul>
  16. 16. Números <ul><li>Los números tienen una precisión de 16 dígitos significativos decimales y un rango entre 10 -308 y 10 +308 . </li></ul><ul><li>Todas las operaciones en MATLAB se realizan en precisión doble. </li></ul><ul><li>El formato es la manera en como se muestran los valores </li></ul>
  17. 17. Formato <ul><li>Usando el comando format: </li></ul>
  18. 18. Variables <ul><li>La variable ANS es básica en MATLAB. </li></ul><ul><li>Ejecute: </li></ul><ul><li>>> 3-2^4 </li></ul><ul><li>Verifique el resultado almacenado en ANS. </li></ul><ul><li>Ejecute: </li></ul><ul><li>>> ans*5 </li></ul><ul><li>Verifique el uso de variables y resultado. </li></ul>
  19. 19. Variables <ul><li>Las variables no requieren de una declaración de tipo o tamaño. </li></ul><ul><li>>>num_estudiantes = 25 </li></ul><ul><li>MATLAB crea el espacio necesario y asocia el tipo adecuado para definir esa variable, si es que no la encuentra en el Workspace. </li></ul>
  20. 20. Variables <ul><li>Las variables tienen un limite de tamaño de nombre de 31 caracteres. </li></ul><ul><li>Deben empezar con una letra SIEMPRE. </li></ul><ul><li>NO deben contener caracteres especiales, salvo el “underscore” _ </li></ul>
  21. 21. Las letras “i” y “j” <ul><li>“ i” y “j” estan reservadas para definir numeros complejos. </li></ul><ul><li>>>i </li></ul><ul><li>>>i=20 </li></ul><ul><li>>>i </li></ul><ul><li>Verifique el comportamiento de “i” </li></ul>
  22. 22. Otras palabras reservadas <ul><li>pi 3.14159265... </li></ul><ul><li>i unidad imaginaria </li></ul><ul><li>realmin el número más pequeño, 2 -1022 </li></ul><ul><li>realmax el número más grande, 2 1023 </li></ul><ul><li>Inf infinito </li></ul>
  23. 23. Comandos de manejo de Sesión <ul><li>clc </li></ul><ul><li>clear </li></ul><ul><li>clear var1, var2 </li></ul><ul><li>exist(‘nombre’) </li></ul><ul><li>quit </li></ul><ul><li>who </li></ul><ul><li>whos </li></ul>
  24. 24. Practica 1 <ul><li>Precedencia de Operadores. </li></ul><ul><li>Miembros del Grupo: 2. </li></ul><ul><li>Practica1.doc </li></ul>
  25. 25. MATLAB Vectores
  26. 26. Vectores Fila <ul><li>Vectores que “se ven como filas” </li></ul><ul><li>Se definen con espacios o comas entre sus elementos. </li></ul><ul><li>>>v = [ 1 3, sqrt(5)] </li></ul><ul><li>Verifique el resultado en el workspace. </li></ul><ul><li>>> length(v) </li></ul><ul><li>Verifique el resultado en el workspace. </li></ul>
  27. 27. Vectores Fila <ul><li>Puede haber problemas con los espacios. </li></ul><ul><li>Ejecute: </li></ul><ul><li>v2 = [3+ 4 5] </li></ul><ul><li>Verifique el comportamiento </li></ul><ul><li>Ejecute: </li></ul><ul><li>v3 = [3 +4 5] </li></ul><ul><li>Verifique el comportamiento </li></ul>
  28. 28. Operaciones Vectores Fila <ul><li>Deben tener la misma dimensión para la suma. </li></ul><ul><li>>> v + v3 </li></ul><ul><li>Pueden multiplicarse por un escalar. </li></ul><ul><li>>> v4 = 3*v </li></ul><ul><li>Pruebe: >> v + v2 </li></ul>
  29. 29. Definición Vectores <ul><li>Se pueden formar vectores a partir de otros vectores (variables) ya definidos: </li></ul><ul><li>>> w = [1 2 3], z = [8 9] </li></ul><ul><li>>> cd = [2*z,-w], sort(cd) </li></ul><ul><li>Verifique el comportamiento. </li></ul>
  30. 30. Indice en Vectores Fila <ul><li>Se puede recuperar (ver) el valor de un componente de un vector o cambiarlo haciendo uso de un indice. </li></ul><ul><li>El indice se define con el nombre de variable del vector y con los paréntesis para acceder a la posición del elemento a cambiar/ver. </li></ul><ul><li>>> w(2) = -2, w(3) </li></ul>
  31. 31. El operador : <ul><li>Ejecute: </li></ul><ul><li>>>1:10 </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Cual es la función del operador “:”? </li></ul><ul><li>De manera general a : b : c produce un vector con valor inicial a, valor final c e incrementos de b. </li></ul>
  32. 32. El operador : <ul><li>Se puede usar el operador : para definir vectores: </li></ul><ul><li>>> r5 = [1:2:6, -1:-2:-7] </li></ul><ul><li>Para obtener los elementos del 3 al 6 </li></ul><ul><li>>> r5(3:6) </li></ul><ul><li>Cual sera el resultado de? </li></ul><ul><li>r5(6:-2:1) </li></ul>
  33. 33. Vectores Columna <ul><li>Vectores que se ven como columna. </li></ul><ul><li>Se definen usando “;” </li></ul><ul><li>Pruebe: </li></ul><ul><li>>> c = [ 1; 3; sqrt(5)] </li></ul><ul><li>>> c2 = [3 </li></ul><ul><li>4 </li></ul><ul><li>5] </li></ul>
  34. 34. Transpuesta <ul><li>Se puede convertir un vector fila en un vector columna y viceversa. </li></ul><ul><li>>> w, w', c, c' </li></ul><ul><li>Defina el vector complejo: </li></ul><ul><li>>> x = [1+3i, 2-2i] </li></ul><ul><li>La transpuesta para x corresponderá a la transpuesta conjugada. </li></ul>
  35. 35. Producto de Vectores <ul><li>Multiplicación de Vector Fila x Columna </li></ul><ul><li>>> u = [ 10, -11, 12], v = [20; -21; -22] </li></ul><ul><li>>> prod = u*v </li></ul><ul><li>Es una multiplicación Matricial!. </li></ul><ul><li>>> w = [2, 1, 3], z = [7; 6; 5] </li></ul><ul><li>>> u*w </li></ul><ul><li>Verifique ambos ejemplos. </li></ul>
  36. 36. Norma de un Vector <ul><li>El siguiente muestra dos maneras de obtener la norma (distancia euclidiana) de un vector: </li></ul><ul><li>>> [ sqrt(u*u'), norm(u)] </li></ul>
  37. 37. El operador . <ul><li>Corresponde al producto Hadamard. </li></ul><ul><li>Trabaja sobre vectores del mismo tipo (fila o columna). </li></ul><ul><li>>> u.*v' </li></ul><ul><li>Tabulemos la función para </li></ul>
  38. 38. El operador . <ul><li>Se puede usar también para la división: </li></ul><ul><li>>> a = 1:5, b = 6:10, a./b </li></ul><ul><li>>> a./a </li></ul><ul><li>>> c = -2:2, a./c </li></ul><ul><li>>> a.*b -24, ans./c </li></ul><ul><li>Verifique el resultado. </li></ul>
  39. 39. MATLAB Matrices
  40. 40. Ingreso de Matrices <ul><li>Ingrese en la ventana de comandos: </li></ul><ul><li>>>A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1 ] </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Use la flecha “hacia arriba” y reemplace los espacios en blanco con “comas”. </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Ejecute: A’ </li></ul><ul><li>Verifique el resultado </li></ul>
  41. 41. Manejo de Subindices <ul><li>Subindices será la manera de acceder a un elemento de una matriz. </li></ul><ul><li>Usa los parentesis y el nombre de la variable. </li></ul><ul><li>>>A(1,4) </li></ul><ul><li>Verifique el resultado y la relación con A. </li></ul>
  42. 42. El operador : <ul><li>>>A(1:4,4) </li></ul><ul><li>Verifique el resultado. </li></ul><ul><li>Ejecute: </li></ul><ul><li>>>A(:,4) </li></ul><ul><li>Verifique el resultado? </li></ul><ul><li>Cual es la función del operador “:” manejando subindices? </li></ul>
  43. 43. El operador : <ul><li>Se puede utilizar el operador : para generar matrices: </li></ul><ul><li>>> D = [1:5; 6:10; 11:2:20] </li></ul><ul><li>Verifique el resultado anterior. </li></ul>
  44. 44. Vectores y Matrices <ul><li>En MATLAB en general todos son arreglos. </li></ul><ul><li>Un vector columna será una matriz de mx1. </li></ul><ul><li>Un vector fila será una matriz de 1xn. </li></ul>
  45. 45. Tamaño de Matrices <ul><li>El comando size nos devuelve la dimensión de la matriz que se usa como parametro. </li></ul><ul><li>>> size(A) </li></ul><ul><li>>> size(ans) </li></ul><ul><li>El ultimo comando muestra que el valor retornado por size es en si mismo una matriz de 1x2. </li></ul>
  46. 46. Tamaño de Matrices <ul><li>También se puede guardar las dimensiones de una matriz en variables separadas. </li></ul><ul><li>>> [r c] = size(A'), S = size(A') </li></ul><ul><li>Verifique los valores de r y c y de S. </li></ul><ul><li>Verifique también los tipos de dato (arreglo) de dichas variables. </li></ul>
  47. 47. Matrices Especiales <ul><li>MATLAB provee algunas funciones propias de un tamaño deseado. </li></ul><ul><li>ones(m,n) da una matriz de mxn llena de unos. </li></ul><ul><li>>> P = ones(2,3) </li></ul><ul><li>zeros(m,n) da una matriz de mxn llena de ceros. </li></ul><ul><li>Z = zeros(2,3) </li></ul>
  48. 48. Matriz Identidad <ul><li>Es una matriz de ceros pero en su diagonal principal esta llena de unos. </li></ul><ul><li>>> I = eye(3), x = [8; -4; 1], I*x </li></ul><ul><li>Note que eye(3) es una matriz cuadrada identidad. </li></ul><ul><li>Verifique el resultado de I*x. </li></ul>
  49. 49. Matriz Diagonal <ul><li>Es una matriz identidad pero su diagonal principal no es necesariamente ceros. </li></ul><ul><li>>> D = [-3 0 0; 0 4 0; 0 0 2] </li></ul><ul><li>El comando diag puede generar una matriz diagonal a partir de un vector. </li></ul><ul><li>>> d = [-3 4 2], D = diag(d) </li></ul>
  50. 50. Matriz Diagonal <ul><li>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. </li></ul><ul><li>>> F = [0 1 8 7; 3 -2 -4 2; 4 2 1 1] </li></ul><ul><li>>> diag(F) </li></ul><ul><li>Verifique la variable ans e identifique “la diagonal” de F. </li></ul>
  51. 51. Construcción de Matrices <ul><li>A veces es necesario generar matrices grandes a partir de otras mas pequeñas (o vectores). </li></ul><ul><li>>> C=[0 1; 3 -2; 4 2]; x=[8;-4;1]; </li></ul><ul><li>>> G = [C x] </li></ul><ul><li>Note que C es una matriz y x es un vector columna. </li></ul>
  52. 52. Construcción de Matrices <ul><li>Se pueden construir matrices usando también funciones y operaciones sobre matrices: </li></ul><ul><li>>> J = [1:4; 5:8; 9:12; 20 0 5 4 </li></ul><ul><li>>> K = [ diag(1:4) J; J' zeros(4,4)] </li></ul><ul><li>Pruebe el siguiente comando: </li></ul><ul><li>>> spy(K), grid </li></ul>
  53. 53. El operador end <ul><li>Indica el ultimo elemento. </li></ul><ul><li>Ejemplo: </li></ul><ul><li>Verifique el resultado. </li></ul>
  54. 54. MATLAB Comandos y Funciones Útiles
  55. 55. Expresiones <ul><li>Expresiones Matemáticas elementales: </li></ul><ul><li>>> help elfun </li></ul><ul><li>Expresiones Matemáticas especiales: </li></ul><ul><li>>>help specfun </li></ul><ul><li>Expresiones de Matrices elementales: </li></ul><ul><li>>>help elmat </li></ul>
  56. 56. Números Aleatorios <ul><li>Para generalos usamos las funciones: </li></ul><ul><li>rand, randn, randint. </li></ul><ul><li>Verifique el uso de: </li></ul><ul><li>>> rand(2) </li></ul><ul><li>>> randn(2) </li></ul><ul><li>>> randint(2,2,[-4 4]) </li></ul>
  57. 57. Suma de Elementos <ul><li>Se utiliza el comando sum. </li></ul><ul><li>Genere un matriz para probar los siguientes comandos: </li></ul>
  58. 58. Manejo de valores <ul><li>Se manejan complejos automaticos: </li></ul><ul><li>>> c=15+sqrt(-1) </li></ul><ul><li>Y valores “excepción” correctamente: </li></ul><ul><li>>> a=123/0 </li></ul><ul><li>>> b=0/0 </li></ul><ul><li>>> Inf-Inf </li></ul>
  59. 59. Residue <ul><li>La función residue, descompone el cociente de una fracción en fracciones parciales. </li></ul><ul><li>Teniendo un cociente de la forma: </li></ul><ul><li>La función es: </li></ul><ul><li>>>[r,p,k] = residue(b,a) </li></ul>
  60. 60. Residue <ul><li>Entrega los resultados para: </li></ul><ul><li>Descomponga: </li></ul>
  61. 61. Residue <ul><li>En fracciones parciales: </li></ul><ul><li>>> b=[1 1 1 2]; </li></ul><ul><li>>> a=[1 0 3 0 2]; </li></ul><ul><li>>> [r,p,k]=residue(b,a) </li></ul><ul><li>El resultado será: </li></ul>
  62. 62. Sistema Lineal <ul><li>Use representación en MATLAB para resolver un sistema lineal del tipo: </li></ul>
  63. 63. MATLAB Scripts y Funciones
  64. 64. Scripts <ul><li>Son archivos de texto (.m) que contienen comandos de MATLAB. </li></ul><ul><li>Para ejecutar los comandos de ese archivo se debe escribir el nombre del archivo en la ventana de comandos. </li></ul><ul><li>Las variables y resultados son de ambito GLOBAL. </li></ul>
  65. 65. Scripts <ul><li>Debe estar contenido en el directorio actual para poder ejecutarlo (F5 o como comando). </li></ul><ul><li>Los nombres de los scripts deben seguir la regla de las variables de MATLAB. </li></ul><ul><li>Mucho ojo con los espacios. </li></ul>
  66. 66. Scripts <ul><li>El nombre del script no debería interferir con alguna función o con una variable (error comun). </li></ul><ul><li>Los comentarios en MATLAB se generan con el símbolo %: </li></ul><ul><li>>> %Esto es un comentario </li></ul>
  67. 67. Script de Ejemplo
  68. 68. Funciones <ul><li>Son “user-defined” a diferencia de las “built-in”, también escritas en .m. </li></ul><ul><li>Las buit-in también son llamadas funciones de llamada. </li></ul><ul><li>Las user-defined son llamadas funciones de definición. </li></ul><ul><li>SIEMPRE reciben parametros para realizar los calculos. </li></ul>
  69. 69. Funciones <ul><li>Los comandos dentro de las funciones operan sobre los parámetros. </li></ul><ul><li>Las variables y resultados son de ambito LOCAL. </li></ul><ul><li>Los .m de funciones deben encontrarse en el directorio actual para poder ser llamadas. </li></ul>
  70. 70. Funciones <ul><li>Luego de ser creadas y siempre que estemos en el directorio actual donde esta contenido el .m de la función de definición, entonces la función se convertirá en de llamada. </li></ul><ul><li>También se puede agregar funciones de definición a MATLAB. </li></ul>
  71. 71. Funciones <ul><li>El nombre de la función no DEBERIA interferir con alguno de una “buit-in”, ni de otra variable (error común). </li></ul><ul><li>El nombre del archivo .m conteniendo a la definición de la función DEBE ser igual al nombre de la función. </li></ul>
  72. 72. Funciones <ul><li>La primera linea del archivo debe tener el formato: </li></ul><ul><li>Luego de esta linea se puede documentar la función usando comentarios. </li></ul>
  73. 73. Ejemplo Funciones <ul><li>Escriba desde la ventana de comandos: </li></ul><ul><li>>> help med_des </li></ul>
  74. 74. Scripts vs. Funciones
  75. 75. Mostrar y Pedir datos <ul><li>La función INPUT imprime un mensaje en la ventana de comandos y devuelve el resultado de una expresión teclada por el usuario. </li></ul><ul><li>INPUT espera hasta que el usuario ingrese un valor numérico o una expresión </li></ul>
  76. 76. Mostrar y Pedir datos <ul><li>Cualquier expresión válida de MATLAB es aceptada por INPUT. </li></ul><ul><li>>> edad = input(‘Ingrese la edad: ') </li></ul><ul><li>En el caso que sea una cadena de texto es recomendable: </li></ul><ul><li>>> nombre = input('¿Cómo te llamas?','s') </li></ul>
  77. 77. Mostrar y Pedir datos <ul><li>La función DISP imprime un mensaje en la ventana de comandos, puede ser un mensaje de texto o variables. </li></ul><ul><li>>> disp('El programa ha terminado') </li></ul><ul><li>>> A=rand(4,4) </li></ul><ul><li>>> disp(A) </li></ul>
  78. 78. Practica 3 <ul><li>Ambos ejercicios en .m </li></ul><ul><li>Participantes por grupo: 2. </li></ul><ul><li>Ambos ejercicios en modo script. </li></ul>
  79. 79. MATLAB Otros Tipos de Datos
  80. 80. Tipos de Datos
  81. 81. Tipos de Datos <ul><li>Nos devuelve el tipo de dato de “x”. </li></ul><ul><li>Tambien existen comandos que nos dan información lógica sobre cada tipo: </li></ul><ul><li>isinteger(x), isfloat(x), ischar(x), islogical(x), iscell(x), isstruct(x). </li></ul><ul><li>isempty(x), isnan(x), isinf(x). </li></ul>
  82. 82. Tipos de Datos <ul><li>El tipo de Dato entero corresponde: </li></ul><ul><li>El tipo de Dato float corresponde: </li></ul>
  83. 83. Conversión de Tipo <ul><li>Para convertir se usa el nombre del tipo a generar como si fuera función: </li></ul><ul><li>>> a = 522.08 </li></ul><ul><li>>> int8(a) </li></ul><ul><li>>> int16(a) </li></ul><ul><li>Verifique el redondeo. </li></ul>
  84. 84. Funciones de Redondeo <ul><li>round: redondea al entero mas proximo. </li></ul><ul><li>floor: redondea a –inf. </li></ul><ul><li>ceil: redondea a +inf. </li></ul><ul><li>fix: redondea hacia cero. </li></ul>
  85. 85. Funciones de Redondeo <ul><li>>> x = pi*(-1:3), round(x) </li></ul><ul><li>>> fix(x) </li></ul><ul><li>>> floor(x) </li></ul><ul><li>>> ceil(x) </li></ul><ul><li>>> sign(x), rem(x,3) </li></ul>
  86. 86. Caracteres, Cadenas y Texto <ul><li>MATLAB maneja el tipo Carácter. </li></ul><ul><li>Una cadena es un vector de caracteres. </li></ul><ul><li>Un Texto es una matriz de caracteres. </li></ul><ul><li>>> t1 = 'A' </li></ul><ul><li>Asigna el valor de ‘A’ al arreglo de carácter 1x1 t1. </li></ul>
  87. 87. Caracteres, Cadenas y Texto <ul><li>>> t2 = 'BCDE' </li></ul><ul><li>Asigna el valor BCDE al arreglo de caracteres 1x4 t2. </li></ul><ul><li>Las cadenas creadas se pueden tomar como arreglos regulares y manipularlos. </li></ul><ul><li>>> t3 = [t1,t2] </li></ul>
  88. 88. Acceso de Cadenas <ul><li>El direccionamiento funciona como en vectores: </li></ul>
  89. 89. Construcción de Cadenas <ul><li>Asigne: </li></ul><ul><li>>> t4 = [t3,' are the first 5 ';... </li></ul><ul><li>'characters in the alphabet.'] </li></ul><ul><li>Asigna el valor: </li></ul><ul><li>'ABCDE are the first 5 ' </li></ul><ul><li>'characters in the alphabet.' </li></ul>
  90. 90. Construcción de Cadenas <ul><li>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. </li></ul><ul><li>Los … significan que el comando continua en la línea siguiente. </li></ul>
  91. 91. Cadenas y Números <ul><li>Todo carácter tiene un equivalente en valor numérico. </li></ul><ul><li>str2num convierte una cadena a su correspondiente representación numérica. </li></ul><ul><li>int2str y num2str convierte respectivamente un entero y un numero real a su correspondiente cadena de caracteres. </li></ul>
  92. 92. Cadenas y Números <ul><li>Deseamos generar la cadena: ‘El valor de pi es 3.1416'. </li></ul><ul><li>[‘El valor de pi es ',num2str(pi)]. </li></ul><ul><li>Otro ejemplo: </li></ul><ul><li>>> N = 5; h = 1/N; </li></ul><ul><li>>> ['The value of N is ',int2str(N),... </li></ul><ul><li>', h = ',num2str(h)] </li></ul>
  93. 93. Manejo de Cadenas <ul><li>El operador == realiza comparaciones entre vectores (elemento a elemento) </li></ul>
  94. 94. Manejo de Cadenas
  95. 95. MATLAB Gráficas
  96. 96. PLOT <ul><li>La función PLOT realiza gráficos con por lo menos un parámetro. </li></ul><ul><li>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: </li></ul>
  97. 97. PLOT: Ejemplo 1 <ul><li>>>x = 0:pi/100:2*pi; </li></ul><ul><li>>>y = sin(x); </li></ul><ul><li>>>plot(x,y) </li></ul>
  98. 98. PLOT: Ejemplo 2 <ul><li>> >x = [1; 2; 3; 4; 5] </li></ul><ul><li>> >y = [0; .25; 3; 1.5; 2] </li></ul><ul><li>> >plot(x,y) </li></ul>
  99. 99. PLOT y Muestreo <ul><li>Para graficar para el rango [0,1] se muestrea la función a un numero suficientemente grande de puntos y luego se los une con líneas rectas. </li></ul><ul><li>Para tomar N+1 puntos igualmente espaciados a una distancia h: </li></ul><ul><li>>> N = 10; h = 1/N; x = 0:h:1; </li></ul>
  100. 100. PLOT y Muestreo <ul><li>Se define el conjunto: </li></ul><ul><li>>> y = sin(3*pi*x); </li></ul><ul><li>>> plot(x,y) </li></ul><ul><li>Verifique el gráfico e identifique que el numero N es muy pequeño aun. </li></ul><ul><li>Cambie N=100 y verifique el resultado. </li></ul>
  101. 101. PLOT y Muestreo <ul><li>El “seno” es una función continua. </li></ul><ul><li>MATLAB trabaja con datos discretos. </li></ul><ul><li>PLOT realiza una interpolación lineal entre esos datos para graficar. </li></ul><ul><li>Mayor cantidad de puntos (muestras) harán que la gráfica sea practicamente “continua”. </li></ul>
  102. 102. Propiedades de un PLOT <ul><li>>>xlabel('x = 0:2pi') </li></ul><ul><li>>>ylabel('Seno de x') </li></ul><ul><li>>>title('Gráfica de la función seno','FontSize',12) </li></ul>
  103. 103. PLOTs con Estilo <ul><li>Plot puede recibir un tercer argumento. </li></ul><ul><li>Tercer argumento es una cadena que recibe como primer carácter el color y segundo el estilo de linea. </li></ul>
  104. 104. PLOTs con Estilo <ul><li>La cadena recibe hasta 3 caracteres: </li></ul>
  105. 105. Multi-PLOT <ul><li>>>x = 0:pi/100:2*pi; </li></ul><ul><li>>>y = sin(x); </li></ul><ul><li>>>plot(x,y) </li></ul><ul><li>>>y2 = sin(x-.25); </li></ul><ul><li>>>y3 = sin(x-.5); </li></ul><ul><li>>>plot(x,y,x,y2,x,y3) </li></ul><ul><li>>>legend('seno(x)','seno(x-.25)','seno(x-.5)') </li></ul>
  106. 106. PLOT y el GCA <ul><li>Cada llamado de la función PLOT es una petición para crear un nuevo “eje” (axis – ventana donde se contiene el gráfico). </li></ul><ul><li>Cada llamado de PLOT entonces reemplazará la gráfica anterior. </li></ul><ul><li>>>hold on </li></ul><ul><li>“ Mantiene” el gráfico actual en el eje actual. </li></ul>
  107. 107. PLOT y el HOLD <ul><li>Se puede llamar muchas veces a PLOT pero no se reemplazará el gráfico hasta que exista un: </li></ul><ul><li>>>hold off </li></ul><ul><li>Comparar con lo aprendido en “Varios Gráficos en un PLOT”. </li></ul>
  108. 108. AXIS <ul><li>La función/comando axis ajusta los ejes del gráfico actual. Tiene esta sintaxis: </li></ul><ul><li>>>axis([xmin xmax ymin ymax]) </li></ul><ul><li>Cuando se crea un plot y no se ha definido “axis” entonces el axis es automatico: </li></ul><ul><li>>>axis auto </li></ul>
  109. 109. AXIS <ul><li>Pruebe estos valores para axis e identifique el efecto: </li></ul><ul><li>>>axis square </li></ul><ul><li>>>axis equal </li></ul><ul><li>>>grid on </li></ul><ul><li>>>grid off </li></ul>
  110. 110. Resumen
  111. 111. Practica
  112. 112. SUBPLOT <ul><li>Divide la ventana de graficos en un arreglo mxn en donde se pueden plotear mxn gráficos. </li></ul><ul><li>Se enumeran de izquierda a derecha, de arriba hacia abajo. </li></ul><ul><li>subplot(221) (o subplot(2,2,1)) indica que se divide en 2x2 gráficos y selecciona el 1 subgráfico. </li></ul>
  113. 113. SUBPLOT <ul><li>>> subplot(221), plot(x,y) </li></ul><ul><li>>> xlabel('x'),ylabel('sin 3 pi x') </li></ul><ul><li>>> subplot(222), plot(x,cos(3*pi*x)) </li></ul><ul><li>>> xlabel('x'),ylabel('cos 3 pi x') </li></ul><ul><li>>> subplot(223), plot(x,sin(6*pi*x)) </li></ul><ul><li>>> xlabel('x'),ylabel('sin 6 pi x') </li></ul><ul><li>>> subplot(224), plot(x,cos(6*pi*x)) </li></ul><ul><li>>> xlabel('x'),ylabel('cos 6 pi x') </li></ul>
  114. 114. Figuras, Ejes y Panel <ul><li>clf, limpia la figura actual. </li></ul><ul><li>close 1, cierra la ventana llamada “Figure 1”. </li></ul><ul><li>figure, abre una nueva ventana. </li></ul><ul><li>figure(9), abre una nueva ventana “Figure 9”. </li></ul>
  115. 115. Figuras, Ejes y Panel <ul><li>Cuando se ha ejecutado el comando PLOT se “crea” (abre) una nueva ventana que puede recibir graficos (ejes). </li></ul><ul><li>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. </li></ul>
  116. 116. Figuras, Ejes y Panel <ul><li>El comando close cierra la ventana actual y el comando close all cierra todos los graficos. </li></ul><ul><li>Se pueden tener tambien varias graficas sobre la misma ventana. </li></ul><ul><li>La funcion hold permite montar los graficos de una misma ventana actual. </li></ul>
  117. 117. Setear Propiedades a un Plot <ul><li>Todas las propiedades de cada objeto del gráfico (figura, ejes, elemento gráfico,...) están guardadas en &quot;handles“ </li></ul><ul><li>gcf  current figure, gca  current axis </li></ul><ul><li>get(handle) muestra todos las propiedades que se pueden cambiar. </li></ul>
  118. 118. Setear Propiedades a un Plot <ul><li>set(handle,'PropertyName','Value',...) cambia propiedades. </li></ul><ul><li>Para personalizar el eje x sin dependencia del vector: </li></ul><ul><li>set(gca,'Xtick',[1 2 3 4 5 6]); </li></ul><ul><li>set(gca,'XtickLabel',['ene';'feb';'mar';'abr';'may';'jun']); </li></ul>
  119. 119. Funciones para Graficar Funciones para graficar en 2D bar Gráfica de barra fill Dibujo de polígono en 2D relleno hist Histograma image Imagen loglog Gráfica con ambos ejes en escala logarítmica plot Gráfica simple polar Gráfica en coordenadas polares semilogx Gráfica con eje x en escala logarítmica semilogy Gráfica con eje y en escala logarítmica stairs Gráfica de escalera stem Gráfica de secuencia discreta
  120. 120. Otras Funciones para Graficar <ul><li>» x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8]; </li></ul><ul><li>» hist(x) </li></ul><ul><li>» figure </li></ul><ul><li>» bar(x) </li></ul><ul><li>Interprete los resultados. </li></ul>
  121. 121. Otras Maneras de Graficar
  122. 122. Otras Maneras de Graficar
  123. 123. Practica <ul><li>Ejecute el siguiente código: </li></ul><ul><li>>> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y; </li></ul><ul><li>>> plot(x,y,':',x,Y,'-' ) </li></ul><ul><li>Interprete los resultados. </li></ul>
  124. 124. Practica <ul><li>Grafique en un solo panel: </li></ul><ul><li>Para el rango de [0,10]. </li></ul>
  125. 125. Practica
  126. 126. MATLAB Estructuras de Control
  127. 127. Estructuras de Control <ul><li>Se basan en evaluar una expresión si es verdadera o falsa (1/0). </li></ul><ul><li>Estas expresiones son resultados de operaciones con: </li></ul><ul><li><(menor que), >(mayor que), == (igual a), <= (menor o igual que), >= (mayor o igual que) y ~= (distinto a). </li></ul>
  128. 128. Selección: IF <ul><li>Evalúa una condición lógica y si dicha expresión evalúa un resultado POSITIVO (1) entonces “selecciona” ejecutar un grupo de instrucciones, sino evalúa otro grupo. </li></ul>
  129. 129. Selección: IF <ul><li>if expr1 </li></ul><ul><li>comandos_matlab </li></ul><ul><li>elseif expr2 </li></ul><ul><li>otro_comandos_matlab </li></ul><ul><li>... </li></ul><ul><li>else </li></ul><ul><li>aun_otros_comandos_matlab </li></ul><ul><li>end </li></ul>
  130. 130. Selección: IF <ul><li>t = rand(1) </li></ul><ul><li>if t >0.5 </li></ul><ul><li>disp(“valor es mayor que 0.5”) </li></ul><ul><li>elseif t <0.25 </li></ul><ul><li>disp(“valor es menor que 0.25”) </li></ul><ul><li>else </li></ul><ul><li>disp(“valor está entre 0.25 y 0.5”) </li></ul><ul><li>end </li></ul>
  131. 131. Repetición: Lazos <ul><li>El uso de lazos es o debería ser MUY LIMITADO en MATLAB por el uso del operador :. </li></ul><ul><li>Los lazos son grandes consumidores de tiempo. </li></ul><ul><li>Tareas de optimización regularmente se encargan de evitar los lazos. </li></ul>
  132. 132. Repetición: Lazo For <ul><li>Se recomienda para: Repetir la ejecución de comandos por un número definido de veces. </li></ul><ul><li>for variable = expresión </li></ul><ul><li>comandos_matlab </li></ul><ul><li>end </li></ul><ul><li>“ expresión” debe definir el número de veces que se ejecutan los comandos, variable controla ese numero de repeticiones. </li></ul>
  133. 133. Repetición: Lazo For <ul><li>Imprimir el cuadrado de los 5 primeros numeros naturales: </li></ul><ul><li>for i=[1, 2, 3, 4, 5] </li></ul><ul><li>disp(i^2) </li></ul><ul><li>end </li></ul><ul><li>Notar que el for anterior tambien pudo ser escrito asi: “for i=1:5” </li></ul>
  134. 134. Repetición: Lazo For <ul><li>Imprimir el cuadrado de los números decimales de una cifra decimal de 0 a 1, en forma decreciente, es decir empezando por 1, 0.9, 0.8, ... 0.1, 0: </li></ul><ul><li>for i=1:-0.1:0 </li></ul><ul><li>disp(i^2) </li></ul><ul><li>end </li></ul>
  135. 135. Repetición: Lazo For <ul><li>Uso de Matriz para asignar valores </li></ul><ul><li>matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4] </li></ul><ul><li>for x = matriz </li></ul><ul><li>x </li></ul><ul><li>end </li></ul>
  136. 136. Repetición: Lazo For <ul><li>Creación de subplots usando FOR. </li></ul><ul><li>>> x = -1:.05:1; </li></ul><ul><li>>> for n = 1:8 </li></ul><ul><li>>> subplot(4,2,n), plot(x,sin(n*pi*x)) </li></ul><ul><li>>> end </li></ul>
  137. 137. Repetición: Lazo While <ul><li>Se usa regularmente cuando no se conoce en primera instancia cuantas repeticiones se deben ejecutar. </li></ul><ul><li>Las repeticiones dependerán de la expresión condicional que se evalúa. </li></ul><ul><li>MIENTRAS se cumpla sigue la repetición. </li></ul>
  138. 138. Repetición: Lazo While <ul><li>while expresión </li></ul><ul><li>comandos_matlab </li></ul><ul><li>end </li></ul>
  139. 139. Repetición: Lazo While <ul><li>Imprimir el valor de x, mientras este sea positivo, decrementando cada vez x en 17: </li></ul><ul><li>x = 100 </li></ul><ul><li>while x >0 </li></ul><ul><li>disp(x) </li></ul><ul><li>x = x - 17; </li></ul><ul><li>end </li></ul>
  140. 140. MATLAB Comandos y Funciones Útiles II
  141. 141. Construcción de Vectores Construcción de Vectores x = [1 3 9 33 0 -2] Se crea vector fila x con los elementos especificados x = primero:último Se crea vector fila x comenzando con primero , aumentando en intervalos de uno, terminando en o antes de último x = primero:incremento:último Se crea vector fila x comenzando con primero , aumentando en intervalos de incremento , terminando en o antes de último x = linspace(primero,último,n) Se crea vector fila x comenzando con primero , terminando en último , teniendo n elementos x = logspace(primero,último,n) Se crea vector fila x espaciado logarítmicamente comenzando con 10 primero , terminando en 10 último , teniendo n elementos
  142. 142. Maximo y Minimo <ul><li>La función max opera sobre un vector retornando el valor máximo. </li></ul><ul><li>>> x = [1.3 -2.4 0 2.3], max(x), max(abs(x)) </li></ul><ul><li>>> [m, j] = max(x) </li></ul><ul><li>Cuando tomamos 2 resultados de max, que representa el 2do. Resultado? </li></ul>
  143. 143. Maximo y Minimo <ul><li>La función min opera d emanera similar a max. </li></ul><ul><li>En el caso de que A sea una matriz max(A) retorna un vector conteniendo el máximo elemento de cada columna (similar al comportamiento de sum). </li></ul>
  144. 144. Busqueda en vectores <ul><li>El comando find devuelve una lista con las posiciones de los elementos de un vector que satisfacen una determinada condición. </li></ul><ul><li>>> x = -1:.05:1; </li></ul><ul><li>>> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':') </li></ul><ul><li>>> k = find(y > 0.2) </li></ul><ul><li>Verifique el contenido de k e interpretelo. </li></ul>
  145. 145. Busqueda en Vectores <ul><li>Representación gráfica de la búsqueda: </li></ul><ul><li>>> hold on, plot(x(k),y(k),'o') </li></ul><ul><li>>> km = find( x>0.5 & y<0) </li></ul><ul><li>>> plot(x(km),y(km),'-') </li></ul>
  146. 146. Busqueda en matrices <ul><li>Opera de manera muy similar en matrices: </li></ul><ul><li>>> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0 1] </li></ul><ul><li>>> k = find(A==0) </li></ul><ul><li>Verifique e interprete el contenido de k. </li></ul><ul><li>Find en una matriz realmente primero reordena (reshape) la matriz en un vector para buscar. </li></ul>
  147. 147. Busqueda en matrices <ul><li>A = </li></ul><ul><ul><ul><li>-2 3 4 4 </li></ul></ul></ul><ul><ul><ul><li>0 5 -1 6 </li></ul></ul></ul><ul><ul><ul><li>6 8 0 1 </li></ul></ul></ul><ul><ul><li>-2 0 6 3 5 8 4 -1 0 4 6 1 </li></ul></ul>1 2 3 ...
  148. 148. Busqueda en matrices <ul><li>Los indices del reordenamiento de la matriz quedan: </li></ul><ul><li>>> n = find(A <= 0) </li></ul><ul><li>>> A(n) </li></ul>
  149. 149. Busqueda en matrices <ul><li>“ 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. </li></ul>
  150. 150. Polinomios <ul><li>Los polinomios se definen en base a un vector de coeficientes. </li></ul><ul><li>MATLAB es una herramienta de cálculo numerico. </li></ul>
  151. 151. Polinomios: Funciones <ul><li>Se pueden realizar algunas funciones, como obtener las raices del polinomio y también evaluar el polinomio para un valor de “x”. </li></ul><ul><li>>> pol=[1 0 -8 6 -10] </li></ul><ul><li>>> roots(pol) </li></ul><ul><li>>> polyval(pol,1) </li></ul>
  152. 152. Polinomios: Funciones <ul><li>Para realizar la multiplicación entre polinomios MATLAB usa el producto de convolución. </li></ul><ul><li>>> pol1=[1 -2 4] </li></ul><ul><li>>> pol2=[1 0 3 -4] </li></ul><ul><li>>> pol3=conv(pol1,pol2) </li></ul>
  153. 153. Hipermatrices <ul><li>Matrices de mas de dos dimensiones. </li></ul><ul><li>El tercer subindice representa la tercera dimensión: “La profundidad de la hipermatriz”. </li></ul>
  154. 154. Manejo de Datos: Paginas <ul><li>Se muestra a continuación cómo organizar las matrices x1 y x2 de 3x3 en dos páginas, o sea en un arreglo x de 3x3x2. (La variable x debe estar inicialmente vacía o no existir): </li></ul><ul><li>» x1=[1 2 3; 4 5 6; 7 8 9] </li></ul><ul><li>» x2=[10 20 30; 40 50 60; 70 80 90] </li></ul>
  155. 155. Hipermatrices <ul><li>» x(:,:,1)=x1; </li></ul><ul><li>» x(:,:,2)=x2; </li></ul><ul><li>La información quedará organizada como se muestra en la figura: </li></ul>
  156. 156. Hipermatrices <ul><li>Creación a partir de otras matrices de dos dimensiones: </li></ul><ul><li>>> AA(:,:,1)=[1 2 3; 4 5 6] </li></ul><ul><li>>> AA(:,:,2)=[2 3 4; 5 6 7] </li></ul><ul><li>Las funciones comunes para uso con matrices, también pueden manejar hipermatrices. </li></ul>
  157. 157. Hipermatrices <ul><li>>> BB=randn(2,3,2) </li></ul><ul><li>Verifique el resultado como MATLAB muestra el contenido de las hipermatrices pequeñas. </li></ul><ul><li>>> A=zeros(2,3); B=ones(2,3); </li></ul><ul><li>Por su naturaleza la concatenación se realiza a traves de funciones. </li></ul>
  158. 158. Hipermatrices <ul><li>La función cat concatena arreglos. </li></ul><ul><li>Recibe 3 parametros el primero es la dimensión a lo largo de la cual concatenará 2 matrices pasadas como parametros. </li></ul><ul><li>CAT(2,A,B) is the same as [A,B]. </li></ul><ul><li>CAT(1,A,B) is the same as [A;B]. </li></ul>
  159. 159. Hipermatrices <ul><li>>> cat(1,A,B) </li></ul><ul><li>>> cat(2,A,B) </li></ul><ul><li>>> cat(3,A,B) </li></ul><ul><li>Verifique como MATLAB arma la matriz usando cat. </li></ul>
  160. 160. Hipermatrices <ul><li>Tienen reglas especiales para usar funciones con ellas. </li></ul><ul><li>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). </li></ul>
  161. 161. Hipermatrices <ul><li>Las funciones que operan sobre vectores ( sum(), max(), etc.) se aplican a matrices e hipermatrices según la primera dimensión, resultando un array de una dimensión inferior. </li></ul>
  162. 162. Hipermatrices <ul><li>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 (:)). </li></ul>
  163. 163. Hipermatrices: Reshape <ul><ul><ul><ul><ul><li>» reshape(x, 3, 6) </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>ans = </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>1 2 3 10 20 30 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>4 5 6 40 50 60 </li></ul></ul></ul></ul></ul><ul><ul><ul><ul><ul><li>7 8 9 70 80 90 </li></ul></ul></ul></ul></ul>
  164. 164. Manejo de Datos <ul><li>Matlab permite varias opciones para almacenar las variables con las cuales se trabaja para su posterior utilización. En todos los casos el comando es save. </li></ul><ul><li>Para guardar archivos con código ASCII. La sintaxis es: </li></ul><ul><ul><ul><ul><li>save <nombre del archivo> <variables> -ascii </li></ul></ul></ul></ul><ul><li>Todas las variables que se graben usando este metodo deben tener la misma dimensión. </li></ul>
  165. 165. Manejo de Datos <ul><li>Todas las variables que se graben usando este metodo deben tener la misma dimensión. </li></ul>
  166. 166. Manejo de Datos <ul><li>Para guardar datos en formato binario: </li></ul><ul><li>save <nombre del archivo> <varia bles> </li></ul><ul><li>Las variables no necesariamente deben tener la misma dimensión. </li></ul><ul><li>Se pueden generar archivos de datos para leer desde MATLAB usando un editor de texto como el Notepad, mantener la extensión .dat para identificar que es un archivo de datos. </li></ul>
  167. 167. Manejo de Datos <ul><li>Supongamos un fichero llamado datos.txt que tiene, por ejemplo, dos columnas de valores que son números reales. </li></ul><ul><li>Para leer los datos del fichero: </li></ul><ul><li>[x1,x2] = textread(’datos.txt’,’%f %f’); </li></ul>
  168. 168. Manejo de Datos <ul><li>Otra opción más: </li></ul><ul><li>load ’datos.txt’ -ascii </li></ul><ul><li>x1 = datos(:,1); </li></ul><ul><li>x2 = datos(:,2); </li></ul>
  169. 169. Manejo de Datos <ul><li>Creando un archivo llamado flat.txt que contenga las líneas: </li></ul><ul><li>23.456 56.032 67.802 </li></ul><ul><li>3.749 -98.906 34.910 </li></ul><ul><li>El comando A=load(’flat.txt’) leerá estos valores y los asignará a la matriz A . </li></ul>
  170. 170. MATLAB Gráficas 3D
  171. 171. Gráficas en 3 Dimensiones <ul><li>También se basa en graficar puntos: </li></ul><ul><li>>> t=0:pi/50:10*pi; </li></ul><ul><li>>> plot3(sin(t),cos(t),t) </li></ul><ul><li>Esta gráfica es paramétrica. </li></ul><ul><li>Un solo parámetro resulta en una gráfica de linea. Se extiende la etiqueta zlabel(‘texto’) </li></ul>
  172. 172. Graficas en 3 Dimensiones <ul><li>Se deben generar los valores a graficar, estos deben ser una matriz. </li></ul><ul><li>Ejemplo: </li></ul><ul><li>>> z = peaks(10) </li></ul><ul><li>>> plot(z) </li></ul>
  173. 173. Graficas en 3 Dimensiones <ul><li>>> mesh(z) </li></ul><ul><li>>> contour(z,10)   </li></ul><ul><li>>> surf(z) </li></ul><ul><li>Se puede cambiar “la vista” desde la ventana de comandos: </li></ul><ul><li>>> view(0,0) </li></ul><ul><li>>> view(90,0) </li></ul><ul><li>  </li></ul>
  174. 174. Superficies <ul><li>Una superficie también se define matemáticamente con una función f(x,y). </li></ul><ul><li>Para cada valor de (x,y) se calcula “la altura” de la función: z = f(x,y). </li></ul><ul><li>Para plotear esto debemos definir un rango de “x” y de “y” para el gráfico. </li></ul>
  175. 175. Superficies <ul><li>Definiendo el dominio: </li></ul><ul><li>x = 2:0.5:4; y = 1:0.5:3; </li></ul><ul><li>Definido el dominio debemos definir la “grilla” de valores que servirán de los puntos (x,y) para graficar. </li></ul><ul><li>Esto es como relacionar “x” y “y”. </li></ul>
  176. 176. Superficies <ul><li>>> [X,Y] = meshgrid(2:.5:4, 1:.5:3); </li></ul><ul><li>>> X </li></ul><ul><li>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)) serían las coordenadas de ese punto. </li></ul>
  177. 177. Superficies <ul><li>Plotee la siguiente función: </li></ul><ul><li>>> [X,Y] = meshgrid(2:.2:4, 1:.2:3); </li></ul><ul><li>>> Z = (X-3).^2-(Y-2).^2; </li></ul><ul><li>>> mesh(X,Y,Z) </li></ul><ul><li>>> title(‘Silla'), xlabel('x'),ylabel('y') </li></ul>
  178. 178. Superficies <ul><li>Grafique la siguiente superficie: </li></ul><ul><li>Encuentre los valores máximos de la función. </li></ul>
  179. 179. Superficies <ul><li>>> [X,Y] = meshgrid(-2:.1:2,-2:.2:2); </li></ul><ul><li>>> f = -X.*Y.*exp(-2*(X.^2+Y.^2)); </li></ul><ul><li>>> figure (1) </li></ul><ul><li>>> mesh(X,Y,f), xlabel('x'), ylabel('y'), grid </li></ul><ul><li>>> figure (2), contour(X,Y,f) </li></ul><ul><li>>> xlabel('x'), ylabel('y'), grid, hold on </li></ul>
  180. 180. Superficies <ul><li>Para encontrar los máximos: </li></ul><ul><li>>> fmax = max(max(f)) </li></ul><ul><li>>> kmax = find(f==fmax) </li></ul><ul><li>>> Pos = [X(kmax), Y(kmax)] </li></ul><ul><li>>> plot(X(kmax),Y(kmax),'*') </li></ul><ul><li>>> text(X(kmax),Y(kmax),' Maximo') </li></ul>
  181. 181. Diferentes Dominios <ul><li>x=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10; </li></ul><ul><li>y=x; </li></ul><ul><li>[X,Y]=meshgrid(x,y); </li></ul><ul><li>Z=cos(X)+cos(Y); </li></ul><ul><li>subplot(3,1,1) </li></ul><ul><li>surf(Z); </li></ul>
  182. 182. Diferentes Dominios <ul><li>axis([0 11 0 11 0 2]) </li></ul><ul><li>subplot(3,1,2) </li></ul><ul><li>surf(x,y,Z); </li></ul><ul><li>subplot(3,1,3) </li></ul><ul><li>surf(X,Y,Z); </li></ul>
  183. 183. Otros Graficos 3D
  184. 184. MATLAB Estructuras y Celdas
  185. 185. Tipos de Datos
  186. 186. Estructuras <ul><li>Permiten guardar valores de diferente tipo de dato bajo un mismo nombre. </li></ul><ul><li>Organizan la información, siguen un modelo de campo-valor. </li></ul><ul><li>El acceso a los elementos de cada una de las claves se hace con “.” </li></ul>
  187. 187. Estructuras <ul><li>>> punto.x=2 </li></ul><ul><li>>> punto.y=3 </li></ul><ul><li>>> punto.color='rojo‘ </li></ul><ul><li>>> punto </li></ul><ul><li>Se pueden crear tambien vectores de Estructuras: </li></ul><ul><li>>> punto(2).x=4, punto(2).y=5, punto(2).color='verde' </li></ul>
  188. 188. Estructuras <ul><li>Verifique el direccionamiento: </li></ul><ul><li>>> punto(1), punto(2) </li></ul><ul><li>Y el direccionamiento de campos: </li></ul><ul><li>>> campo = ‘x’ </li></ul><ul><li>>> punto.(campo) </li></ul>
  189. 189. Celdas (Cell Array) <ul><li>Construye un arreglo donde cada elemento puede ser de un tipo diferente. </li></ul><ul><li>>> c={12,'Red',magic(4)}; </li></ul><ul><li>Verifique el contenido de c en el workspace </li></ul><ul><li>Se utilizan llaves { } en lugar de corchetes [ ] o paréntesis ( ) </li></ul>
  190. 190. Celdas (Cell Array) <ul><li>>> b{1}=12; </li></ul><ul><li>>> b{2}='Red'; </li></ul><ul><li>>> b{3}=magic(4); </li></ul><ul><li>La diferencia con las estructuras es que se accede a los valores utilizando un índice en lugar del nombre del campo. </li></ul><ul><li>– Trabajar con estructuras es ineficiente </li></ul>
  191. 191. Celdas (Cell Array) <ul><li>>> a{1,1} = 12; </li></ul><ul><li>>> a{1,2} = 'Red'; </li></ul><ul><li>>> a{1,3} = magic(4); </li></ul><ul><li>>> a{2,1}=ones(3); </li></ul><ul><li>>> a{2,2}=43; </li></ul><ul><li>>> a{2,3}='texto'; </li></ul>
  192. 192. Celdas (Cell Array) <ul><li>Utilizando ( ) accede a un elemento, que es tipo cell. </li></ul><ul><li>• Utilizando { } accede al valor. </li></ul><ul><li>Verifique los tipos con: </li></ul><ul><li>class(a) </li></ul><ul><li>class(a(1,1)) </li></ul><ul><li>class(a{1,1}) </li></ul>
  193. 193. MATLAB GUIDE
  194. 194. GUI <ul><li>GUI (Graphical User Interface) es util para presentar un desarrollo final. </li></ul><ul><li>Adhiere usabilidad al ajuste de parametros y visualizacion de un programa </li></ul><ul><li>La elaboración de GUI se puede realizar de dos formas: </li></ul><ul><ul><ul><ul><li>Código a través de un script </li></ul></ul></ul></ul><ul><ul><ul><ul><li>GUIDE que es la herramienta de diseño de MatLAB . </li></ul></ul></ul></ul>
  195. 195. GUIDE <ul><li>Para iniciarla ejecute el comando “guide” en MATLAB </li></ul><ul><li>Seleccione un GUI vacio </li></ul>
  196. 196. GUIDE <ul><li>Obtendra un formulario en blanco al cual puede agregar CONTROLES. </li></ul><ul><li>Se debe antes preparar un diseño de la GUI </li></ul>
  197. 197. Partes de la ventana GUIDE
  198. 198. Estructura Jerárquica de controles
  199. 199. Ejemplo: PLOTTER <ul><li>Se desea crear una GUI que realice un PLOT de una funcion determinada. </li></ul><ul><li>Primero se ubican los controles basicos para el programa del menu: axes, static text, edit box, button. </li></ul>
  200. 200. Controles Basicos <ul><li>Axes: un espacio para dibujar. </li></ul><ul><li>Static text: texto que se adhiere a la pantalla y el usuario no puede editarlo </li></ul><ul><li>Edit box: una caja blanca que el usuario puede modificar el contenido </li></ul><ul><li>Button: realiza una accion cuando el usuario da click en el. </li></ul>
  201. 201. El Inspector de Propiedades <ul><li>Cuando le dan doble click a un control, muestra una ventana listando todas las propiedades de ese control (fuente, posicion, tamaño, etc.). </li></ul><ul><li>Tag: el nombre del control en el codigo, es mejor renombrarlo por algo identificable. </li></ul>
  202. 202. El Inspector de Propiedades <ul><li>String: el texto que aparece en el control. </li></ul><ul><li>ForegroundColor: color del texto. </li></ul><ul><li>Background color: color del control. </li></ul>
  203. 203. Ejecutando <ul><li>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. </li></ul><ul><li>Probar corriendo el programa. (que aun no hace nada). </li></ul>
  204. 204. Ejecutando <ul><li>Para agregar funcionalidad a la GUI se debe definir un callback para el boton para que asi grafique la funcion cuando se presione </li></ul>
  205. 205. Plotter
  206. 206. Escribiendo Callbacks <ul><li>Cuando se corra el programa, se crean 2 archivos: </li></ul><ul><li>.fig: contiene el esquema grafico de los controles. </li></ul><ul><li>.m: contiene el codigo que define la funciòn callback para cada uno de los controles. </li></ul>
  207. 207. Escribiendo Callbacks <ul><li>Generalmente no se edita el codigo de inicializacion del .m. </li></ul><ul><li>Probablemente muchos callbacks de controles se quedaran en blanco. </li></ul><ul><li>Se puede seleccionar el control y dar click derecho para editar el Callback con la opciòn “View Callback”. </li></ul>
  208. 208. El Callback del botón <ul><li>% --- Executes on button press in PlotButton. </li></ul><ul><li>function PlotButton_Callback(hObject, eventdata, handles) </li></ul><ul><li>% hObject handle to PlotButton (see GCBO) </li></ul><ul><li>% eventdata reserved - to be defined in a future version of MATLAB </li></ul><ul><li>% handles structure with handles and user data (see GUIDATA) </li></ul>
  209. 209. El Callback del boton <ul><li>Se pueden borrar los comentarios. </li></ul><ul><li>Cada funcion tiene el parametro handles. Dicho parametro contiene todos los controles: handles.PlotButton, handles.edit1, etc… </li></ul><ul><li>Se pueden agregar variables a handles para hacerlas disponbiles en todos los controles/funciones: handles.x=42; </li></ul>
  210. 210. Handles <ul><li>Cada uno de los objetos de MATLAB tiene un identificador único (handle), a los cuales se les llamará handle o id. </li></ul><ul><li>Los identificadores de la ventana activa, de los ejes activos y del objeto activo se pueden obtener respectivamente con los comandos : </li></ul>
  211. 211. Handles <ul><ul><ul><li>gcf (get current figure) devuelve un entero, que es el handle de la ventana activa </li></ul></ul></ul><ul><ul><ul><li>gca (get current axes) devuelve el handle de los ejes activos </li></ul></ul></ul><ul><ul><ul><li>gco (get current object) devuelve el handle del objeto activo </li></ul></ul></ul><ul><ul><ul><li>delete(handle) borra el objeto correspondiente y todos sus objetos que dependen de él. </li></ul></ul></ul>
  212. 212. Escribiendo Callbacks <ul><li>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 función SET. </li></ul><ul><li>En este caso queremos OBTENER el String escrito en el edit box y graficarlo. </li></ul>
  213. 213. Escribiendo Callbacks <ul><li>function PlotButton_Callback(hObject, eventdata, handles) </li></ul><ul><li>x = -10 : 0.1 : 10; </li></ul><ul><li>s = get(handles.functionEdit, 'String'); </li></ul><ul><li>y = eval(s); %eval just evaluates the given string </li></ul><ul><li>handles.axes1; %Subsequent commands draw on axes1. </li></ul><ul><li>plot(x, y); </li></ul>
  214. 214. Corriendo el programa <ul><li>Cuando se modifica el codigo del m-file no se tiene que volver a correr la GUI (solo se ha modificado la funcionalidad). </li></ul><ul><li>Para correr el GUI se puede usar tambien desde el command window el nombre de la GUI como si fuera un script. </li></ul>
  215. 215. Otros controles <ul><li>Slider bar: el usuario puede moverse adelante y hacia atrás. 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. </li></ul><ul><li>Check box: el usuario puede activar o desactivarlo, similar al Radio Button. </li></ul>
  216. 216. Otros controles <ul><li>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. </li></ul><ul><li>Panel: un rectangulo para colocar controles, util para organizar la GUI. </li></ul>
  217. 217. Trabajando con el Workspace <ul><li>Desde la ventana de comandos se puede modificar el workspace de matlab. </li></ul><ul><li>El comando evalin permite leer variables desde el workspace. </li></ul><ul><li>Por ejemplo para leer el nombre de variable tipeado en un edit box a handles.x </li></ul>
  218. 218. Trabajando con el Workspace <ul><li>s = get(variableEdit, 'String'); </li></ul><ul><li>handles.x=evalin('base',s); </li></ul><ul><li>Para escribir un valor en el workspace se usa assignin. </li></ul><ul><li>Para crear una variable x en el workspace: </li></ul><ul><li>assignin ('base', 'x', handles.x); </li></ul>
  219. 219. Practica: <ul><li>Deberá re-escribir 3 metodos callback para la funcionalidad mostrada: </li></ul><ul><li>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). </li></ul>
  220. 220. Practica
  221. 221. MATLAB DAQ
  222. 222. Toolbox: DAQ <ul><li>El toolbox de Adquisición de Datos (DAQ) le permite al usuario capturar y/o generar señales reales e interactuar con ellas desde Matlab. </li></ul><ul><li>Un sistema de adquisición de datos es un conjunto de software y hardware que permiten a un sistema digital conectarse” al mundo real. </li></ul>
  223. 223. Toolbox: DAQ <ul><li>Un sistema de adquisición de datos típico está formado de: </li></ul><ul><ul><ul><ul><li>• Sensores y actuadores </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• Hardware de adquisición de datos </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• Hardware de acondicionamiento de señal </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• Computadora o procesador </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• Programa </li></ul></ul></ul></ul>
  224. 224. Esquema de DAQ
  225. 225. Transductores y Hardware <ul><li>A los sensores y actuadores también se les conoce como transductores. </li></ul><ul><li>Transductor es aquel elemento que convierte una señal de entrada de cierta naturaleza en una señal de salida de otra naturaleza. </li></ul>
  226. 226. Transductores y Hardware <ul><li>Por ejemplo, un micrófono es un sensor que convierte energía sonora (en forma de presión) en energía eléctrica, mientras que una bocina es un actuador que convierte una señal eléctrica en una señal sonora. </li></ul>
  227. 227. Transductores y Hardware <ul><li>El Hardware es el corazón de cualquier sistema de adquisición de datos. Su función es convertir señales analógicas provenientes del mundo real a señales digitales (convertidores analógico a digital, ADC) y/o convertir señales digitales a analógicas (convertidores digital a analógico, DAC). </li></ul>
  228. 228. HW de acondicionamiento de la señal <ul><li>Generalmente las señales de los sensores son incompatibles con el hardware de adquisición de datos; para lograr la compatibilidad se requiere acondicionar la señal. </li></ul><ul><li>Por ejemplo, si la señal es muy pequeña, es necesario amplificarla; por el contrario, si la señal es muy grande se requiere atenuarla. </li></ul>
  229. 229. HW de Acondicionamiento <ul><li>También es muy común eliminar componentes de frecuencias indeseables que se encuentran presentes en la señal a procesar. En el caso de las señales de salida, generalmente estas son de baja corriente y mediante hardware se les amplifica y aumenta la corriente. </li></ul>
  230. 230. La computadora y el Software <ul><li>La computadora proporciona un procesador, un reloj, un bus para transferir datos y espacio de memoria o disco para almacenar datos. </li></ul><ul><li>El software de adquisición de datos permite intercambiar información entre la computadora y el hardware. </li></ul>
  231. 231. La computadora y el Software <ul><li>Por ejemplo, los programas típicos permiten configurar la tasa de muestreo de una tarjeta de adquisición de datos y adquirir un número predefinido de muestras. </li></ul>
  232. 232. Toolbox de DAQ <ul><li>El toolbox de adquisición de datos se divide en tres componentes principales: </li></ul><ul><ul><ul><ul><li>• Las funciones M establecidas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• El motor de adquisición de datos </li></ul></ul></ul></ul><ul><ul><ul><ul><li>• Los manejadores (drivers) de la tarjeta de adquisición de datos (en este caso, la de </li></ul></ul></ul></ul><ul><ul><ul><ul><li>sonido) </li></ul></ul></ul></ul>
  233. 233. DAQ y MATLAB
  234. 234. Adaptadores <ul><li>Fabricante Nombre del adaptador </li></ul><ul><li>National Instruments nidaq </li></ul><ul><li>ComputerBoards cbi </li></ul><ul><li>Agilent Technologies hpel432 </li></ul><ul><li>Tarjetas de sonido para Windows winsound </li></ul>
  235. 235. DAQ Básico: IN <ul><li>1. Creación el dispositivo de objeto. Crear el objeto del canal analógico de entrada ‘ai’ para la tarjeta de sonido </li></ul><ul><ul><ul><ul><li>ai=analoginput(‘winsound’) </li></ul></ul></ul></ul><ul><li>2. Agregar canales. Agregar un canal de hardware </li></ul><ul><ul><ul><ul><li>addchannel(ai,1); </li></ul></ul></ul></ul>
  236. 236. DAQ Básico: IN <ul><li>3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un segundo de muestras (44100 muestras) </li></ul><ul><ul><ul><ul><li>set(ai,'SampleRate',44100) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>set(ai,'SamplesPerTrigger',44100) </li></ul></ul></ul></ul>
  237. 237. DAQ Básico: IN <ul><li>4. Adquirir datos. Iniciar la adquisición. Cuando terminen de adquirir todos los datos, ‘ai’ automáticamente detiene la ejecución. </li></ul><ul><ul><ul><ul><li>start(ai) </li></ul></ul></ul></ul>
  238. 238. DAQ Basico: IN <ul><ul><ul><ul><li>data = getdata(ai); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>plot(data) </li></ul></ul></ul></ul><ul><li>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. </li></ul><ul><ul><ul><ul><li>delete(ai) </li></ul></ul></ul></ul><ul><ul><ul><ul><li>clear ai </li></ul></ul></ul></ul>
  239. 239. DAQ Basico: OUT <ul><li>1. Creación el dispositivo de objeto. Crear el objeto del canal analógico de salida ‘ao’ para la tarjeta de sonido </li></ul><ul><ul><ul><ul><li>ao=analogoutput(‘winsound’) </li></ul></ul></ul></ul><ul><li>2. Agregar canales. Agregar un canal de hardware a ‘ao’ addchannel(ao,1); </li></ul>
  240. 240. DAQ Básico: OUT <ul><li>3. Configurar los valores correspondientes. Configure la tasa de muestreo a 44.1 KHz y capture un segundo de muestras (44100 muestras) </li></ul><ul><ul><ul><ul><li>set(ao,'SampleRate',44100) </li></ul></ul></ul></ul>
  241. 241. DAQ Básico: OUT <ul><li>4. Sacar datos. Iniciar la adquisición. Crear un segundo de datos de salida y almacenarlos para una eventual salida por el subsistema de salida analógico. Debe almacenarse una columna de datos para cada canal añadido. </li></ul><ul><ul><ul><ul><li>n=0:1:88200; </li></ul></ul></ul></ul><ul><ul><ul><ul><li>data = sin(2*pi*n*1000/44100); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>putdata(ao,[data’]) </li></ul></ul></ul></ul>
  242. 242. DAQ Básico: OUT <ul><li>Iniciar la salida. Cuando todos los datos hayan salido, ‘ao’ automáticamente finaliza la ejecución. </li></ul><ul><ul><ul><ul><li>start(ao) </li></ul></ul></ul></ul><ul><li>Esta línea bloquea la línea de comando de Matlab hasta que se detiene ‘ao’ </li></ul><ul><ul><ul><ul><li>while strcmp(ao.Running,'On') </li></ul></ul></ul></ul><ul><ul><ul><ul><li>end </li></ul></ul></ul></ul>
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×