matlab-100228223411-phpapp01

Download matlab-100228223411-phpapp01

If you can't read please download the document

Upload: benjamin-fuller

Post on 24-Dec-2015

57 views

Category:

Documents


1 download

DESCRIPTION

matlab

TRANSCRIPT

  • Introduccin a MATLAB para IngenierosIng. Jos Crdova Garca

  • Capacitacin en MATLABCursos Anteriores:MATLAB.MATLAB Aplicado a la Ingeniera.Nuevo curso:Introduccin a MATLAB para Ingenieros.Cursos especializados.

  • ContenidoIntroduccin.Vectores/Matrices.Funciones.Cadenas de Texto.Graficas 2D.Graficas 3D.GUI y GUIDE.

    Scripts y Funciones.Estructuras de Control.Celdas.Aplicaciones.Excel.Data Acquisition.

  • Presentacin del Curso.Perfil de los participantes:NombreEstudios.Expectativas del cursoConocimientos de:MATLABProgramacin EstructuradaCompetencias a adquirir al finalizar el Curso.

  • Evaluacin del CursoPara obtener el CERTIFICADO DE APROBACION del curso necesita obtener por lo menos el 70% de calificacin.50% Evaluacin Terica a mitad del contenido del curso (opcional).50%/100% Evaluacin del desempeo Grupal (Asistencia) y Proyecto final.Para obtener el CERTIFICADO DE ASISTENCIA al curso usted necesita tener por lo menos el 70% de asistencias del total de horas impartidas del curso.

  • Formato del CursoPracticas Guiadas y Hands-on.10 Sesiones Planificadas de ~ 2 horas y media de duracin.La asistencia se considera solo al completar la practica.Poltica de Examen y Ejemplo.Fecha de Entrega de Certificados.

  • MATLABIntroduccion

  • Que es MATLABLenguaje de Programacin.Alto Rendimiento.Computacin Tcnica.Computacin, Visualizacin y Programacin.Problemas y soluciones en notacin Matemtica (de Matrices).

  • Aplicaciones?Matemticas y Computacin.Desarrollo y Test de algoritmos.Modelado, Simulacin y Prototipos.Anlisis de Datos, exploracin y visualizacin.Grficas de Ingeniera y Cientficas.Desarrollo de Aplicaciones finales (GUI)

  • Aplicaciones?

  • MATLAB?Matrix Laboratory (Laboratorio de Matrices).Elemento bsico: [Matriz] (en adelante Arreglo) que no requiere dimensin.Problemas que involucran matrices y vectores son consumidores de tiempo (C, C++, Fortran, etc.)

  • Entorno de TrabajoAbra MATLAB.Identifique:Ventana de Comandos.Historial de Comandos.Directorio Actual.Espacio de Trabajo.Barra de Mens.

  • MATLAB como CalculadoraDesde la ventana de comandos ingrese:>> 2 + 3/4*5Verifique la respuesta de MATLAB.Verifique el workspace.

  • NmerosPor defecto se usa la notacin decimal convencional.La letra e se usa para definir notacin cientfica (x10).Los nmeros imaginarios se definen usando las letras i y j.

  • NmerosLos nmeros tienen una precisin de 16 dgitos significativos decimales y un rango entre 10-308 y 10+308 .Todas las operaciones en MATLAB se realizan en precisin doble.El formato es la manera en como se muestran los valores

  • FormatoUsando el comando format:

  • VariablesLa variable ANS es bsica en MATLAB.Ejecute:>> 3-2^4Verifique el resultado almacenado en ANS.Ejecute:>> ans*5Verifique el uso de variables y resultado.

  • VariablesLas variables no requieren de una declaracin de tipo o tamao.>>num_estudiantes = 25MATLAB crea el espacio necesario y asocia el tipo adecuado para definir esa variable, si es que no la encuentra en el Workspace.

  • VariablesLas variables tienen un limite de tamao de nombre de 31 caracteres.Deben empezar con una letra SIEMPRE.NO deben contener caracteres especiales, salvo el underscore _

  • Las letras i y ji y j estan reservadas para definir numeros complejos.>>i>>i=20>>iVerifique el comportamiento de i

  • Otras palabras reservadaspi 3.14159265...i unidad imaginariarealmin el nmero ms pequeo, 2-1022realmax el nmero ms grande, 21023Inf infinito

  • Comandos de manejo de Sesinclcclearclear var1, var2exist(nombre)quitwhowhos

  • MATLABVectores

  • Vectores FilaVectores que se ven como filasSe 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.

  • Vectores FilaPuede haber problemas con los espacios.Ejecute:v2 = [3+ 4 5]Verifique el comportamientoEjecute:v3 = [3 +4 5]Verifique el comportamiento

  • Operaciones Vectores FilaDeben tener la misma dimensin para la suma.>> v + v3Pueden multiplicarse por un escalar.>> v4 = 3*vPruebe: >> v + v2

  • Definicin VectoresSe 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.

  • Indice en Vectores FilaSe puede recuperar (ver) el valor de un componente de un vector o cambiarlo haciendo uso de un indice.El indice se define con el nombre de variable del vector y con los parntesis para acceder a la posicin del elemento a cambiar/ver.>> w(2) = -2, w(3)

  • El operador :Ejecute:>>1:10Verifique el resultado.Cual es la funcin del operador :?De manera general a : b : c produce un vector con valor inicial a, valor final c e incrementos de b.

  • 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)

  • Vectores ColumnaVectores que se ven como columna.Se definen usando ;Pruebe:>> c = [ 1; 3; sqrt(5)]>> c2 = [345]

  • TranspuestaSe 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.

  • Producto de VectoresMultiplicacin de Vector Fila x Columna>> u = [ 10, -11, 12], v = [20; -21; -22]>> prod = u*vEs una multiplicacin Matricial!.>> w = [2, 1, 3], z = [7; 6; 5]>> u*wVerifique ambos ejemplos.

  • Norma de un VectorEl siguiente muestra dos maneras de obtener la norma (distancia euclidiana) de un vector:>> [ sqrt(u*u'), norm(u)]

  • El operador .Corresponde al producto Hadamard.Trabaja sobre vectores del mismo tipo (fila o columna).>> u.*v'Tabulemos la funcin para

  • El operador .Se puede usar tambin para la divisin:>> a = 1:5, b = 6:10, a./b>> a./a>> c = -2:2, a./c>> a.*b -24, ans./cVerifique el resultado.

  • MATLABMatrices

  • Ingreso de MatricesIngrese 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: AVerifique el resultado

  • Manejo de SubindicesSubindices 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 relacin con A.

  • El operador :>>A(1:4,4)Verifique el resultado.Ejecute:>>A(:,4)Verifique el resultado?Cual es la funcin del operador : manejando subindices?

  • El operador : Se puede utilizar el operador : para generar matrices:>> D = [1:5; 6:10; 11:2:20]Verifique el resultado anterior.

  • Vectores y MatricesEn MATLAB en general todos son arreglos.Un vector columna ser una matriz de mx1.Un vector fila ser una matriz de 1xn.

  • Tamao de MatricesEl comando size nos devuelve la dimensin 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.

  • Tamao de MatricesTambin se puede guardar las dimensiones de una matriz en variables separadas.>> [r c] = size(A'), S = size(A')Verifique los valores de r y c y de S.Verifique tambin los tipos de dato (arreglo) de dichas variables.

  • Matrices EspecialesMATLAB provee algunas funciones propias de un tamao 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)

  • Matriz IdentidadEs una matriz de ceros pero en su diagonal principal esta llena de unos.>> I = eye(3), x = [8; -4; 1], I*xNote que eye(3) es una matriz cuadrada identidad.Verifique el resultado de I*x.

  • Matriz DiagonalEs 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)

  • Matriz DiagonalPor 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.

  • Construccin de MatricesA veces es necesario generar matrices grandes a partir de otras mas pequeas (o vectores).>> C=[0 1; 3 -2; 4 2]; x=[8;-4;1];>> G = [C x]Note que C es una matriz y x es un vector columna.

  • Construccin de MatricesSe pueden construir matrices usando tambin funciones y operaciones sobre matrices:>> J = [1:4; 5:8; 9:12; 20 0 5 4>> K = [ diag(1:4) J; J' zeros(4,4)]Pruebe el siguiente comando:>> spy(K), grid

  • El operador endIndica el ultimo elemento.Ejemplo:

    Verifique el resultado.

  • MATLABComandos y Funciones tiles

  • ExpresionesExpresiones Matemticas elementales:>> help elfunExpresiones Matemticas especiales:>>help specfunExpresiones de Matrices elementales:>>help elmat

  • Nmeros AleatoriosPara generalos usamos las funciones:rand, randn, randint.Verifique el uso de:>> rand(2)>> randn(2)>> randint(2,2,[-4 4])

  • Suma de ElementosSe utiliza el comando sum.Genere un matriz para probar los siguientes comandos:

  • Manejo de valoresSe manejan complejos automaticos:>> c=15+sqrt(-1)Y valores excepcin correctamente:>> a=123/0>> b=0/0>> Inf-Inf

  • ResidueLa funcin residue, descompone el cociente de una fraccin en fracciones parciales.Teniendo un cociente de la forma:

    La funcin es:>>[r,p,k] = residue(b,a)

  • ResidueEntrega los resultados para:

    Descomponga:

  • ResidueEn fracciones parciales:>> b=[1 1 1 2];>> a=[1 0 3 0 2];>> [r,p,k]=residue(b,a)El resultado ser:

  • Sistema LinealUse representacin en MATLAB para resolver un sistema lineal del tipo:

  • Mostrar y Pedir datosLa funcin INPUT imprime un mensaje en la ventana de comandos y devuelve el resultado de una expresin teclada por el usuario.INPUT espera hasta que el usuario ingrese un valor numrico o una expresin

  • Mostrar y Pedir datosCualquier expresin vlida de MATLAB es aceptada por INPUT.>> edad = input(Ingrese la edad: ')En el caso que sea una cadena de texto es recomendable:>> nombre = input('Cmo te llamas?','s')

  • Mostrar y Pedir datosLa funcin 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)

  • MATLABScripts y Funciones

  • ScriptsSon 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.

  • ScriptsDebe 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.

  • ScriptsEl nombre del script no debera interferir con alguna funcin o con una variable (error comun).Los comentarios en MATLAB se generan con el smbolo %:>> %Esto es un comentario

  • Script de Ejemplo

  • FuncionesSon user-defined a diferencia de las built-in, tambin escritas en .m.Las buit-in tambin son llamadas funciones de llamada.Las user-defined son llamadas funciones de definicin.SIEMPRE reciben parametros para realizar los calculos.

  • FuncionesLos comandos dentro de las funciones operan sobre los parmetros.Las variables y resultados son de ambito LOCAL.Los .m de funciones deben encontrarse en el directorio actual para poder ser llamadas.

  • FuncionesLuego de ser creadas y siempre que estemos en el directorio actual donde esta contenido el .m de la funcin de definicin, entonces la funcin se convertir en de llamada.Tambin se puede agregar funciones de definicin a MATLAB.

  • Funciones El nombre de la funcin no DEBERIA interferir con alguno de una buit-in, ni de otra variable (error comn).El nombre del archivo .m conteniendo a la definicin de la funcin DEBE ser igual al nombre de la funcin.

  • FuncionesLa primera linea del archivo debe tener el formato:

    Luego de esta linea se puede documentar la funcin usando comentarios.

  • Ejemplo Funciones

    Escriba desde la ventana de comandos:>> help med_des

  • Scripts vs. Funciones

  • MATLABOtros Tipos de Datos

  • Tipos de Datos

  • Tipos de Datos

    Nos devuelve el tipo de dato de x.Tambien existen comandos que nos dan informacin lgica sobre cada tipo:isinteger(x), isfloat(x), ischar(x), islogical(x), iscell(x), isstruct(x).isempty(x), isnan(x), isinf(x).

  • Tipos de DatosEl tipo de Dato entero corresponde:

    El tipo de Dato float corresponde:

  • Conversin de TipoPara convertir se usa el nombre del tipo a generar como si fuera funcin:>> a = 522.08>> int8(a)>> int16(a)Verifique el redondeo.

  • Funciones de Redondeoround: redondea al entero mas proximo.floor: redondea a inf.ceil: redondea a +inf.fix: redondea hacia cero.

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

  • Caracteres, Cadenas y TextoMATLAB maneja el tipo Carcter.Una cadena es un vector de caracteres.Un Texto es una matriz de caracteres.>> t1 = 'A'Asigna el valor de A al arreglo de carcter 1x1 t1.

  • 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]

  • Acceso de CadenasEl direccionamiento funciona como en vectores:

  • Construccin de CadenasAsigne:>> t4 = [t3,' are the first 5 ';...'characters in the alphabet.']Asigna el valor: 'ABCDE are the first 5 ''characters in the alphabet.'

  • Construccin de CadenasAl arreglo de 2x27 t4, es NECESARIO que ambas filas del arreglo tengan el mismo numero de caracteres (elementos), eso es una regla general de arreglos en MATLAB.Los significan que el comando continua en la lnea siguiente.

  • Cadenas y NmerosTodo carcter tiene un equivalente en valor numrico.str2num convierte una cadena a su correspondiente representacin numrica.int2str y num2str convierte respectivamente un entero y un numero real a su correspondiente cadena de caracteres.

  • Cadenas y NmerosDeseamos 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)]

  • Manejo de CadenasEl operador == realiza comparaciones entre vectores (elemento a elemento)

  • Manejo de Cadenas

  • MATLABGrficas

  • PLOTLa funcin PLOT realiza grficos con por lo menos un parmetro.En el siguiente ejemplo se crea un vector x con valores entre 0 y 2, se calcula el seno de esos valores y se grafican los resultados:

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

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

  • PLOT y MuestreoPara graficar para el rango [0,1] se muestrea la funcin a un numero suficientemente grande de puntos y luego se los une con lneas rectas.Para tomar N+1 puntos igualmente espaciados a una distancia h:>> N = 10; h = 1/N; x = 0:h:1;

  • PLOT y MuestreoSe define el conjunto: >> y = sin(3*pi*x);>> plot(x,y)Verifique el grfico e identifique que el numero N es muy pequeo aun.Cambie N=100 y verifique el resultado.

  • PLOT y MuestreoEl seno es una funcin continua.MATLAB trabaja con datos discretos.PLOT realiza una interpolacin lineal entre esos datos para graficar.Mayor cantidad de puntos (muestras) harn que la grfica sea practicamente continua.

  • Propiedades de un PLOT>>xlabel('x = 0:2\pi')>>ylabel('Seno de x')>>title('Grfica de la funcin seno','FontSize',12)

  • PLOTs con EstiloPlot puede recibir un tercer argumento.Tercer argumento es una cadena que recibe como primer carcter el color y segundo el estilo de linea.

  • PLOTs con EstiloLa cadena recibe hasta 3 caracteres:

  • 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)')

  • PLOT y el GCACada llamado de la funcin PLOT es una peticin para crear un nuevo eje (axis ventana donde se contiene el grfico).Cada llamado de PLOT entonces reemplazar la grfica anterior.>>hold onMantiene el grfico actual en el eje actual.

  • PLOT y el HOLDSe puede llamar muchas veces a PLOT pero no se reemplazar el grfico hasta que exista un:>>hold offComparar con lo aprendido en Varios Grficos en un PLOT.

  • AXIS La funcin/comando axis ajusta los ejes del grfico actual. Tiene esta sintaxis:>>axis([xmin xmax ymin ymax])Cuando se crea un plot y no se ha definido axis entonces el axis es automatico:>>axis auto

  • AXISPruebe estos valores para axis e identifique el efecto:>>axis square>>axis equal>>grid on>>grid off

  • Resumen

  • Practica

  • SUBPLOTDivide la ventana de graficos en un arreglo mxn en donde se pueden plotear mxn grficos.Se enumeran de izquierda a derecha, de arriba hacia abajo.subplot(221) (o subplot(2,2,1)) indica que se divide en 2x2 grficos y selecciona el 1 subgrfico.

  • 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')

  • Figuras, Ejes y Panelclf, 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.

  • Figuras, Ejes y PanelCuando 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.

  • Figuras, Ejes y PanelEl 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.

  • Setear Propiedades a un PlotTodas las propiedades de cada objeto del grfico (figura, ejes, elemento grfico,...) estn guardadas en "handlesgcf current figure, gca current axisget(handle) muestra todos las propiedades que se pueden cambiar.

  • Setear Propiedades a un Plotset(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']);

  • Funciones para Graficar

    Funciones para graficar en 2DbarGrfica de barrafillDibujo de polgono en 2D rellenohistHistogramaimageImagenloglogGrfica con ambos ejes en escala logartmicaplotGrfica simplepolarGrfica en coordenadas polaressemilogxGrfica con eje x en escala logartmicasemilogyGrfica con eje y en escala logartmicastairsGrfica de escalerastemGrfica de secuencia discreta

  • 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.

  • Otras Maneras de Graficar

  • Otras Maneras de Graficar

  • PracticaEjecute el siguiente cdigo:>> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y;>> plot(x,y,':',x,Y,'-' )Interprete los resultados.

  • PracticaGrafique en un solo panel:

    Para el rango de [0,10].

  • Practica

  • MATLABEstructuras de Control

  • Estructuras de ControlSe basan en evaluar una expresin si es verdadera o falsa (1/0).Estas expresiones son resultados de operaciones con:(mayor que), == (igual a), = (mayor o igual que) y ~= (distinto a).

  • Seleccin: IFEvala una condicin lgica y si dicha expresin evala un resultado POSITIVO (1) entonces selecciona ejecutar un grupo de instrucciones, sino evala otro grupo.

  • Seleccin: IFif expr1comandos_matlabelseif expr2otro_comandos_matlab...elseaun_otros_comandos_matlabend

  • Seleccin: IFt = rand(1)if t >0.5disp(valor es mayor que 0.5)elseif t
  • Repeticin: LazosEl uso de lazos es o debera ser MUY LIMITADO en MATLAB por el uso del operador :.Los lazos son grandes consumidores de tiempo.Tareas de optimizacin regularmente se encargan de evitar los lazos.

  • Repeticin: Lazo ForSe recomienda para: Repetir la ejecucin de comandos por un nmero definido de veces.for variable = expresincomandos_matlabendexpresin debe definir el nmero de veces que se ejecutan los comandos, variable controla ese numero de repeticiones.

  • Repeticin: Lazo ForImprimir el cuadrado de los 5 primeros numeros naturales:for i=[1, 2, 3, 4, 5]disp(i^2)endNotar que el for anterior tambien pudo ser escrito asi: for i=1:5

  • Repeticin: Lazo ForImprimir el cuadrado de los nmeros 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:0disp(i^2)end

  • Repeticin: Lazo ForUso de Matriz para asignar valoresmatriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]for x = matriz xend

  • Repeticin: Lazo ForCreacin de subplots usando FOR.>> x = -1:.05:1;>> for n = 1:8>> subplot(4,2,n), plot(x,sin(n*pi*x))>> end

  • Repeticin: Lazo WhileSe usa regularmente cuando no se conoce en primera instancia cuantas repeticiones se deben ejecutar.Las repeticiones dependern de la expresin condicional que se evala.MIENTRAS se cumpla sigue la repeticin.

  • Repeticin: Lazo Whilewhile expresincomandos_matlabend

  • Repeticin: Lazo WhileImprimir el valor de x, mientras este sea positivo, decrementando cada vez x en 17:x = 100while x >0disp(x)x = x - 17;end

  • MATLABComandos y Funciones tiles II

  • Construccin de Vectores

    Construccin de Vectoresx = [1 3 9 33 0 -2]Se crea vector fila x con los elementos especificadosx = primero:ltimoSe crea vector fila x comenzando con primero, aumentando en intervalos de uno, terminando en o antes de ltimox = primero:incremento:ltimoSe crea vector fila x comenzando con primero, aumentando en intervalos de incremento, terminando en o antes de ltimox = linspace(primero,ltimo,n)Se crea vector fila x comenzando con primero, terminando en ltimo, teniendo n elementosx = logspace(primero,ltimo,n)Se crea vector fila x espaciado logartmicamente comenzando con 10primero, terminando en 10ltimo, teniendo n elementos

  • Maximo y MinimoLa funcin max opera sobre un vector retornando el valor mximo.>> 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?

  • Maximo y MinimoLa funcin min opera d emanera similar a max.En el caso de que A sea una matriz max(A) retorna un vector conteniendo el mximo elemento de cada columna (similar al comportamiento de sum).

  • Busqueda en vectoresEl comando find devuelve una lista con las posiciones de los elementos de un vector que satisfacen una determinada condicin.>> 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.

  • Busqueda en VectoresRepresentacin grfica de la bsqueda:>> hold on, plot(x(k),y(k),'o')>> km = find( x>0.5 & y> plot(x(km),y(km),'-')

  • Busqueda en matricesOpera 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.

  • Busqueda en matricesA =

    -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 ...

  • Busqueda en matricesLos indices del reordenamiento de la matriz quedan:

    >> n = find(A > A(n)

  • Busqueda en matricesn 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.

  • PolinomiosLos polinomios se definen en base a un vector de coeficientes.MATLAB es una herramienta de clculo numerico.

  • Polinomios: FuncionesSe pueden realizar algunas funciones, como obtener las raices del polinomio y tambin evaluar el polinomio para un valor de x.>> pol=[1 0 -8 6 -10]>> roots(pol)>> polyval(pol,1)

  • Polinomios: FuncionesPara realizar la multiplicacin entre polinomios MATLAB usa el producto de convolucin.>> pol1=[1 -2 4]>> pol2=[1 0 3 -4]>> pol3=conv(pol1,pol2)

  • HipermatricesMatrices de mas de dos dimensiones.El tercer subindice representa la tercera dimensin: La profundidad de la hipermatriz.

  • Manejo de Datos: PaginasSe muestra a continuacin cmo organizar las matrices x1 y x2 de 3x3 en dos pginas, o sea en un arreglo x de 3x3x2. (La variable x debe estar inicialmente vaca o no existir): x1=[1 2 3; 4 5 6; 7 8 9] x2=[10 20 30; 40 50 60; 70 80 90]

  • Hipermatrices x(:,:,1)=x1; x(:,:,2)=x2;La informacin quedar organizada como se muestra en la figura:

  • HipermatricesCreacin a partir de otras matrices de dos dimensiones:>> AA(:,:,1)=[1 2 3; 4 5 6]>> AA(:,:,2)=[2 3 4; 5 6 7]Las funciones comunes para uso con matrices, tambin pueden manejar hipermatrices.

  • Hipermatrices>> BB=randn(2,3,2)Verifique el resultado como MATLAB muestra el contenido de las hipermatrices pequeas.>> A=zeros(2,3); B=ones(2,3);Por su naturaleza la concatenacin se realiza a traves de funciones.

  • HipermatricesLa funcin cat concatena arreglos.Recibe 3 parametros el primero es la dimensin a lo largo de la cual concatenar 2 matrices pasadas como parametros. CAT(2,A,B) is the same as [A,B]. CAT(1,A,B) is the same as [A;B].

  • Hipermatrices>> cat(1,A,B)>> cat(2,A,B)>> cat(3,A,B)Verifique como MATLAB arma la matriz usando cat.

  • HipermatricesTienen 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).

  • HipermatricesLas funciones que operan sobre vectores (sum(), max(), etc.) se aplican a matrices e hipermatrices segn la primera dimensin, resultando un array de una dimensin inferior.

  • HipermatricesLas 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 (:)).

  • Hipermatrices: Reshape reshape(x, 3, 6)ans =1 2 3 10 20 304 5 6 40 50 607 8 9 70 80 90

  • Manejo de DatosMatlab permite varias opciones para almacenar las variables con las cuales se trabaja para su posterior utilizacin. En todos los casos el comando es save. Para guardar archivos con cdigo ASCII. La sintaxis es: save -asciiTodas las variables que se graben usando este metodo deben tener la misma dimensin.

  • Manejo de DatosTodas las variables que se graben usando este metodo deben tener la misma dimensin.

  • Manejo de DatosPara guardar datos en formato binario:

    save Las variables no necesariamente deben tener la misma dimensin.Se pueden generar archivos de datos para leer desde MATLAB usando un editor de texto como el Notepad, mantener la extensin .dat para identificar que es un archivo de datos.

  • Manejo de DatosSupongamos un fichero llamado datos.txt que tiene, por ejemplo, dos columnas de valores que son nmeros reales.Para leer los datos del fichero:[x1,x2] = textread(datos.txt,%f %f);

  • Manejo de DatosOtra opcin ms:load datos.txt -asciix1 = datos(:,1);x2 = datos(:,2);

  • Manejo de DatosCreando un archivo llamado flat.txt que contenga las lneas:23.456 56.032 67.8023.749 -98.906 34.910El comando A=load(flat.txt) leer estos valores y los asignar a la matriz A.

  • MATLABGrficas 3D

  • Grficas en 3 DimensionesTambin se basa en graficar puntos:>> t=0:pi/50:10*pi; >> plot3(sin(t),cos(t),t) Esta grfica es paramtrica.Un solo parmetro resulta en una grfica de linea. Se extiende la etiqueta zlabel(texto)

  • Graficas en 3 DimensionesSe deben generar los valores a graficar, estos deben ser una matriz.Ejemplo:>> z = peaks(10) >> plot(z)

  • 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)

  • SuperficiesUna superficie tambin se define matemticamente con una funcin f(x,y).Para cada valor de (x,y) se calcula la altura de la funcin: z = f(x,y).Para plotear esto debemos definir un rango de x y de y para el grfico.

  • SuperficiesDefiniendo el dominio:x = 2:0.5:4; y = 1:0.5:3;Definido el dominio debemos definir la grilla de valores que servirn de los puntos (x,y) para graficar.Esto es como relacionar x y y.

  • Superficies>> [X,Y] = meshgrid(2:.5:4, 1:.5:3);>> XSi tomamos el i-esimo punto desde la izquierda y el j-esimo punto desde debajo de la grilla como el correspondiente (i,j) entrada en una matriz, entonces (X(i,j),Y(i,j)) seran las coordenadas de ese punto.

  • SuperficiesPlotee la siguiente funcin:

    >> [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')

  • SuperficiesGrafique la siguiente superficie:

    Encuentre los valores mximos de la funcin.

  • 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

  • SuperficiesPara encontrar los mximos:>> fmax = max(max(f))>> kmax = find(f==fmax)>> Pos = [X(kmax), Y(kmax)]>> plot(X(kmax),Y(kmax),'*')>> text(X(kmax),Y(kmax),' Maximo')

  • 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);

  • Diferentes Dominiosaxis([0 11 0 11 0 2])subplot(3,1,2)surf(x,y,Z);subplot(3,1,3)surf(X,Y,Z);

  • Otros Graficos 3D

  • MATLABEstructuras y Celdas

  • Tipos de Datos

  • EstructurasPermiten guardar valores de diferente tipo de dato bajo un mismo nombre.Organizan la informacin, siguen un modelo de campo-valor.El acceso a los elementos de cada una de las claves se hace con .

  • Estructuras >> punto.x=2>> punto.y=3>> punto.color='rojo>> puntoSe pueden crear tambien vectores de Estructuras:>> punto(2).x=4, punto(2).y=5, punto(2).color='verde'

  • EstructurasVerifique el direccionamiento:>> punto(1), punto(2)Y el direccionamiento de campos:>> campo = x>> punto.(campo)

  • 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 workspaceSe utilizan llaves { } en lugar de corchetes [ ] o parntesis ( )

  • 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

  • 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';

  • 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})

  • Conexin a EXCEL: Exportar Datosxlswrite(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

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

  • Exportar DatosCree un script que permita escribir este archivo:

  • MATLABGUIDE

  • GUIGUI (Graphical User Interface) es util para presentar un desarrollo final.Adhiere usabilidad al ajuste de parametros y visualizacion de un programaLa elaboracin de GUI se puede realizar de dos formas:Cdigo a travs de un scriptGUIDE que es la herramienta de diseo de MatLAB.

  • GUIDEPara iniciarla ejecute el comando guide en MATLABSeleccione un GUI vacio

  • GUIDEObtendra un formulario en blanco al cual puede agregar CONTROLES.Se debe antes preparar un diseo de la GUI

  • Partes de la ventana GUIDE

  • Estructura Jerrquica de controles

  • Ejemplo: PLOTTERSe 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.

  • Plotter

  • Controles BasicosAxes: un espacio para dibujar.Static text: texto que se adhiere a la pantalla y el usuario no puede editarloEdit box: una caja blanca que el usuario puede modificar el contenidoButton: realiza una accion cuando el usuario da click en el.

  • El Inspector de PropiedadesCuando le dan doble click a un control, muestra una ventana listando todas las propiedades de ese control (fuente, posicion, tamao, etc.).Tag: el nombre del control en el codigo, es mejor renombrarlo por algo identificable.

  • El Inspector de PropiedadesString: el texto que aparece en el control.ForegroundColor: color del texto.Background color: color del control.

  • EjecutandoSi 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).

  • EjecutandoPara agregar funcionalidad a la GUI se debe definir un callback para el boton para que asi grafique la funcion cuando se presione

  • Escribiendo CallbacksCuando se corra el programa, se crean 2 archivos:.fig: contiene el esquema grafico de los controles..m: contiene el codigo que define la funcin callback para cada uno de los controles.

  • Escribiendo CallbacksGeneralmente no se edita el codigo de inicializacion del .m.Probablemente muchos callbacks de controles se quedaran en blanco.Se puede seleccionar el control y dar click derecho para editar el Callback con la opcin View Callback.

  • El Callback del botn% --- 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)

  • El Callback del botonSe pueden borrar los comentarios.Cada funcion tiene el parametro handles. Dicho parametro contiene todos los controles: handles.PlotButton, handles.edit1, etcSe pueden agregar variables a handles para hacerlas disponbiles en todos los controles/funciones: handles.x=42;

  • HandlesCada 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 :

  • Handlesgcf (get current figure) devuelve un entero, que es el handle de la ventana activagca (get current axes) devuelve el handle de los ejes activosgco (get current object) devuelve el handle del objeto activodelete(handle) borra el objeto correspondiente y todos sus objetos que dependen de l.

  • Escribiendo CallbacksSe puede obtener cualquier propiedad de un control con la funcion GET. De manera similar, se puede cambiar el valor de cualquier propiedad con la funcin SET.En este caso queremos OBTENER el String escrito en el edit box y graficarlo.

  • Escribiendo Callbacksfunction PlotButton_Callback(hObject, eventdata, handles)x = -10 : 0.1 : 10;s = get(handles.functionEdit, 'String');y = eval(s); %eval just evaluates the given stringhandles.axes1; %Subsequent commands draw on axes1.plot(x, y);

  • Corriendo el programaCuando 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.

  • Otros controlesSlider bar: el usuario puede moverse adelante y hacia atrs. La posicion actual es dada por Value, el cual esta entre un Min y un Max. El callback se activa en cualquier momento que el slider es movido.Check box: el usuario puede activar o desactivarlo, similar al Radio Button.

  • Otros controlesPop-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.

  • 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).

  • Practica

  • MATLABDAQ

  • Toolbox: DAQEl toolbox de Adquisicin de Datos (DAQ) le permite al usuario capturar y/o generar seales reales e interactuar con ellas desde Matlab. Un sistema de adquisicin de datos es un conjunto de software y hardware que permiten a un sistema digital conectarse al mundo real.

  • Toolbox: DAQUn sistema de adquisicin de datos tpico est formado de:

    Sensores y actuadores Hardware de adquisicin de datos Hardware de acondicionamiento de seal Computadora o procesador Programa

  • Esquema de DAQ

  • Transductores y HardwareA los sensores y actuadores tambin se les conoce como transductores. Transductor es aquel elemento que convierte una seal de entrada de cierta naturaleza en una seal de salida de otra naturaleza.

  • Transductores y HardwarePor ejemplo, un micrfono es un sensor que convierte energa sonora (en forma de presin) en energa elctrica, mientras que una bocina es un actuador que convierte una seal elctrica en una seal sonora.

  • Transductores y HardwareEl Hardware es el corazn de cualquier sistema de adquisicin de datos. Su funcin es convertir seales analgicas provenientes del mundo real a seales digitales (convertidores analgico a digital, ADC) y/o convertir seales digitales a analgicas (convertidores digital a analgico, DAC).

  • HW de acondicionamiento de la sealGeneralmente las seales de los sensores son incompatibles con el hardware de adquisicin de datos; para lograr la compatibilidad se requiere acondicionar la seal. Por ejemplo, si la seal es muy pequea, es necesario amplificarla; por el contrario, si la seal es muy grande se requiere atenuarla.

  • HW de AcondicionamientoTambin es muy comn eliminar componentes de frecuencias indeseables que se encuentran presentes en la seal a procesar. En el caso de las seales de salida, generalmente estas son de baja corriente y mediante hardware se les amplifica y aumenta la corriente.

  • La computadora y el SoftwareLa computadora proporciona un procesador, un reloj, un bus para transferir datos y espacio de memoria o disco para almacenar datos.El software de adquisicin de datos permite intercambiar informacin entre la computadora y el hardware.

  • La computadora y el SoftwarePor ejemplo, los programas tpicos permiten configurar la tasa de muestreo de una tarjeta de adquisicin de datos y adquirir un nmero predefinido de muestras.

  • Toolbox de DAQEl toolbox de adquisicin de datos se divide en tres componentes principales: Las funciones M establecidas El motor de adquisicin de datos Los manejadores (drivers) de la tarjeta de adquisicin de datos (en este caso, la desonido)

  • DAQ y MATLAB

  • AdaptadoresFabricante Nombre del adaptadorNational Instruments nidaqComputerBoards cbiAgilent Technologies hpel432Tarjetas de sonido para Windows winsound

  • DAQ Bsico: IN1. Creacin el dispositivo de objeto. Crear el objeto del canal analgico de entrada ai para la tarjeta de sonidoai=analoginput(winsound)2. Agregar canales. Agregar un canal de hardwareaddchannel(ai,1);

  • DAQ Bsico: IN3. 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)

  • DAQ Bsico: IN4. Adquirir datos. Iniciar la adquisicin. Cuando terminen de adquirir todos los datos, ai automticamente detiene la ejecucin.start(ai)

  • DAQ Basico: INdata = 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

  • DAQ Basico: OUT1. Creacin el dispositivo de objeto. Crear el objeto del canal analgico de salida ao para la tarjeta de sonidoao=analogoutput(winsound)2. Agregar canales. Agregar un canal de hardware a ao addchannel(ao,1);

  • DAQ Bsico: OUT3. 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)

  • DAQ Bsico: OUT4. Sacar datos. Iniciar la adquisicin. Crear un segundo de datos de salida y almacenarlos para una eventual salida por el subsistema de salida analgico. Debe almacenarse una columna de datos para cada canal aadido.n=0:1:88200;data = sin(2*pi*n*1000/44100);putdata(ao,[data])

  • DAQ Bsico: OUTIniciar la salida. Cuando todos los datos hayan salido, ao automticamente finaliza la ejecucin.start(ao)Esta lnea bloquea la lnea de comando de Matlab hasta que se detiene aowhile strcmp(ao.Running,'On')end