Matlab Fiee

235

Click here to load reader

Transcript of Matlab Fiee

Page 1: Matlab Fiee

Fundamentos Básicosde Matlab

Page 2: Matlab Fiee

Contenido• Introducción.• Vectores/Matrices.• Graficas 2D.• Graficas 3D.

• Scripts y Funciones.• Matemática

simbolica• Aplicaciones.• Simulink

Page 3: Matlab Fiee

MATLABIntroduccion

Page 4: Matlab Fiee

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

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

Aplicaciones?

Page 7: Matlab Fiee

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

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

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

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

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

Formato• Usando el comando format:

Page 13: Matlab Fiee

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

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

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

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

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

Comandos de manejo de Sesión• clc• clear• clear var1, var2• exist(‘nombre’)• quit• who• whos

Page 19: Matlab Fiee

MATLABVectores

Page 20: Matlab Fiee

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

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

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

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

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

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

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

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

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

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

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

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

MATLABMatrices

Page 33: Matlab Fiee

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

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

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

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

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

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

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

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

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

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

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

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

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

El operador end• Indica el ultimo elemento.• Ejemplo:

• Verifique el resultado.

Page 47: Matlab Fiee

MATLABComandos y Funciones Útiles

Page 48: Matlab Fiee

Expresiones• Expresiones Matemáticas elementales:• >> help elfun• Expresiones Matemáticas especiales:• >>help specfun• Expresiones de Matrices elementales:• >>help elmat

Page 49: Matlab Fiee

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

Suma de Elementos• Se utiliza el comando sum.• Genere un matriz para probar los siguientes

comandos:

Page 51: Matlab Fiee

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

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

Residue• Entrega los resultados para:

• Descomponga:

Page 54: Matlab Fiee

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

Sistema Lineal• Use representación en MATLAB para

resolver un sistema lineal del tipo:

Page 56: Matlab Fiee

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

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

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

MATLABScripts y Funciones

Page 60: Matlab Fiee

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

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

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

Script de Ejemplo

Page 64: Matlab Fiee

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

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

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

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

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

Ejemplo Funciones

• Escriba desde la ventana de comandos:• >> help med_des

Page 70: Matlab Fiee

Scripts vs. Funciones

Page 71: Matlab Fiee

MATLABOtros Tipos de Datos

Page 72: Matlab Fiee

Tipos de Datos

Page 73: Matlab Fiee

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

Tipos de Datos• El tipo de Dato entero corresponde:

• El tipo de Dato float corresponde:

Page 75: Matlab Fiee

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

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

Funciones de Redondeo• >> x = pi*(-1:3), round(x)• >> fix(x)• >> floor(x)• >> ceil(x)• >> sign(x), rem(x,3)

Page 78: Matlab Fiee

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

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

Acceso de Cadenas• El direccionamiento funciona como en

vectores:

Page 81: Matlab Fiee

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

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

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

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

Manejo de Cadenas• El operador == realiza comparaciones entre

vectores (elemento a elemento)

Page 86: Matlab Fiee

Manejo de Cadenas

Page 87: Matlab Fiee

MATLABGráficas

Page 88: Matlab Fiee

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

PLOT: Ejemplo 1• >>x = 0:pi/100:2*pi;• >>y = sin(x);• >>plot(x,y)

Page 90: Matlab Fiee

PLOT: Ejemplo 2• > >x = [1; 2; 3; 4; 5]• > >y = [0; .25; 3; 1.5; 2]• > >plot(x,y)

Page 91: Matlab Fiee

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

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

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

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

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

PLOTs con Estilo• La cadena recibe hasta 3 caracteres:

Page 97: Matlab Fiee

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

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

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

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

AXIS• Pruebe estos valores para axis e identifique

el efecto:• >>axis square• >>axis equal• >>grid on• >>grid off

Page 102: Matlab Fiee

Resumen

Page 103: Matlab Fiee

Practica

Page 104: Matlab Fiee

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

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

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

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

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

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

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

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

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

Otras Maneras de Graficar

Page 114: Matlab Fiee

Otras Maneras de Graficar

Page 115: Matlab Fiee

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

Practica• Grafique en un solo panel:

• Para el rango de [0,10].

Page 117: Matlab Fiee

Practica

Page 118: Matlab Fiee

MATLABEstructuras de Control

Page 119: Matlab Fiee

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

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

Selección: IF• if expr1• comandos_matlab• elseif expr2• otro_comandos_matlab• ...• else• aun_otros_comandos_matlab• end

Page 122: Matlab Fiee

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

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

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

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

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

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

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

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

Repetición: Lazo While• while expresión• comandos_matlab• end

Page 131: Matlab Fiee

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

MATLABComandos y Funciones Útiles II

Page 133: Matlab Fiee

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

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

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

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

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

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

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

Busqueda en matrices• Los indices del reordenamiento de la matriz

quedan:

• >> n = find(A <= 0)• >> A(n)

Page 141: Matlab Fiee

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

Polinomios• Los polinomios se definen en base a un

vector de coeficientes.• MATLAB es una herramienta de cálculo

numerico.

Page 143: Matlab Fiee

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

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

Hipermatrices• Matrices de mas de dos dimensiones.• El tercer subindice representa la tercera

dimensión: “La profundidad de la hipermatriz”.

Page 146: Matlab Fiee

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

Hipermatrices• » x(:,:,1)=x1;• » x(:,:,2)=x2;• La información quedará organizada como se

muestra en la figura:

Page 148: Matlab Fiee

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

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

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

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

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

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

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

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

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

Manejo de Datos• Todas las variables que se graben usando

este metodo deben tener la misma dimensión.

Page 158: Matlab Fiee

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

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

Manejo de Datos• Otra opción más:• load ’datos.txt’ -ascii• x1 = datos(:,1);• x2 = datos(:,2);

Page 161: Matlab Fiee

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

MATLABGráficas 3D

Page 163: Matlab Fiee

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

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

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

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

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

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

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

Superficies• Grafique la siguiente superficie:

• Encuentre los valores máximos de la función.

Page 171: Matlab Fiee

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

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

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

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

Otros Graficos 3D

Page 176: Matlab Fiee

MATLABEstructuras y Celdas

Page 177: Matlab Fiee

Tipos de Datos

Page 178: Matlab Fiee

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

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

Estructuras• Verifique el direccionamiento:• >> punto(1), punto(2)• Y el direccionamiento de campos:• >> campo = ‘x’• >> punto.(campo)

Page 181: Matlab Fiee

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

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

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

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

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

Leer Datos• [tipo, hojas] = xlsfinfo(‘file.xls‘)• [ndata, headertext] = xlsread(‘file.xls', ‘Hoja’)• A = xlsread(‘file.xls', 1, 'A4:B5')

Page 187: Matlab Fiee

Exportar Datos• Cree un script que permita escribir este

archivo:

Page 188: Matlab Fiee

MATLABGUIDE

Page 189: Matlab Fiee

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

GUIDE• Para iniciarla ejecute el comando “guide” en

MATLAB• Seleccione un GUI vacio

Page 191: Matlab Fiee

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

Partes de la ventana GUIDE

Page 193: Matlab Fiee

Estructura Jerárquica de controles

Page 194: Matlab Fiee

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

Plotter

Page 196: Matlab Fiee

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Practica

Page 214: Matlab Fiee

MATLABDAQ

Page 215: Matlab Fiee

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

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

Esquema de DAQ

Page 218: Matlab Fiee

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

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

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

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

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

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

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

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

DAQ y MATLAB

Page 227: Matlab Fiee

Adaptadores• Fabricante Nombre del

adaptador• National Instruments nidaq• ComputerBoards cbi• Agilent Technologies hpel432• Tarjetas de sonido para Windows winsound

Page 228: Matlab Fiee

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

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

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

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

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

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

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

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