Matlab Fiee
Click here to load reader
-
Upload
alejandro-soto-altamirano -
Category
Documents
-
view
142 -
download
8
Transcript of Matlab Fiee
![Page 1: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/1.jpg)
Fundamentos Básicosde Matlab
![Page 2: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/2.jpg)
Contenido• Introducción.• Vectores/Matrices.• Graficas 2D.• Graficas 3D.
• Scripts y Funciones.• Matemática
simbolica• Aplicaciones.• Simulink
![Page 3: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/3.jpg)
MATLABIntroduccion
![Page 4: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/4.jpg)
Que es MATLAB• Lenguaje de Programación.• Alto Rendimiento.• Computación Técnica.• Computación, Visualización y Programación.• Problemas y soluciones en notación
Matemática (de Matrices).
![Page 5: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/5.jpg)
Aplicaciones?• Matemáticas y Computación.• Desarrollo y Test de algoritmos.• Modelado, Simulación y Prototipos.• Análisis de Datos, exploración y
visualización.• Gráficas de Ingeniería y Científicas.• Desarrollo de Aplicaciones finales (GUI)
![Page 6: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/6.jpg)
Aplicaciones?
![Page 7: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/7.jpg)
MATLAB?• Matrix Laboratory (Laboratorio de Matrices).• Elemento básico: [Matriz] (en adelante
Arreglo) que no requiere dimensión.• Problemas que involucran matrices y
vectores son consumidores de tiempo (C, C++, Fortran, etc.)
![Page 8: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/8.jpg)
Entorno de Trabajo• Abra MATLAB.• Identifique:
– Ventana de Comandos.– Historial de Comandos.– Directorio Actual.– Espacio de Trabajo.– Barra de Menús.
![Page 9: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/9.jpg)
MATLAB como Calculadora• Desde la ventana de comandos ingrese:• >> 2 + 3/4*5• Verifique la respuesta de MATLAB.• Verifique el workspace.
![Page 10: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/10.jpg)
Números• Por defecto se usa la notación decimal
convencional.• La letra “e” se usa para definir notación
científica (x10).• Los números imaginarios se definen usando
las letras “i” y “j”.
![Page 11: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/11.jpg)
Números• Los números tienen una precisión de 16
dígitos significativos decimales y un rango entre 10-308 y 10+308 .
• Todas las operaciones en MATLAB se realizan en precisión doble.
• El formato es la manera en como se muestran los valores
![Page 12: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/12.jpg)
Formato• Usando el comando format:
![Page 13: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/13.jpg)
Variables• La variable ANS es básica en MATLAB.• Ejecute:• >> 3-2^4• Verifique el resultado almacenado en ANS.• Ejecute:• >> ans*5• Verifique el uso de variables y resultado.
![Page 14: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/14.jpg)
Variables• Las variables no requieren de una
declaración de tipo o tamaño.• >>num_estudiantes = 25• MATLAB crea el espacio necesario y asocia
el tipo adecuado para definir esa variable, si es que no la encuentra en el Workspace.
![Page 15: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/15.jpg)
Variables• Las variables tienen un limite de tamaño de
nombre de 31 caracteres.• Deben empezar con una letra SIEMPRE.• NO deben contener caracteres especiales,
salvo el “underscore” _
![Page 16: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/16.jpg)
Las letras “i” y “j”• “i” y “j” estan reservadas para definir
numeros complejos.• >>i• >>i=20• >>i• Verifique el comportamiento de “i”
![Page 17: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/17.jpg)
Otras palabras reservadas• pi 3.14159265...• i unidad imaginaria• realmin el número más pequeño, 2-1022
• realmax el número más grande, 21023
• Inf infinito
![Page 18: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/18.jpg)
Comandos de manejo de Sesión• clc• clear• clear var1, var2• exist(‘nombre’)• quit• who• whos
![Page 19: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/19.jpg)
MATLABVectores
![Page 20: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/20.jpg)
Vectores Fila• Vectores que “se ven como filas”• Se definen con espacios o comas entre sus
elementos.• >>v = [ 1 3, sqrt(5)]• Verifique el resultado en el workspace.• >> length(v)• Verifique el resultado en el workspace.
![Page 21: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/21.jpg)
Vectores Fila• Puede haber problemas con los espacios.• Ejecute:• v2 = [3+ 4 5]• Verifique el comportamiento• Ejecute:• v3 = [3 +4 5]• Verifique el comportamiento
![Page 22: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/22.jpg)
Operaciones Vectores Fila• Deben tener la misma dimensión para la
suma.• >> v + v3• Pueden multiplicarse por un escalar.• >> v4 = 3*v• Pruebe: >> v + v2
![Page 23: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/23.jpg)
Definición 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.
![Page 24: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/24.jpg)
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 paréntesis para acceder a la posición del elemento a cambiar/ver.
• >> w(2) = -2, w(3)
![Page 25: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/25.jpg)
El operador :• Ejecute:• >>1:10• Verifique el resultado.• Cual es la función del operador “:”?• De manera general a : b : c produce un
vector con valor inicial a, valor final c e incrementos de b.
![Page 26: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/26.jpg)
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• >> r5(3:6)• Cual sera el resultado de?• r5(6:-2:1)
![Page 27: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/27.jpg)
Vectores Columna• Vectores que se ven como columna.• Se definen usando “;”• Pruebe:• >> c = [ 1; 3; sqrt(5)]• >> c2 = [3• 4• 5]
![Page 28: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/28.jpg)
Transpuesta• Se puede convertir un vector fila en un
vector columna y viceversa.• >> w, w', c, c'• Defina el vector complejo:• >> x = [1+3i, 2-2i]• La transpuesta para x corresponderá a la
transpuesta conjugada.
![Page 29: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/29.jpg)
Producto de Vectores• Multiplicación de Vector Fila x Columna• >> u = [ 10, -11, 12], v = [20; -21; -22]• >> prod = u*v• Es una multiplicación Matricial!.• >> w = [2, 1, 3], z = [7; 6; 5]• >> u*w• Verifique ambos ejemplos.
![Page 30: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/30.jpg)
El operador .• Corresponde al producto Hadamard.• Trabaja sobre vectores del mismo tipo (fila o
columna).• >> u.*v'• Tabulemos la función para
![Page 31: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/31.jpg)
El operador .• Se puede usar también para la división:• >> a = 1:5, b = 6:10, a./b• >> a./a• >> c = -2:2, a./c• >> a.*b -24, ans./c• Verifique el resultado.
![Page 32: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/32.jpg)
MATLABMatrices
![Page 33: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/33.jpg)
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 ]• Verifique el resultado.• Use la flecha “hacia arriba” y reemplace los
espacios en blanco con “comas”.• Verifique el resultado.• Ejecute: A’• Verifique el resultado
![Page 34: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/34.jpg)
Manejo de Subindices• Subindices será la manera de acceder a un
elemento de una matriz.• Usa los parentesis y el nombre de la
variable.• >>A(1,4)• Verifique el resultado y la relación con A.
![Page 35: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/35.jpg)
El operador :• >>A(1:4,4)• Verifique el resultado.• Ejecute:• >>A(:,4)• Verifique el resultado?• Cual es la función del operador “:”
manejando subindices?
![Page 36: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/36.jpg)
El operador : • Se puede utilizar el operador : para generar
matrices:• >> D = [1:5; 6:10; 11:2:20]• Verifique el resultado anterior.
![Page 37: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/37.jpg)
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.
![Page 38: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/38.jpg)
Tamaño de Matrices• El comando size nos devuelve la dimensión
de la matriz que se usa como parametro.• >> size(A)• >> size(ans)• El ultimo comando muestra que el valor
retornado por size es en si mismo una matriz de 1x2.
![Page 39: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/39.jpg)
Tamaño de Matrices• También 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 también los tipos de dato (arreglo)
de dichas variables.
![Page 40: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/40.jpg)
Matrices Especiales• MATLAB provee algunas funciones propias de
un tamaño deseado.• ones(m,n) da una matriz de mxn llena de unos.• >> P = ones(2,3)• zeros(m,n) da una matriz de mxn llena de
ceros.• Z = zeros(2,3)
![Page 41: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/41.jpg)
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.
![Page 42: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/42.jpg)
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)
![Page 43: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/43.jpg)
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]• >> diag(F)• Verifique la variable ans e identifique “la
diagonal” de F.
![Page 44: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/44.jpg)
Construcción de Matrices• A veces es necesario generar matrices
grandes a partir de otras mas pequeñas (o vectores).
• >> C=[0 1; 3 -2; 4 2]; x=[8;-4;1];• >> G = [C x]• Note que C es una matriz y x es un vector
columna.
![Page 45: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/45.jpg)
Construcción de Matrices• Se pueden construir matrices usando
también 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:• >> spy(K), grid
![Page 46: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/46.jpg)
El operador end• Indica el ultimo elemento.• Ejemplo:
• Verifique el resultado.
![Page 47: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/47.jpg)
MATLABComandos y Funciones Útiles
![Page 48: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/48.jpg)
Expresiones• Expresiones Matemáticas elementales:• >> help elfun• Expresiones Matemáticas especiales:• >>help specfun• Expresiones de Matrices elementales:• >>help elmat
![Page 49: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/49.jpg)
Números Aleatorios• Para generalos usamos las funciones:• rand, randn, randint.• Verifique el uso de:• >> rand(2)• >> randn(2)• >> randint(2,2,[-4 4])
![Page 50: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/50.jpg)
Suma de Elementos• Se utiliza el comando sum.• Genere un matriz para probar los siguientes
comandos:
![Page 51: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/51.jpg)
Manejo de valores• Se manejan complejos automaticos:• >> c=15+sqrt(-1)• Y valores “excepción” correctamente:• >> a=123/0• >> b=0/0• >> Inf-Inf
![Page 52: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/52.jpg)
Residue• La función residue, descompone el cociente
de una fracción en fracciones parciales.• Teniendo un cociente de la forma:
• La función es:• >>[r,p,k] = residue(b,a)
![Page 53: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/53.jpg)
Residue• Entrega los resultados para:
• Descomponga:
![Page 54: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/54.jpg)
Residue• En fracciones parciales:• >> b=[1 1 1 2];• >> a=[1 0 3 0 2];• >> [r,p,k]=residue(b,a)• El resultado será:
![Page 55: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/55.jpg)
Sistema Lineal• Use representación en MATLAB para
resolver un sistema lineal del tipo:
![Page 56: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/56.jpg)
Mostrar y Pedir datos• La función INPUT imprime un mensaje en la
ventana de comandos y devuelve el resultado de una expresión teclada por el usuario.
• INPUT espera hasta que el usuario ingrese un valor numérico o una expresión
![Page 57: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/57.jpg)
Mostrar y Pedir datos• Cualquier expresión válida de MATLAB es
aceptada por INPUT.• >> edad = input(‘Ingrese la edad: ')• En el caso que sea una cadena de texto es
recomendable:• >> nombre = input('¿Cómo te llamas?','s')
![Page 58: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/58.jpg)
Mostrar y Pedir datos• La función DISP imprime un mensaje en la
ventana de comandos, puede ser un mensaje de texto o variables.
• >> disp('El programa ha terminado')• >> A=rand(4,4)• >> disp(A)
![Page 59: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/59.jpg)
MATLABScripts y Funciones
![Page 60: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/60.jpg)
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.
![Page 61: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/61.jpg)
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.
![Page 62: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/62.jpg)
Scripts• El nombre del script no debería interferir con
alguna función o con una variable (error comun).
• Los comentarios en MATLAB se generan con el símbolo %:
• >> %Esto es un comentario
![Page 63: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/63.jpg)
Script de Ejemplo
![Page 64: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/64.jpg)
Funciones• Son “user-defined” a diferencia de las “built-in”,
también escritas en .m.• Las buit-in también son llamadas funciones de
llamada.• Las user-defined son llamadas funciones de
definición.• SIEMPRE reciben parametros para realizar los
calculos.
![Page 65: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/65.jpg)
Funciones• Los comandos dentro de las funciones
operan sobre los parámetros.• Las variables y resultados son de ambito
LOCAL.• Los .m de funciones deben encontrarse en
el directorio actual para poder ser llamadas.
![Page 66: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/66.jpg)
Funciones• 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.
• También se puede agregar funciones de definición a MATLAB.
![Page 67: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/67.jpg)
Funciones • El nombre de la función no DEBERIA
interferir con alguno de una “buit-in”, ni de otra variable (error común).
• El nombre del archivo .m conteniendo a la definición de la función DEBE ser igual al nombre de la función.
![Page 68: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/68.jpg)
Funciones• La primera linea del archivo debe tener el
formato:
• Luego de esta linea se puede documentar la función usando comentarios.
![Page 69: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/69.jpg)
Ejemplo Funciones
• Escriba desde la ventana de comandos:• >> help med_des
![Page 70: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/70.jpg)
Scripts vs. Funciones
![Page 71: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/71.jpg)
MATLABOtros Tipos de Datos
![Page 72: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/72.jpg)
Tipos de Datos
![Page 73: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/73.jpg)
Tipos de Datos
• Nos devuelve el tipo de dato de “x”.• Tambien existen comandos que nos dan
información lógica sobre cada tipo:• isinteger(x), isfloat(x), ischar(x), islogical(x),
iscell(x), isstruct(x).• isempty(x), isnan(x), isinf(x).
![Page 74: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/74.jpg)
Tipos de Datos• El tipo de Dato entero corresponde:
• El tipo de Dato float corresponde:
![Page 75: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/75.jpg)
Conversión de Tipo• Para convertir se usa el nombre del tipo a
generar como si fuera función:• >> a = 522.08• >> int8(a)• >> int16(a)• Verifique el redondeo.
![Page 76: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/76.jpg)
Funciones de Redondeo• round: redondea al entero mas proximo.• floor: redondea a –inf.• ceil: redondea a +inf.• fix: redondea hacia cero.
![Page 77: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/77.jpg)
Funciones de Redondeo• >> x = pi*(-1:3), round(x)• >> fix(x)• >> floor(x)• >> ceil(x)• >> sign(x), rem(x,3)
![Page 78: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/78.jpg)
Caracteres, Cadenas y Texto• MATLAB maneja el tipo Carácter.• Una cadena es un vector de caracteres.• Un Texto es una matriz de caracteres.• >> t1 = 'A'• Asigna el valor de ‘A’ al arreglo de carácter
1x1 t1.
![Page 79: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/79.jpg)
Caracteres, Cadenas y Texto• >> t2 = 'BCDE'• Asigna el valor BCDE al arreglo de
caracteres 1x4 t2.• Las cadenas creadas se pueden tomar
como arreglos regulares y manipularlos.• >> t3 = [t1,t2]
![Page 80: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/80.jpg)
Acceso de Cadenas• El direccionamiento funciona como en
vectores:
![Page 81: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/81.jpg)
Construcción de Cadenas• Asigne:• >> t4 = [t3,' are the first 5 ';...• 'characters in the alphabet.']• Asigna el valor: • 'ABCDE are the first 5 '• 'characters in the alphabet.'
![Page 82: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/82.jpg)
Construcción 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 línea siguiente.
![Page 83: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/83.jpg)
Cadenas y Números• Todo carácter tiene un equivalente en valor
numérico.• str2num convierte una cadena a su
correspondiente representación numérica.• int2str y num2str convierte
respectivamente un entero y un numero real a su correspondiente cadena de caracteres.
![Page 84: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/84.jpg)
Cadenas y Números• Deseamos generar la cadena: ‘El valor de pi
es 3.1416'.• [‘El valor de pi es ',num2str(pi)].• Otro ejemplo:• >> N = 5; h = 1/N;• >> ['The value of N is ',int2str(N),...• ', h = ',num2str(h)]
![Page 85: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/85.jpg)
Manejo de Cadenas• El operador == realiza comparaciones entre
vectores (elemento a elemento)
![Page 86: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/86.jpg)
Manejo de Cadenas
![Page 87: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/87.jpg)
MATLABGráficas
![Page 88: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/88.jpg)
PLOT• La función PLOT realiza gráficos con por lo
menos un parámetro.• 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:
![Page 89: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/89.jpg)
PLOT: Ejemplo 1• >>x = 0:pi/100:2*pi;• >>y = sin(x);• >>plot(x,y)
![Page 90: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/90.jpg)
PLOT: Ejemplo 2• > >x = [1; 2; 3; 4; 5]• > >y = [0; .25; 3; 1.5; 2]• > >plot(x,y)
![Page 91: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/91.jpg)
PLOT y Muestreo• 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.
• Para tomar N+1 puntos igualmente espaciados a una distancia h:
• >> N = 10; h = 1/N; x = 0:h:1;
![Page 92: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/92.jpg)
PLOT y Muestreo• Se define el conjunto: • >> y = sin(3*pi*x);• >> plot(x,y)• Verifique el gráfico e identifique que el
numero N es muy pequeño aun.• Cambie N=100 y verifique el resultado.
![Page 93: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/93.jpg)
PLOT y Muestreo• El “seno” es una función continua.• MATLAB trabaja con datos discretos.• PLOT realiza una interpolación lineal entre
esos datos para graficar.• Mayor cantidad de puntos (muestras) harán
que la gráfica sea practicamente “continua”.
![Page 94: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/94.jpg)
Propiedades de un PLOT• >>xlabel('x = 0:2\pi')• >>ylabel('Seno de x')• >>title('Gráfica de la función
seno','FontSize',12)
![Page 95: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/95.jpg)
PLOTs con Estilo• Plot puede recibir un tercer argumento.• Tercer argumento es una cadena que recibe
como primer carácter el color y segundo el estilo de linea.
![Page 96: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/96.jpg)
PLOTs con Estilo• La cadena recibe hasta 3 caracteres:
![Page 97: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/97.jpg)
Multi-PLOT• >>x = 0:pi/100:2*pi;• >>y = sin(x);• >>plot(x,y)• >>y2 = sin(x-.25);• >>y3 = sin(x-.5);• >>plot(x,y,x,y2,x,y3)• >>legend('seno(x)','seno(x-.25)','seno(x-.5)')
![Page 98: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/98.jpg)
PLOT y el GCA• Cada llamado de la función PLOT es una
petición para crear un nuevo “eje” (axis – ventana donde se contiene el gráfico).
• Cada llamado de PLOT entonces reemplazará la gráfica anterior.
• >>hold on• “Mantiene” el gráfico actual en el eje actual.
![Page 99: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/99.jpg)
PLOT y el HOLD• Se puede llamar muchas veces a PLOT pero
no se reemplazará el gráfico hasta que exista un:
• >>hold off• Comparar con lo aprendido en “Varios
Gráficos en un PLOT”.
![Page 100: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/100.jpg)
AXIS • La función/comando axis ajusta los ejes del
gráfico 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:• >>axis auto
![Page 101: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/101.jpg)
AXIS• Pruebe estos valores para axis e identifique
el efecto:• >>axis square• >>axis equal• >>grid on• >>grid off
![Page 102: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/102.jpg)
Resumen
![Page 103: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/103.jpg)
Practica
![Page 104: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/104.jpg)
SUBPLOT• Divide la ventana de graficos en un arreglo
mxn en donde se pueden plotear mxn gráficos.
• Se enumeran de izquierda a derecha, de arriba hacia abajo.
• subplot(221) (o subplot(2,2,1)) indica que se divide en 2x2 gráficos y selecciona el 1 subgráfico.
![Page 105: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/105.jpg)
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')
![Page 106: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/106.jpg)
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”.
![Page 107: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/107.jpg)
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.
![Page 108: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/108.jpg)
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.
![Page 109: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/109.jpg)
Setear Propiedades a un Plot• Todas las propiedades de cada objeto del
gráfico (figura, ejes, elemento gráfico,...) están guardadas en "handles“
• gcf current figure, gca current axis• get(handle) muestra todos las propiedades
que se pueden cambiar.
![Page 110: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/110.jpg)
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']);
![Page 111: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/111.jpg)
Funciones para Graficar
Funciones para graficar en 2Dbar Gráfica de barrafill Dibujo de polígono en 2D rellenohist Histogramaimage Imagenloglog Gráfica con ambos ejes en escala logarítmicaplot Gráfica simplepolar Gráfica en coordenadas polaressemilogx Gráfica con eje x en escala logarítmicasemilogy Gráfica con eje y en escala logarítmicastairs Gráfica de escalerastem Gráfica de secuencia discreta
![Page 112: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/112.jpg)
Otras Funciones para Graficar• » x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8];• » hist(x)• » figure• » bar(x)• Interprete los resultados.
![Page 113: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/113.jpg)
Otras Maneras de Graficar
![Page 114: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/114.jpg)
Otras Maneras de Graficar
![Page 115: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/115.jpg)
Practica• Ejecute el siguiente código:• >> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y;• >> plot(x,y,':',x,Y,'-' )• Interprete los resultados.
![Page 116: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/116.jpg)
Practica• Grafique en un solo panel:
• Para el rango de [0,10].
![Page 117: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/117.jpg)
Practica
![Page 118: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/118.jpg)
MATLABEstructuras de Control
![Page 119: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/119.jpg)
Estructuras de Control• Se basan en evaluar una expresión si es
verdadera o falsa (1/0).• Estas expresiones son resultados de
operaciones con:• <(menor que), >(mayor que), == (igual a), <=
(menor o igual que), >= (mayor o igual que) y ~= (distinto a).
![Page 120: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/120.jpg)
Selección: IF• 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.
![Page 121: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/121.jpg)
Selección: IF• if expr1• comandos_matlab• elseif expr2• otro_comandos_matlab• ...• else• aun_otros_comandos_matlab• end
![Page 122: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/122.jpg)
Selección: IF• t = rand(1)• if t >0.5• disp(“valor es mayor que 0.5”)• elseif t <0.25• disp(“valor es menor que 0.25”)• else• disp(“valor está entre 0.25 y 0.5”)• end
![Page 123: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/123.jpg)
Repetición: Lazos• El uso de lazos es o debería ser MUY
LIMITADO en MATLAB por el uso del operador :.
• Los lazos son grandes consumidores de tiempo.
• Tareas de optimización regularmente se encargan de evitar los lazos.
![Page 124: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/124.jpg)
Repetición: Lazo For• Se recomienda para: Repetir la ejecución de
comandos por un número definido de veces.• for variable = expresión• comandos_matlab• end
• “expresión” debe definir el número de veces que se ejecutan los comandos, variable controla ese numero de repeticiones.
![Page 125: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/125.jpg)
Repetición: Lazo For• Imprimir el cuadrado de los 5 primeros
numeros naturales:• for i=[1, 2, 3, 4, 5]• disp(i^2)• end• Notar que el for anterior tambien pudo ser
escrito asi: “for i=1:5”
![Page 126: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/126.jpg)
Repetición: Lazo For• 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:
• for i=1:-0.1:0• disp(i^2)• end
![Page 127: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/127.jpg)
Repetición: Lazo For• Uso de Matriz para asignar valores• matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]• for x = matriz• x• end
![Page 128: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/128.jpg)
Repetición: Lazo For• Creación de subplots usando FOR.• >> x = -1:.05:1;• >> for n = 1:8• >> subplot(4,2,n), plot(x,sin(n*pi*x))• >> end
![Page 129: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/129.jpg)
Repetición: Lazo While• Se usa regularmente cuando no se conoce
en primera instancia cuantas repeticiones se deben ejecutar.
• Las repeticiones dependerán de la expresión condicional que se evalúa.
• MIENTRAS se cumpla sigue la repetición.
![Page 130: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/130.jpg)
Repetición: Lazo While• while expresión• comandos_matlab• end
![Page 131: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/131.jpg)
Repetición: Lazo While• Imprimir el valor de x, mientras este sea
positivo, decrementando cada vez x en 17:• x = 100• while x >0• disp(x)• x = x - 17;• end
![Page 132: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/132.jpg)
MATLABComandos y Funciones Útiles II
![Page 133: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/133.jpg)
Construcción de VectoresConstrucció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 10primero, terminando en 10último, teniendo n elementos
![Page 134: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/134.jpg)
Maximo y Minimo• La función max opera sobre un vector
retornando el valor máximo.• >> x = [1.3 -2.4 0 2.3], max(x), max(abs(x))• >> [m, j] = max(x)• Cuando tomamos 2 resultados de max, que
representa el 2do. Resultado?
![Page 135: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/135.jpg)
Maximo y Minimo• La función min opera d emanera similar a
max.• 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).
![Page 136: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/136.jpg)
Busqueda en vectores• El comando find devuelve una lista con las
posiciones de los elementos de un vector que satisfacen una determinada condición.
• >> x = -1:.05:1;• >> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':')• >> k = find(y > 0.2)• Verifique el contenido de k e interpretelo.
![Page 137: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/137.jpg)
Busqueda en Vectores• Representación gráfica de la búsqueda:• >> hold on, plot(x(k),y(k),'o')• >> km = find( x>0.5 & y<0)• >> plot(x(km),y(km),'-')
![Page 138: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/138.jpg)
Busqueda en matrices• Opera de manera muy similar en matrices:• >> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0 1]• >> k = find(A==0)• Verifique e interprete el contenido de k.• Find en una matriz realmente primero
reordena (reshape) la matriz en un vector para buscar.
![Page 139: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/139.jpg)
Busqueda en matrices• A =
-2 3 4 4
0 5 -1 6
6 8 0 1
-2 0 6 3 5 8 4 -1 0 4 6 1
1 2 3 ...
![Page 140: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/140.jpg)
Busqueda en matrices• Los indices del reordenamiento de la matriz
quedan:
• >> n = find(A <= 0)• >> A(n)
![Page 141: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/141.jpg)
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.
![Page 142: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/142.jpg)
Polinomios• Los polinomios se definen en base a un
vector de coeficientes.• MATLAB es una herramienta de cálculo
numerico.
![Page 143: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/143.jpg)
Polinomios: Funciones• Se pueden realizar algunas funciones, como
obtener las raices del polinomio y también evaluar el polinomio para un valor de “x”.
• >> pol=[1 0 -8 6 -10]• >> roots(pol)• >> polyval(pol,1)
![Page 144: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/144.jpg)
Polinomios: Funciones• Para realizar la multiplicación entre
polinomios MATLAB usa el producto de convolución.
• >> pol1=[1 -2 4]• >> pol2=[1 0 3 -4]• >> pol3=conv(pol1,pol2)
![Page 145: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/145.jpg)
Hipermatrices• Matrices de mas de dos dimensiones.• El tercer subindice representa la tercera
dimensión: “La profundidad de la hipermatriz”.
![Page 146: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/146.jpg)
Manejo de Datos: Paginas• 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):
• » x1=[1 2 3; 4 5 6; 7 8 9]• » x2=[10 20 30; 40 50 60; 70 80 90]
![Page 147: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/147.jpg)
Hipermatrices• » x(:,:,1)=x1;• » x(:,:,2)=x2;• La información quedará organizada como se
muestra en la figura:
![Page 148: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/148.jpg)
Hipermatrices• Creación 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, también pueden manejar hipermatrices.
![Page 149: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/149.jpg)
Hipermatrices• >> BB=randn(2,3,2)• Verifique el resultado como MATLAB
muestra el contenido de las hipermatrices pequeñas.
• >> A=zeros(2,3); B=ones(2,3);• Por su naturaleza la concatenación se
realiza a traves de funciones.
![Page 150: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/150.jpg)
Hipermatrices• La función cat concatena arreglos.• Recibe 3 parametros el primero es la
dimensión 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].
![Page 151: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/151.jpg)
Hipermatrices• >> cat(1,A,B)• >> cat(2,A,B)• >> cat(3,A,B)• Verifique como MATLAB arma la matriz
usando cat.
![Page 152: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/152.jpg)
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).
![Page 153: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/153.jpg)
Hipermatrices• 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.
![Page 154: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/154.jpg)
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 (:)).
![Page 155: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/155.jpg)
Hipermatrices: Reshape» reshape(x, 3, 6)
ans =
1 2 3 10 20 30
4 5 6 40 50 60
7 8 9 70 80 90
![Page 156: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/156.jpg)
Manejo de Datos• 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.
• Para guardar archivos con código ASCII. La sintaxis es:
– save <nombre del archivo> <variables> -ascii
• Todas las variables que se graben usando este metodo deben tener la misma dimensión.
![Page 157: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/157.jpg)
Manejo de Datos• Todas las variables que se graben usando
este metodo deben tener la misma dimensión.
![Page 158: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/158.jpg)
Manejo de Datos• Para guardar datos en formato binario:
save <nombre del archivo> <variables>
• Las variables no necesariamente deben tener la misma dimensión.
• 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.
![Page 159: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/159.jpg)
Manejo de Datos• Supongamos un fichero llamado datos.txt
que tiene, por ejemplo, dos columnas de valores que son números reales.
• Para leer los datos del fichero:• [x1,x2] = textread(’datos.txt’,’%f %f’);
![Page 160: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/160.jpg)
Manejo de Datos• Otra opción más:• load ’datos.txt’ -ascii• x1 = datos(:,1);• x2 = datos(:,2);
![Page 161: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/161.jpg)
Manejo de Datos• Creando un archivo llamado flat.txt que
contenga las líneas:• 23.456 56.032 67.802• 3.749 -98.906 34.910• El comando A=load(’flat.txt’) leerá estos
valores y los asignará a la matriz A.
![Page 162: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/162.jpg)
MATLABGráficas 3D
![Page 163: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/163.jpg)
Gráficas en 3 Dimensiones• También se basa en graficar puntos:• >> t=0:pi/50:10*pi; • >> plot3(sin(t),cos(t),t) • Esta gráfica es paramétrica.• Un solo parámetro resulta en una gráfica de
linea. Se extiende la etiqueta zlabel(‘texto’)
![Page 164: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/164.jpg)
Graficas en 3 Dimensiones• Se deben generar los valores a graficar,
estos deben ser una matriz.• Ejemplo:• >> z = peaks(10) • >> plot(z)
![Page 165: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/165.jpg)
Graficas en 3 Dimensiones• >> mesh(z) • >> contour(z,10) • >> surf(z) • Se puede cambiar “la vista” desde la ventana de
comandos:• >> view(0,0) • >> view(90,0)
![Page 166: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/166.jpg)
Superficies• Una superficie también se define
matemáticamente con una función f(x,y).• Para cada valor de (x,y) se calcula “la altura”
de la función: z = f(x,y).• Para plotear esto debemos definir un rango
de “x” y de “y” para el gráfico.
![Page 167: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/167.jpg)
Superficies• Definiendo el dominio:• x = 2:0.5:4; y = 1:0.5:3;• Definido el dominio debemos definir la
“grilla” de valores que servirán de los puntos (x,y) para graficar.
• Esto es como relacionar “x” y “y”.
![Page 168: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/168.jpg)
Superficies• >> [X,Y] = meshgrid(2:.5:4, 1:.5:3);• >> X• 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.
![Page 169: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/169.jpg)
Superficies• Plotee la siguiente función:
• >> [X,Y] = meshgrid(2:.2:4, 1:.2:3);• >> Z = (X-3).^2-(Y-2).^2;• >> mesh(X,Y,Z)• >> title(‘Silla'), xlabel('x'),ylabel('y')
![Page 170: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/170.jpg)
Superficies• Grafique la siguiente superficie:
• Encuentre los valores máximos de la función.
![Page 171: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/171.jpg)
Superficies• >> [X,Y] = meshgrid(-2:.1:2,-2:.2:2);• >> f = -X.*Y.*exp(-2*(X.^2+Y.^2));• >> figure (1)• >> mesh(X,Y,f), xlabel('x'), ylabel('y'), grid• >> figure (2), contour(X,Y,f)• >> xlabel('x'), ylabel('y'), grid, hold on
![Page 172: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/172.jpg)
Superficies• Para encontrar los máximos:• >> fmax = max(max(f))• >> kmax = find(f==fmax)• >> Pos = [X(kmax), Y(kmax)]• >> plot(X(kmax),Y(kmax),'*')• >> text(X(kmax),Y(kmax),' Maximo')
![Page 173: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/173.jpg)
Diferentes Dominiosx=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10;
y=x;
[X,Y]=meshgrid(x,y);
Z=cos(X)+cos(Y);
subplot(3,1,1)
surf(Z);
![Page 174: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/174.jpg)
Diferentes Dominiosaxis([0 11 0 11 0 2])
subplot(3,1,2)
surf(x,y,Z);
subplot(3,1,3)
surf(X,Y,Z);
![Page 175: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/175.jpg)
Otros Graficos 3D
![Page 176: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/176.jpg)
MATLABEstructuras y Celdas
![Page 177: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/177.jpg)
Tipos de Datos
![Page 178: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/178.jpg)
Estructuras• Permiten guardar valores de diferente tipo
de dato bajo un mismo nombre.• Organizan la información, siguen un modelo
de campo-valor.• El acceso a los elementos de cada una de
las claves se hace con “.”
![Page 179: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/179.jpg)
Estructuras • >> punto.x=2• >> punto.y=3• >> punto.color='rojo‘• >> punto
• Se pueden crear tambien vectores de Estructuras:
• >> punto(2).x=4, punto(2).y=5, punto(2).color='verde'
![Page 180: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/180.jpg)
Estructuras• Verifique el direccionamiento:• >> punto(1), punto(2)• Y el direccionamiento de campos:• >> campo = ‘x’• >> punto.(campo)
![Page 181: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/181.jpg)
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 paréntesis ( )
![Page 182: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/182.jpg)
Celdas (Cell Array)• >> b{1}=12;• >> b{2}='Red';• >> b{3}=magic(4);• 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
![Page 183: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/183.jpg)
Celdas (Cell Array)• >> a{1,1} = 12;• >> a{1,2} = 'Red';• >> a{1,3} = magic(4);• >> a{2,1}=ones(3);• >> a{2,2}=43;• >> a{2,3}='texto';
![Page 184: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/184.jpg)
Celdas (Cell Array)• Utilizando ( ) accede a un elemento, que es
tipo cell.• • Utilizando { } accede al valor.• Verifique los tipos con:• class(a)• class(a(1,1))• class(a{1,1})
![Page 185: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/185.jpg)
Conexión a EXCEL: Exportar Datos
• xlswrite(‘Archivo', [12.7 5.02;-98 63.9])• d = {'Tiempo', 'Temp'; 12 98; 13 99; 14 97};• s = xlswrite(‘file.xls', d, 'Temperaturas', 'E1')• Verifique el resultado
![Page 186: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/186.jpg)
Leer Datos• [tipo, hojas] = xlsfinfo(‘file.xls‘)• [ndata, headertext] = xlsread(‘file.xls', ‘Hoja’)• A = xlsread(‘file.xls', 1, 'A4:B5')
![Page 187: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/187.jpg)
Exportar Datos• Cree un script que permita escribir este
archivo:
![Page 188: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/188.jpg)
MATLABGUIDE
![Page 189: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/189.jpg)
GUI• GUI (Graphical User Interface) es util para
presentar un desarrollo final.• Adhiere usabilidad al ajuste de parametros y
visualizacion de un programa• La elaboración de GUI se puede realizar de
dos formas:– Código a través de un script– GUIDE que es la herramienta de diseño de MatLAB.
![Page 190: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/190.jpg)
GUIDE• Para iniciarla ejecute el comando “guide” en
MATLAB• Seleccione un GUI vacio
![Page 191: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/191.jpg)
GUIDE• Obtendra un formulario en blanco al cual
puede agregar CONTROLES.• Se debe antes preparar un diseño de la GUI
![Page 192: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/192.jpg)
Partes de la ventana GUIDE
![Page 193: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/193.jpg)
Estructura Jerárquica de controles
![Page 194: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/194.jpg)
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.
![Page 195: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/195.jpg)
Plotter
![Page 196: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/196.jpg)
Controles Basicos• Axes: un espacio para dibujar.• Static text: texto que se adhiere a la
pantalla y el usuario no puede editarlo• Edit box: una caja blanca que el usuario puede
modificar el contenido
• Button: realiza una accion cuando el usuario da click en el.
![Page 197: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/197.jpg)
El Inspector de Propiedades• Cuando le dan doble click a un control,
muestra una ventana listando todas las propiedades de ese control (fuente, posicion, tamaño, etc.).
• Tag: el nombre del control en el codigo, es mejor renombrarlo por algo identificable.
![Page 198: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/198.jpg)
El Inspector de Propiedades• String: el texto que
aparece en el control.• ForegroundColor:
color del texto.• Background color:
color del control.
![Page 199: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/199.jpg)
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).
![Page 200: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/200.jpg)
Ejecutando• Para agregar funcionalidad a la GUI se debe
definir un callback para el boton para que asi grafique la funcion cuando se presione
![Page 201: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/201.jpg)
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 funciòn
callback para cada uno de los controles.
![Page 202: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/202.jpg)
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 opciòn “View Callback”.
![Page 203: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/203.jpg)
El Callback del botón• % --- Executes on button press in PlotButton.• function PlotButton_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)
![Page 204: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/204.jpg)
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;
![Page 205: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/205.jpg)
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 :
![Page 206: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/206.jpg)
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.
![Page 207: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/207.jpg)
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 función SET.
• En este caso queremos OBTENER el String escrito en el edit box y graficarlo.
![Page 208: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/208.jpg)
Escribiendo Callbacks• function PlotButton_Callback(hObject, eventdata,
handles)• x = -10 : 0.1 : 10;• s = get(handles.functionEdit, 'String');• y = eval(s); %eval just evaluates the given string• handles.axes1; %Subsequent commands draw on
axes1.• plot(x, y);
![Page 209: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/209.jpg)
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.
![Page 210: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/210.jpg)
Otros controles• 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.
• Check box: el usuario puede activar o desactivarlo, similar al Radio Button.
![Page 211: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/211.jpg)
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.
![Page 212: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/212.jpg)
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).
![Page 213: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/213.jpg)
Practica
![Page 214: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/214.jpg)
MATLABDAQ
![Page 215: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/215.jpg)
Toolbox: DAQ• 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.
• Un sistema de adquisición de datos es un conjunto de software y hardware que permiten a un sistema digital conectarse” al mundo real.
![Page 216: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/216.jpg)
Toolbox: DAQ• Un sistema de adquisición de datos típico
está formado de:• Sensores y actuadores
• Hardware de adquisición de datos
• Hardware de acondicionamiento de señal
• Computadora o procesador
• Programa
![Page 217: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/217.jpg)
Esquema de DAQ
![Page 218: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/218.jpg)
Transductores y Hardware• A los sensores y actuadores también se les
conoce como transductores. • Transductor es aquel elemento que
convierte una señal de entrada de cierta naturaleza en una señal de salida de otra naturaleza.
![Page 219: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/219.jpg)
Transductores y Hardware• 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.
![Page 220: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/220.jpg)
Transductores y Hardware• 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).
![Page 221: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/221.jpg)
HW de acondicionamiento de la señal
• 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.
• 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.
![Page 222: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/222.jpg)
HW de Acondicionamiento• 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.
![Page 223: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/223.jpg)
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 adquisición de datos permite intercambiar información entre la computadora y el hardware.
![Page 224: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/224.jpg)
La computadora y el Software• 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.
![Page 225: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/225.jpg)
Toolbox de DAQEl toolbox de adquisición de datos se divide en
tres componentes principales:• Las funciones M establecidas
• El motor de adquisición de datos
• Los manejadores (drivers) de la tarjeta de adquisición de datos (en este caso, la de
sonido)
![Page 226: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/226.jpg)
DAQ y MATLAB
![Page 227: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/227.jpg)
Adaptadores• Fabricante Nombre del
adaptador• National Instruments nidaq• ComputerBoards cbi• Agilent Technologies hpel432• Tarjetas de sonido para Windows winsound
![Page 228: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/228.jpg)
DAQ Básico: IN• 1. Creación el dispositivo de objeto. Crear el
objeto del canal analógico de entrada ‘ai’ para la tarjeta de sonido
– ai=analoginput(‘winsound’)
• 2. Agregar canales. Agregar un canal de hardware
– addchannel(ai,1);
![Page 229: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/229.jpg)
DAQ Básico: 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)
![Page 230: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/230.jpg)
DAQ Básico: IN• 4. Adquirir datos. Iniciar la adquisición.
Cuando terminen de adquirir todos los datos, ‘ai’ automáticamente detiene la ejecución.
– start(ai)
![Page 231: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/231.jpg)
DAQ Basico: IN– data = getdata(ai);– plot(data)
• 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.
– delete(ai)– clear ai
![Page 232: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/232.jpg)
DAQ Basico: OUT• 1. Creación el dispositivo de objeto. Crear el
objeto del canal analógico de salida ‘ao’ para la tarjeta de sonido
– ao=analogoutput(‘winsound’)
• 2. Agregar canales. Agregar un canal de hardware a ‘ao’ addchannel(ao,1);
![Page 233: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/233.jpg)
DAQ Básico: 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)
![Page 234: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/234.jpg)
DAQ Básico: OUT• 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.
– n=0:1:88200;– data = sin(2*pi*n*1000/44100);– putdata(ao,[data’])
![Page 235: Matlab Fiee](https://reader037.fdocuments.net/reader037/viewer/2022102419/55cf9b59550346d033a5b647/html5/thumbnails/235.jpg)
DAQ Básico: OUT• Iniciar la salida. Cuando todos los datos
hayan salido, ‘ao’ automáticamente finaliza la ejecución.
– start(ao)
• Esta línea bloquea la línea de comando de Matlab hasta que se detiene ‘ao’
– while strcmp(ao.Running,'On')
– end