+ All Categories
Home > Documents > matlab curso

matlab curso

Date post: 08-Nov-2014
Category:
Upload: rene-trujillo
View: 61 times
Download: 1 times
Share this document with a friend
108
Curso de Programaci ´ on en Matlab y Simulink Alberto Herreros ([email protected]) Enrique Baeyens ([email protected]) Departamento de Ingenier´ ıa de Sistemas y Autom´ atica (DISA) Escuela de Ingenier´ ıas Industriales (EII) Universidad de Valladolid (UVa) Curso 2010/2011 A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programaci´on en Matlab y Simulink Curso 2010/2011 1/215 Contenidos 1 Introducci´on 2 Programaci´ on con Matlab 3 Optimizaci´ on del c´ odigo de programaci´on 4 Gr´ aficas en dos y tres dimensiones 5 Programaci´ on orientada a objetos 6 Simulaci´ on en Matlab y Simulink 7 GUIDE: Interface gr´ afico de matlab 8 Funciones para tratamiento de datos 9 Funciones para ´ algebra de matrices 10 Filtros y an´ alisis en frecuencia 11 Funciones para polinomios e interpolaci´ on de datos 12 Funciones de funciones: Optimizaci´ on e integraci´ on 13 Bibliograf´ ıa A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programaci´on en Matlab y Simulink Curso 2010/2011 2/215
Transcript

Curso de Programacion en Matlab y SimulinkAlberto Herreros ([email protected])Enrique Baeyens ([email protected])Departamento de Ingeniera de Sistemas y Automatica (DISA)Escuela de Ingenieras Industriales (EII)Universidad de Valladolid (UVa)Curso 2010/2011A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 1/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 2/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 3/215Que es MATLAB?Es un lenguaje de alto nivel para computaci on e ingeniera. Integracomputaci on, visualizaci on y programaci on.Aplicaciones tpicas de MATLAB son:Matematicas y computacionDesarrollo de algoritmosModelado, simulaci on y prototipadoAnalisis de datos, exploraci on y visualizaci onGracos cientcos y de ingeniera.Desarrollo de aplicacionesMatlab es un sistema interactivo cuyo elemento basico son las matrices yno requiere dimensionamiento.El nombre proviene de laboratorio de matrices.Originalmente fue escrito en FORTRAN y haca uso de las librerasLINPACK y EISPACKLas ultimas versiones estan desarrolladas en C y utilizan las librerasLAPACK y BLAS.Sobre la base de MATLAB se han construido conjuntos de funcionesespeccas para diferentes problemas, denominadas toolboxes.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 4/215Formas de introducir matrices en MATLABLista explcita de elementos.Desde un chero de datos externo.Utilizando funciones propias.Creando un chero .mComenzaremos introduciendo manualmente la matriz de D urer.Para ello utilizamos las siguientes reglas:Separar elementos de una la con espacios o comas.Usar punto y coma; para indicar nal de la.Incluir la lista completa de elementos dentro de corchetes, [ ].A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 5/215Trabajando con matricesPara introducir la matriz de D urer hacemos:A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]Como resultado se obtieneA =16 3 2 135 10 11 89 6 7 124 15 14 1Una vez introducida una matriz, queda guardada en el entorno detrabajo de MATLAB.La matriz A es un cuadrado magico: Todas sus las, columnas ydiagonales suman lo mismo. Para comprobarlo hacemossum(A)ans =34 34 34 34El comando sum(A) calcula la suma de las columnas de la matrizA, obteniendose un vector de dimension el n umero de columnas.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 6/215Trabajando con matricesPara calcular la suma de las las, podemos calcular la transpuestade la matriz.Aobteniendoans =16 5 9 43 10 6 152 11 7 1413 8 12 1la suma de las las, en formato vector columna essum(A ) ans =34343434A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 7/215Trabajando con matricesLa funcion diag permite obtener un vector con los elementos de ladiagonal principal.di ag (A)Se obtieneans =161071y la suma de los elementos de la diagonal principal essum( di ag (A) )obteniendoseans =34A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 8/215Trabajando con matricesLa antidiagonal de una matriz no suele ser muy importante, por loque no hay ninguna funcion para extraerla. No obstante, puedeinvertirse la disposicion de las columnas de la matriz con la funcionfliplr, as la suma de la antidiagonal essum( di ag ( f l i p l r (A) ) )ans =34Otra forma de obtener la suma de los elemento de la antidiagonales sumando elemento a elemento.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 9/215Trabajando con matricesUn elemento de la matriz A se referencia como A(i,j), siendo i lala y j la columna. La suma de la antidiagonal podra haberseobtenido tambien como sigue:A( 1 , 4)+A( 2 , 3)+A( 3 , 2)+A( 4 , 1)ans =34Tambien es posible acceder a cada elemento de una matriz con unsolo ndice, as A(k) corresponde al elemento k de un vectorcticio que se formara colocando las columnas de la matrix A unadebajo de otra: Comprobar que A(4,2) y A(8) corresponden almismo elemento de la matriz A.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 10/215Trabajando con matricesSi se intenta acceder a un elemento que excede las dimensiones dela matriz, se obtiene un errort = A( 4 , 5)I ndex exceeds mat r i x di me ns i ons .Si se inicializa un elemento que excede las dimensiones de lamatriz, la matriz se acomoda en dimension al nuevo elemento, conel resto de nuevos elementos inicializados a cero.X = A;X( 4 , 5) = 17X =16 3 2 13 05 10 11 8 09 6 7 12 04 15 14 1 17A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 11/215El operador :El operador : es uno de los mas importantes de MATLAB. Tienediferentes utilidades. La expresion1: 10indica un vector que contiene los n umeros enteros desde 1 hasta10.1 2 3 4 5 6 7 8 9 10Para obtener un espaciado no unitario, se utiliza un incremento.100: 7: 50es100 93 86 79 72 65 58 51y0: pi /4: pies0 0. 7854 1. 5708 2. 3562 3. 1416A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 12/215El operador :Cuando el operador : aparece en los subndices de una matriz sereere a las las o columnas y permite extraer submatrices. Porejemplo, A(1:k,j) es el vector formado por los primeros kelementos de la columna j de la matriz A ysum(A( 1 : 4 , 4 ) )calcula la suma de todos los elementos de la cuarta columna. Otraforma mas compacta y elegante de hacer lo mismo essum(A( : , end ) )los dos puntos : (sin otros n umeros) signican todas las las y endse reer a la ultima columna.Pregunta: Que esta calculando la siguiente expresion?sum(A( end , : ) )A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 13/215La funcion magicMatlab dispone de una funcion magic que permite calcularcuadrados magicosHaciendoB = magi c ( 4)B =16 2 3 135 11 10 89 7 6 124 14 15 1La matriz obtenida es casi la misma que la matriz de D urer, solo sediferencia en que las columnas 2 y 3 estan intercambiadas. Se pudeobtener de nuevo la matriz de D urer haciendo la siguienteoperacionA = B( : , [ 1 3 2 4 ] )A =16 3 2 135 10 11 89 6 7 124 15 14 1A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 14/215ExpresionesAl igual que muchos otros lenguajes de programacion, MATLABdispone de expresiones matematicas, pero al contrario que en lamayora de los lenguajes de programacion, estas expresiones hacenreferencia a matrices.Los bloques constructivos de las expresiones sonVariablesN umerosOperadoresFuncionesA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 15/215VariablesMATLAB no requiere ning un tipo de declaraci on o indicaci on de ladimensi on. Cuando MATLAB encuentra un nuevo nombre de variable lacrea automaticamente y reserva la cantidad de memoria necesaria. Si lavariable ya existe, MATLAB cambia su contenido y si es necesariomodica la reserva de memoria.Por ejemplo, la expresi onnum est = 15crea una matriz 1 por 1 llamada num_est y almacena el valor 25 en su unico elemento.Los nombres de variables deben comenzar siempre por una letra y puedenincluir otras letras, n umeros y el smbolo de subrayado, hasta un total de31 caracteres.Se distingue entre may usculas y min usculas. A y a no son la mismavariable.Para ver el contenido de una variable, simplemente escribir el nombre dela variable.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 16/215NumerosMATLAB utiliza notaci on decimal convencional, con punto decimalopcional y signo + o -Es posible utilizar notaci on cientca. La letra e especica un factor deescala de potencia de 10.Los n umeros imaginarios puros se especican con la letra i o jLos siguientes ejemplos son todos n umeros validos en MATLAB3 99 0. 00019. 6397238 1. 60210 e20 6. 02252 e231 i 3.14159 j 3 e 5 iInternamente, los n umeros se almacenan en formato largo utilizando lanorma IEEE de punto otante. La precisi on es aproximadamente de 16cifras decimales signicativas y el rango esta entre 10308y 10+308.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 17/215OperadoresLas expresiones de MATLAB utilizan los operadores aritmeticosusuales, as como sus reglas de precedencia+ Suma- Resta* Producto/ Division\ Division por la izquierda(se explicara)^ Potencia Transposicion y conjugacion compleja( ) Orden de evaluacionA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 18/215FuncionesMATLAB proporciona un gran n umero de funciones matematicaselementales, por ejemplo, abs, sqrt, exp, sin, cos, etc.Por defecto, MATLAB utiliza n umeros complejos:La raz cuadrada o el logaritmo de un n umero negativo no producen error,sino que dan como resultado u n umero complejo.Los argumentos de las funciones pueden ser n umeros complejosMATLAB proporciona tambien funciones avanzadas: Funciones de Besselo funciones gamma.Una lista de todas las funciones elementales puede obtenerse con elcomandohe l p e l f u nFunciones mas avanzadas y funciones de matrices se obtienen conhe l p s pe c f unhe l p el matA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 19/215FuncionesAlgunas funciones estan compiladas con el n ucleo de MATLAB y son muyrapidas y ecientes. Ej. sqrt, sinOtras funciones estan programadas en lenguaje de MATLAB (cherosm). Pueden verse y modicarseAlgunas funciones proporcionan el valor de ciertas constantes utiles.pi 3.14159265i1j1eps Precisi on relativa de punto otante 252realmin N umero en punto otante mas peque no 21022realmax N umero en punto otante mas grande (2 )2+1023Inf InnitoNaN Not-a-Number (no es un n umero)Innito se obtiene al dividir un n umero no nulo por cero, o comoresultado de evaluar expresiones matematicas bien denidas.NaN se obtiene al tratar de evaluar expresiones como 0/0 o Inf-Inf que notienen valores bien denidosLos nombres de las funciones no estan reservados. Puede denirse unavariable eps=1e-6 y utilizarla. Para restaurar su valor originalc l e a r epsA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 20/215ExpresionesYa se han visto varios ejemplos de expresiones. Algunos otrosejemplos son los siguientes:r ho = (1+s q r t ( 5) ) /2r ho =1. 6180a = abs (3+4 i )a =5z = s q r t ( b e s s e l k ( 4/3 , rhoi ) )z =0.3730+ 0. 3214 ihuge = exp ( l og ( r eal max ) )huge =1. 7977 e+308t oobi g = pi huget oobi g =I n fA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 21/215Funciones para crear matricesMATLAB proporciona cuatro funciones para generar matriceszeros Matriz de cerosones Matriz de unosrand Matriz de elementos uniformemente distribuidosrandn Matriz de elementos normalmente distribuidosA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 22/215Funciones para crear matricesEjemplosZ = z e r os ( 2 , 4)Z =0 0 0 00 0 0 0F = 5 ones ( 3 , 3)F =5 5 55 5 55 5 5N = f i x (10 r and ( 1 , 10) )N =4 9 4 4 8 5 2 68 0R = r andn ( 4 , 4)R =1. 0668 0. 2944 0.6918 1.44100. 0593 1.3362 0. 8580 0. 57110.0956 0. 7143 1. 2540 0.39990.8323 1. 6236 1.5937 0. 6900A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 23/215El comando loadEl comando load permite leer cheros binarios que contienen matricesgeneradas en sesiones anteriores de MATLABTambien permite leer cheros de texto que contienen datos.El chero debe estar organizado como una tabla de numeros separadospor espacios, una lnea por cada la, e igual n umero de elementos encada la.Ejemplo: Crear utilizando un editor de texto un chero llamadomagik.dat que contenga los siguientes datos16. 0 3. 0 2. 0 13. 05. 0 10. 0 11. 0 8. 09. 0 6. 0 7. 0 12. 04. 0 15. 0 14. 0 1. 0El comandol oad magi k . datcrea una variable llamada magik conteniendo la matriz.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 24/215Ficheros mLos cheros m son cheros de texto que contienen c odigo de MATLAB.Para crear una matriz haciendo uso de un chero m, editar un cherollamado magik.m con el siguiente textoA = [ . . .16. 0 3. 0 2. 0 13. 05. 0 10. 0 11. 0 8. 09. 0 6. 0 7. 0 12. 04. 0 15. 0 14. 0 1. 0 ] ;Ejecutar ahora el comandomagi kComprobar que se ha creado la matriz A.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 25/215ConcatenacionEs el proceso de unir dos o mas matrices para formar otra matriz demayor dimensi onEl operador concatenaci on es []Ejemplo:B = [ A A+32; A+48 A+16]B =16 3 2 13 48 35 34 455 10 11 8 37 42 43 409 6 7 12 41 38 39 444 15 14 1 36 47 46 3364 51 50 61 32 19 18 2953 58 59 56 21 26 27 2457 54 55 60 25 22 23 2852 63 62 49 20 31 30 17Comprobar que las columnas de esta matriz suman todas lo mismo, perono ocurre lo mismo con sus las.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 26/215Borrado de filas y columnasSe pueden borrar las y columnas utilizando el operador [].es la matriz vaca (concatenaci on de nada).El proceso es sustituir una la o una columna por la matriz vaca [].Ejemplo: Borrado de la segunda columna de una matrizX = A;X( : , 2 ) = [ ]X =16 2 135 11 89 7 124 14 1No se pueden borrar elementos, por que el resultado ya no sera unamatrizX( 1 , 2) = [ ]producira un error.Sin embargo, utilizando un unico subndice es posible borrar elementos,aunque el resultado ya no sera una matriz, sino un vector.X( 2 : 2 : 1 0 ) = [ ]X =16 9 2 7 13 12 1A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 27/215El comando formatEste comando controla el formato numerico de los resultados que muestraMATLAB.Afecta s olo a la presentaci on en pantalla, no al formato interno ni a loscalculos.Ejemplos:x = [ 4/3 1. 2345 e 6]f or mat s hor t1. 3333 0. 0000f or mat s hor t e1. 3333 e+000 1. 2345 e006f or mat s hor t g1. 3333 1. 2345 e006f or mat l ong1. 33333333333333 0. 00000123450000f or mat l ong e1. 333333333333333 e+000 1. 234500000000000 e006f or mat l ong g1. 33333333333333 1. 2345 e006A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 28/215El comando formatf or mat bank1. 33 0. 00f or mat r a t4/3 1/810045f or mat hex3 f f 5555555555555 3 eb4b6231abf d271Ademas format compact suprime espacios y lneas en blanco. Paraobtener mas control sobre la presentacin en pantalla se pueden utilizarlas funciones sprintf y fprintf.Para que no aparezca el resultado de un calculo en la pantalla, se utiliza ;A = magi c ( 100) ;Para dividir expresiones que no caben en una unica lnea, se usan trespuntos ...s = 1 1/2 + 1/3 1/4 + 1/5 1/6 + 1/7 . . . 1/8 + 1/9 1/10 + 1/11 1/12;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 29/215Comandos de edicion en pantalla ctrl-p Comando anterior ctrl-n Comando siguiente ctrl-b Caracter atras ctrl-f Caracter adelantectrl- ctrl-r Palabra adelantectrl- ctrl-l Patabra atrashome ctrl-a Ir a comienzo de lneaend ctrl-e Ir a n de lneaesc ctrl-u Borrar lneadel ctrl-d Borrar caracter actualbackspace ctrl-h Borrar caracter anteriorctrl-k Borrar hasta n de lneaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 30/215GraficosMATLAB dispone de recursos para mostrar vectores y matrices engracos, as como para incluir texto en los gracos e imprimirlos.La funcion basica de creaci on de gracos es plot.Si y es un vector, plot(y) dibuja un graco de los valores de loselementos de y frente a sus ndices.Si x e y son dos vectores de igual tama no, plot(x,y) dibuja un gracode los valores de los elementos de y frente a los de x.Ejemplo:t = 0: pi /100: 2 pi ;y = s i n ( t ) ;p l o t ( t , y )A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 31/215GraficosSe pueden crear gracos m ultiples con una unica llamada a plot.MATLAB elige los colores automaticamente siguiendo una tablapredenida.Ejemplo:y2 = s i n ( t . 25) ;y3 = s i n ( t . 5) ;p l o t ( t , y , t , y2 , t , y3 )A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 32/215GraficosSe puede especicar el color, tipo de lnea, y marcas con el comandop l o t ( x , y , c o l o r s t y l e ma r k e r )color_style_marker es una cadena de tres caracteres, que indicanrespectivamente el color, tipo de lnea y marca.La letra que indica el color puede ser: c, m, y, r, g, b, w,k, que indican cyan, magenta, amarillo, rojo, verde, azul, blanco ynegro.La letra que indica el tipo de lnea puede ser: - para lnea continua,-- para lnea de trazos, : para lnea de puntos, -. para punto yraya, none sin lnea.Las marcas mas comunes son +, o, * y x.Ejemplo: El comandop l o t ( x , y , y:+ )dibuja el graco en lnea continua amarilla y situa marcas + en cadapunto.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 33/215Ayuda en MATLABExisten varias formas de obtener ayuda en lnea de MATLAB.El comando helpLa ventana de ayudaEl escritorio de ayuda (MATLAB help desk)Paginas de referencia en lneaPagina Web de The Mathworks, Inc. (www.mathworks.com)A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 34/215El comando helpEs el comando mas basico para obtener informaci on de la sintaxis yactuaci on de una funci on.La informaci on aparece directamente sobre la ventana de comandos.Ejemplo:he l p magi cMAGIC Magi c s quar e .MAGIC(N) i s an NbyN mat r i x c ons t r uc t e d f romt he i n t e g e r s 1 t hr ough N2 wi t h e qual row ,col umn , and di a gona l sums .Pr oduces v a l i d magi c s quar e s f o r N =1 , 3 , 4 , 5 . . . .El nombre de la funcion siempre aparece en may usculas, pero en realidaddebe escribirse en min usculas al llamar a la funci onA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 35/215Las funciones estan organizadas en grupos l ogicos, as como la estructurade directorios de MATLAB.Las funciones de algebra lineal estan en el directorio matfun. Para listartodas las funciones de este grupohe l p matfunMat r i x f u n c t i o n s nume r i c al l i n e a r a l ge br a .Mat r i x a n a l y s i s .norm Mat r i x or v e c t or norm .nor mest Es t i mat e t he mat r i x 2norm. . .El comando help lista todos los grupos de funcioneshe l pmatl ab / g e n e r a lmatl ab / ops. . .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 36/215La ventana de ayudaDisponible seleccionando la opci on Help Window del men u Help o bienpulsando la interrogaci on de la barra de men u.Puede invocarse desde la ventana de comandos con helpwinPara obtener ayuda sobre un comando helpwin comandoLa informaci on obtenida es la misma que con el comando help peropermite hipertexto y navegacionA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 37/215El comando lookforConveniente cuando buscamos una funci on pero no recordamos sunombre.Busca todas las funciones que en la primera lnea de texto de la ayuda(lnea H1) contienen la palabra clave.Ejemplo: Estamos buscando una funci on para invertir matrices, hacemoshe l p i n v e r s ei n v e r s e .m not f ound .entonces bucamos con lookforl o o k f o r i n v e r s eINVHILB I n v e r s e Hi l b e r t mat r i x .ACOSH I n v e r s e h y p e r b o l i c c o s i ne .ERFINV I n v e r s e of t he e r r o r f u n c t i o n .INV Mat r i x i n v e r s e .PINV Ps e udoi nv e r s e .IFFT I n v e r s e d i s c r e t e Fo u r i e r t r ans f or m .IFFT2 Twodi me ns i ona l i n v e r s e d i s c r e t e Fo u r i e rt r ans f or m .ICCEPS I n v e r s e compl ex cepst r um .IDCT I n v e r s e d i s c r e t e c o s i ne t r ans f or m .Con la opci on -all busca en todo el texto de la ayuda, no solo en H1.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 38/215El escritorio de ayuda (help desk)El escritorio de ayuda de MATLAB permite acceder a mucha informaci onde referencia almacenada en el disco duro o en el CD-ROM en formatoHTML mediante un navegador.Se accede a traves de la opci on Help Desk del men u Help.Tambien se accede escribiendo helpdesk en la ventana de comandos.Para acceder a la pagina de referencia en formato HTML de un comandoespecco, se utiliza el comando doc. Ejemplo: doc eval.Las paginas de referencia se encuentran tambien disponibles en formatoPDF y pueden ser consultadas e impresas con Acrobat Reader.Finalmente, desde el escritorio de ayuda se puede acceder a la PaginaWeb the The MathWorks, Inc.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 39/215El Entorno de MATLABEl entorno de MATLAB incluye el conjunto de variables denidas duranteuna sesion de MATLAB y el conjunto de cheros del disco que contienenprogramas y datos y que permanecen entre sesiones.El espacio de trabajo (workspace) es el area de memoria accesible desdela lnea de comandos de MATLAB.Los comandos who y whos muestran el contenido del espacio de trabajo,who proporciona una lista reducida, whos incluye ademas informaci onsobre tama no y almacenamiento.whosName Si z e Byt es Cl a s sA 4x4 128 doubl e a r r a yD 5x3 120 doubl e a r r a yM 10x1 3816 c e l l a r r a yS 1x3 442 s t r u c t a r r a yh 1x11 22 char a r r a yn 1x1 8 doubl e a r r a ys 1x5 10 char a r r a yv 2x5 20 char a r r a yGrand t o t a l i s 471 el ement s us i ng 4566 by t e s .Para borrar variables del espacio de trabajo, usar el comando clear.c l e a r nombr e v a r i a bl e A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 40/215El comando savePermite almacenar los contenidos del espacio de trabajo en un cheroMAT (binario).s ave 15 oct 02salva el espacio de trabajo en el chero 15oct02.mat. Para salvar unicamente ciertas variabless ave 15 oct 02 no mbr e s v a r i a bl e sPara recuperar el espacio de trabajo se utiliza el comando load.l oad 15 oct 02El formato MAT es binario y no puede leerse, si se desea un chero quepueda leerse pueden utilizarse las siguientes alternativas-ascii Formato de texto de 8 bits.-ascii -double Use Formato de texto de 16 bits.-ascii -double -tabs Delimita los elementos de una matriz con tabuladores-v4 Crea un chero MAT de la versi on 4-append A nade datos a un chero MAT ya existenteEn formato texto no puede salvarse todo el espacio de trabajo de una vez,y debe hacerse indicando el nombre de las variables.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 41/215La trayectoria de busquedaLa trayectoria de b usqueda (search path) es la lista ordenada dedirectorios en los que MATLAB va buscando las funciones.El comando path muestra la trayectoria de b usqueda.Si hubiera varios cheros con el mismo nombre de funcion en diferentesdirectorios, MATLAB ejecuta el primero que encuentra al seguir latrayectoria de b usqueda.Para modicar la trayectoria de b usqueda, ir a Set Path en elmen u File.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 42/215Manipulacion de FicherosMATLAB dispone de los comandos dir, type, delete, cd, pararealizar las operaciones usuales de manipulacion de cheros de unsistema operativo.MATLAB MS-DOS UNIX VAX/VMSdir dir ls dirtype type cat typedelete del o erase rm deletecd chdir cd set defaultA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 43/215El comando diaryCrea un diario de la sesi on MATLAB en un chero de texto.El chero puede editarse con cualquier editor o procesador de textos.Para crear un chero llamado midiario.txt que contenga todos loscomandos de la sesion y sus resultados en la ventana de comandos, hacerd i a r y mi d i a r i o . t x tsi no se incluye ning un nombre de chero, el diario de la sesi on sealmacena por defecto en el chero diary.Para parar la grabacion del diariod i a r y o f fPara volver a activar/desactivar la grabaci on del diariod i a r y on/ o f fA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 44/215Ejecucion de programas externosPara ejecutar programas externos a MATLAB desde la lnea decomandos, se antepone el caracter de escape !. Por ejemplo, enUNIX! v iEjecuta el editor de texto visual.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 45/215Ejercicios 1Fichero Aejer1.m : Las siguientes expresiones describen lastensiones principales de contacto en las direcciones x, y y z queaparecen entre dos esferas que se presionan entre s con una fuerzaF.x = y = pmax__1 za tan1_az__(1 v1) 0,5_1 + z2a2_1_z = pmax1 + z2/a2siendoa =_3F8(1 v21)/E1 + (1 v22)/E21/d1 + 1/d2_1/3pmax = 3F2a2vj son los coecientes de Poisson, Ej los modulos de Young decada esfera y dj son los diametros de las dos esferas.Escribir las ecuaciones en notacion de MATLAB y evaluarlas paralos siguientes valores: v1 = v2 = 0,3, E1 = E2 = 3 107, d1 = 1,5,d2 = 2,75, F = 100 lb. y z = 0,01 in.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 46/215Ejercicio 2Fichero Aejer2.m : El n umero de carga de un rodamientohidrodinamico esta dado por la siguiente expresion:NL =

2(1 2) + 162(1 2)2siendo el coeciente de excentricidad. Escribir la ecuacion ennotacion de Matlab y evaluarla para = 0,8.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 47/215Ejercicio 3Fichero Aejer3.m : Un tubo largo con radio interior a y radioexterior b y diferentes temperaturas en la supercie interior Ta yen la exterior Tb esta sometido a tensiones.Las tensiones radial y tangencial se obtienen mediante lassiguientes ecuaciones:r = E(TaTb)2(1 v) ln(b/a)_ a2b2a2_b2r2 1_ln_ba_ln_br__t = E(TaTb)2(1 v) ln(b/a)_1 a2b2a2_b2r2 + 1_ln_ba_ln_br__siendo r la coordenada radial del tubo, E el modulo de Young delmaterial del tubo y el coeciente de dilatacion. La distribucionde temperaturas a lo largo de la pared del tubo en la direccionradial es:T = Tb + (TaTb) ln(b/r )ln(b/a)Escribir las ecuaciones en notacion de Matlab y evaluarlas paralos siguientes valores: = 1,2 105, E = 3 107, v = 0,3, Ta = 500,Tb = 300, a = 0,25, b = 0,5, r = 0,375.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 48/215Ejercicio 4Fichero Aejer4.m : La formula siguiente, propuesta por elmatematico S. Ramanujan permite aproximar el valor de .1 =89801N

n=0(4n)!(1103 + 26390n)(n!)43964nEvaluar la formula anterior para N = 0, 1, 2, 3 y comparar elresultado obtenido con el valor de que proporciona Matlab.Para calcular el factorial, utilizar la funcion gamma que satisfacegamma(n+1)=n!.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 49/215Ejercicio 5Fichero Aejer5.m : Introducir en el espacio de trabajo deMatlab dos vectores a y b siendo aj = 2j 1 y bj = 2j + 1,j = 1, . . . , 7. Se pide:1 Calcular la suma de a y b2 Calcular la diferencia de a y b.3 Calcular el producto aTb y el valor de su traza y determinante.4 Calcular el producto abT.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 50/215Ejercicio 6Fichero Aejer6.m : Sea z=magic(5). Realizar las siguientesoperaciones ordenadamente y mostrar los resultados:1 Dividir todos los elementos de la segunda columna por3.2 Sustituir la ultima la por el resultado de sumarle los elementos de latercera la.3 Sustituir la primera columna por el resultado de multiplicarle loselementos de la cuarta columna.4 Hacer que todos los elementos de la diagonal principal sean 2.5 Asignar el resultado obtenido a la variable q y mostrarla por pantalla.6 Mostrar la diagonal principal de qqT.7 Mostar el cuadrado de todos los elementos de la matriz q.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 51/215Ejercicio 7Fichero Aejer7.m : En analisis de regresion lineal multivarianteaparece la siguiente cantidad:H = X(XTX)1XTSeaX =17 31 56 5 419 28 912 11 10Calcular la diagonal de H.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 52/215Ejercicio 8Fichero Aejer8.m : Dibujar el resultado de la suma de lassiguientes series para los rangos indicados de valores de . Utilizar200 puntos para realizar la graca.1 Onda cuadradaf () = 4

k=11n sin(2(2k 1)), 12 122 Diente de sierraf () = 12 + 1

k=11n sin(2k), 1 13 Diente de sierraf () = 12 1

k=11n sin(2k), 1 14 Onda triangularf () = 2 4

k=11(2k 1)2 cos((2k 1)), 1 1A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 53/215Ejercicio 9Fichero Aejer9.m : Dibujar las siguientes curvas. Utilizar axisequal para una correcta visualizacion.1 Cicloide ( 3, r = 0,5, 1, 1,5)x = r sin y = r cos 2 Lemniscata (/4 /4)x = cos _2 cos(2)y = sin _2 cos(2)3 Espiral (0 6)de Arqumedesx = cos y = sin Logartmica (k = 0,1)x = ekcos y = eksin A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 54/215Ejercicio 10Fichero Aejer10.m : Dibujar las siguientes curvas. Utilizar axisequal para una correcta visualizacion.1 Cardioide (0 2)x = 2 cos cos 2y = 2 sin sin 22 Astroide (0 2)x = 4 cos3y = 4 sin33 Epicicloide (R = 3, a = 0,5, 1 o2, y 0 2)x = (R + 1) cos a cos((R + 1))y = (R + 1) sin a sin((R + 1))4 Epicicloide (R = 2,5, a = 2, y 0 6)x = (R + 1) cos a cos((R + 1))y = (R + 1) sin a sin((R + 1))A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 55/215Ejercicio 11Fichero Aejer11.m : Dibujar las siguientes curvastridimensionales. Utilizar axis equal para visualizarcorrectamente.1 Helice esferica (c = 5,0,0 t 10)x = sin(t/2c) cos(t)y = sin(t/2c) sin(t)z = cos(t/2c)2 Senoide sobre cilindro (a = 10,0,b = 1,0, c = 0,3, 0 t 2)x = b cos(t)y = b sin(t)z = c cos(at)3 Senoide sobre esfera (a = 10,0,b = 1,0, c = 0,3, 0 t 2)x = cos(t)_b2c2cos2(at)y = sin(t)_b2c2cos2(at)z = c cos(at)4 Espiral toroidal (a = 0,2, b = 0,8,c = 20,0, 0 t 2)x = [b + a sin(ct)] cos(t)y = [b + a sin(ct)] sin(t)z = a cos(ct)A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 56/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 57/215Introduccion a entornos de trabajo (I)Entornos de trabajo con Matlab:Espacio de trabajo workspace.Ficheros de escritura scripts (*.m).Ficheros de funciones de Matlab (*.m) y compiladas.Objetos desarrollados en Matlab y en Java.Workspace en Matlab.Uso de variables globales, scripts, funciones y objetos.Ejemplo:>> a =[ 1 , 2 ; 3 , 4 ] ;>> whos>> i nv ( a ) ;Ficheros de escritura scripts:Ficheros (*.m) con ordenes iguales a las dadas en el workspace.Las variables que utiliza son las globales del workspace.Utiles para repetir la misma operacion varias veces.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 58/215Introduccion a entornos de trabajo (II)Ficheros (*.m) de funciones:Son cheros en lenguaje interpretado de Matlab.Sus variables son locales por defecto.Paso a la funcion del valor de las variables.Funciones propias de Matlab y Toolbox.Ejemplo:f u n c t i o n c = my f i l e 1 ( a , b)c = s q r t ( ( a . 2) +(b . 2) )Uso desde el workspace:>> x = 7. 5>> y = 3. 342>> z = my f i l e ( x , y )>> whos. . .Ficheros de funciones compilador en C/C++ o FORTRAN. Contienencabecera especial para conexi on con Matlab.Clases y objetos denidos en Matlab y Java. Una clase es un tipo de datoal que se puede asociar funciones propias y redenir operadores.>> s = t f ( s ) ; get ( s )>> P= 1/( s +1) ; bode (P) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 59/215Tipos de datos (I)Tipos de variables:Clase Ejemplo Descripcionarray [1,2;3,4]; 5+6i Datos virtual ordenado por ndicescuyos componentes son datos delmismo tipo.char Hola Array de caracteres (cada caractertiene 16 bits).celda {17, hola, eye(2)} Dato virtual ordenado por ndicescuyos componentes son arrays de dis-tinto tipo.struct a.dia=1; a.mes=julio Dato virtual para almacenar datospor campos (estructura). Cada cam-po es un array o celda.objeto tf(1,[1,1]) Datos denido por el usuario con basea una estructura y con funciones aso-ciadas.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 60/215Tipos de datos (II)Operadores:Oper. aritmeticos+ Suma.- Resta..* Multiplicaci on../ Divisi on derecha..\ Divisi on izquierda.: Operador dos puntos..^ Potencia.. Transpuesta. Conjugada transpuesta.* Multiplicaci on de matrices./ Divisi on derecha de matrices.\ Divisi on izquierda de matrices.^ Potencia de matrices.Oper. de relacion> Menor que> Mayor que= Mayor que o igual a== Igual a= No igual aOperadores logicos.& Y| OR~ NOA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 61/215Tipos de datos (III)Operaciones aritmeticas en el workspace o Ascript1.m:>> a =[ 1 , 2 ; 3 , 4 ] ; b =[ 4 , 5 ; 6 , 7 ] ; >> c= ab>> c= 3a . . .. . . >> c= a . b>> a ( 1 , : ) b ( : , 1 ). . .Operaciones de relaci on en el workspace o Ascript1.m:>> a =[ 1 , 2 , 3] ; b =[ 1 , 3 , 2] ; >> a > b>> a==b . . .. . . >> a =[ ] ; i s empt y ( a )...Operaciones l ogicas en el workspace o Ascript1.m:>> a =[ 1 , 2 , 3] ; b =[ 1 , 0 , 3] ; >> a&b>> a==b . . .. . . >> a>> a | b . . .. . .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 62/215Tipo de datos (IV): Valores especialesFunciones del directorio elmat que devuelven valores importantes,ans Variable a la que se asigna el resultado de una ex-presi on que no ha sido asignada.eps Tolerancia con la que trabaja Matlab en sus calculos.realmax Mayor n umero en coma otante que puede represen-tar el computador.realmin Menor n umero en coma otante que puede repre-sentar el computador.pi 3.1415926535897...i, j N umeros imaginarios puros.Inf Innito. Se obtiene de divisiones entre cero.NaN Indeterminaci on. Se obtiene de divisiones 0/0,inf/inf o n/0 cuando n es imaginario.flop Cuenta las operaciones en coma otante realizadas.version Indica la versi on de Matlab usada.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 63/215Tipo de datos (V): Valores especialesEn el workspace:>> 3+2. . .>> pi 3. . .>> r eal max. . .>> a= 5+3 i. . .>> a= i (4+3 i ). . .>> a= 3/0. . .>> a= 0/0. . .>> a= NaN3. . .>> a= 3 I n f. . .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 64/215Sentencias de control.Sentencias de control en Matlab:if, else y elseif: Ejecuta un grupo de sentencias basandose encondiciones logicas.switch, case y otherwise: Ejecuta diferentes grupos de sentencias enfuncion de condiciones logicas.while: Ejecuta un n umero de sentencias de forma indenida en funcion deuna sentencia logica.for: Ejecuta un n umero de sentencias un n umero determinado de veces.try...catch: Cambia el control de ujo en funcion de los posibles erroresproducidos.break: Termina de forma directa la realizacion de un bucle for o while.return: Sale de la funci on.Nota: Los bucles for y while pueden ser modicados por codigovectorizado para aumentar la velocidad de ejecuci on.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 65/215Sentencia de control if, else y elseif.Forma general Asript2.m,i f s e nt l o g 1 ,% bl oque 1e l s e i f s e nt l o g 2,% bl oque 2e l s e% bl oque 3endi f n < 0% Si n ne ga t i v o e r r o r .di s p ( Ent r ada debe s e p o s i t i v a ) ;e l s e i f rem( n , 2 ) == 0% Si es par s e d i v i d e e nt r e 2.A = n /2;e l s e% Si es i mpar s e i ncr ement a y d i v i d e.A = ( n+1) /2;endA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 66/215Sentencia de control switch, case y otherwise.Formulaci on general Ascript3.m,s wi t c h e x p r e s s i o ncas e val ue 1% bl oque 1cas e val ue 2% bl oque 2. . .ot he r wi s e% bl oquenends wi t c h i nput numcas e {1, 2, 3}di s p ( 1 o 2 o 3 ) ;cas e 0di s p ( c e r o ) ;cas e {1 , 2 , 3}di s p ( 1 o 2 o 3 ) ;ot he r wi s edi s p ( ot r o v a l o r ) ;endA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 67/215Sentencia de control while y for.Formulaci on general Ascript4.m,whi l e e x p r e s i o n% bl oqueendn = 1;whi l e pr od ( 1 : n) < 1e100 ,n = n + 1;endFormulaci on general Ascript5.m,f o r n d i c e= i n i c i o : paso : f i n ,% bl oqueendf o r i i = 2: 6 ,x ( i i ) = 2x ( i i 1) ;endA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 68/215Sentencia de control: break, try-catch y returnSentencia break:Sirve para salir de forma automatica del ultimo bucle while o for abiertosin tener en cuenta la condicion o ndice de salida.Sentencia de control try, catch:Formulacion general,try bloque-1 catch bloque-2 endEjecuta el bloque-1 mientras no haya un error. Si se produce un error enbloque-1 se ejecuta bloque-2.Sentencia return:Se sale de la funci on en la que se trabaja.Si se llega al nal de la funcion (*.m), Matlab sale de ellaautomaticamente.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 69/215Funciones en matlab (I): CabeceraSe dene el nombre y las variables de entrada y salida:f u n c t i o n c = my f i l e ( a , b)Las lneas de comentario se inician con el caracter %.Las lneas de comentario posteriores a la funci on son de ayuda.f u n c t i o n c = my f i l e ( a , b)% Output : c . I nput : a y bUsando la funci on help.>> he l p my f i l eOutput : c . I nput : a y bA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 70/215Funciones en matlab (II): Variables de entradaVariables de entrada-salida:Libertad en su n umero. La variable nargin y nargout indican su n umero.Variables locales por defecto sin tipo determinado.Ejemplo: a, b y c pueden ser double o array myfile2.m.f u n c t i o n c = my f i l e 2 ( a , b , c )% Output : c . I nput : a , b y ci f nar gi n P= 10; z= my f i l e ( 3) ; % r e p e t i rVariable global:>> g l o b a l P; P=10; z= my f i l e ( 3) ; % r e p e t i rA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 73/215Funciones en matlab (V): Sub-funciones y funciones privadasVarias funciones contenidas en un mismo chero.La funcion principal es la primera. Equivalente a la funcion main dellenguaje C.Ejemplo myfile5.m:f u n c t i o n c = my f i l e 5 ( a , b)% Output : c . I nput : a y bc= f un ( a , b) ;f u n c t i o n z= f un ( x , y )z=s q r t ( x .2+y . 2) ;Funciones privadas: Estan en sub-carpeta private y s olo se pueden usarpor las funciones de la carpeta.Prioridades en la llamada a funciones: Sub-funci on, funci on en mismacarpeta, funcion en carpeta private,funci on en las carpetas del path.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 74/215Funciones en matlab (VI):Evaluacion de cadenas eval() y feval()Son el equivalente a los punteros a funciones de lenguaje C.eval(): Una cadena de caracteres es interpretada como orden,>> cad= my f i l e ; a= 1;>> c= e v a l ( [ cad , ( a , , i n t 2 s t r ( 2) , ) ] ) ;feval: Se llama a una funci on por su nombre o comodn Ascript6.m,>> cad= my f i l e ; a= 1 , b=2;>> c= f e v a l ( cad , a , b) ;>> cad= @myf i l e ; a=1, b=1;>> c= f e v a l ( cad , a , b) ;>> cad= @( x , y ) s q r t ( x .2+y . 2) ;>> c= f e v a l ( cad , a , b) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 75/215Entrada de datos, pausas y llamadas a la shell.input(): Introducci on de datos Ascript7.m,n= i nput ( I n t r . dat o : ) ; % Doubl e .n= i nput ( I n t r . dat o : , s ) ; % Cadena de c a r a c t e r e s .ginput(): Localizar puntos en una graca con el rat on,f i g u r e ; p l o t ( 1: 1000) ;[ x , y]= gi nput ( 1) % l o c a l i z a r un punto x , y en g r a f i c a .[ x , y , t e c l a ]= gi nput ( 1) % t e c l a da l a t e c l a de l r at onusada .pause(): La funci on para el programa durante un periodo de tiempo,pause ( n) ; % Para e l programa dur ant e n s egundos .pause ; % Para e l programa has t a que s e pul s e una t e c l a .Llamada a la shell (MS-DOS o LINUX): Iniciar sentencia con !,! copy f i c h 1 . c f i c h 2 c . % Si e l s i s t e ma f ue r a msdosA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 76/215Funciones save y load.save: Grabar datos en cheros Ascript8.m,-mat: Codigo binario (por defecto).-ascii: Codigo ASCII.-append: Graba al nal del chero.>> s ave dat os . dat a b c % Graba dat os . dat l a sv a r i a b l e s a b c>> a= r and ( 10 , 5) ;>> s ave a s c i i append dat os . dat a %Graba a l f i n a l de lf i c h e r o en c odi go ASCI I .load: Recupera las variables guardadas con la sentencia save.>> l oad dat os . dat % Recuper a l a s v a r i a b l e s de dat os . datA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 77/215Funciones de librera entrada/salida de lenguaje C (I)Algunas de las funciones de entrada/salida:Clase Funcion DescripcionAbrir/Cerrar fopen() Abrir chero.fclose() Cerrar chero.Binarios I/O fread() Lectura binaria de chero (defecto enteros).fwrite() Escritura binaria en chero (defecto enteros).Con formato fscanf() Lectura con formato de chero.fprintf() Escritura con formato en chero.Conversi on cadenas sscanf() Lee de cadena con un determinado formato.sprintf() Escribe en cadena con formato.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 78/215Funciones de librera entrada/salida de lenguaje C (II)Ejemplos de apertura y cierre. Permisos:r: Lectura. Puntero al inicio del chero.w: Escritura. Se borra el chero si existe.a: A nadir. Puntero al nal del chero.r+: Lectura/escritura. Puntero al inicio.>> f i c= f open ( f i c h . dat , r ) ; % Abre f i c h e r o par al e c t u r a .>> f c l o s e ( f i c ) ; % Ci e r r a f i c h e r o f i c h . dat .>> f c l o s e ( a l l ) ; % Ci e r r a t odos l o s f i c h e r o s .Principales usos:Ficheros de texto con formatoFicheros binarios para guardar o extraer matrices en su forma vectorial.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 79/215Funciones de librera entrada/salida de lenguaje C (III)Ejemplo Ascript9.m:>> a= r and ( 3 , 3)>> f i c h= f open ( dat os . t x t , w ) ; % Guar dar en t e x t o>> f p r i n t f ( f i c h , %.2 f %.2 f %.2 f \n , a ) ;>> f c l o s e ( f i c h ) ;>> f i c h= f open ( dat os . t x t , r ) ; % Recuper ar de f i c h e r ot e x t o>> b= f s c a n f ( f i c h , %f )>> f c l o s e ( f i c h ) ;>> f i c h= f open ( dat os . t x t , w ) ; % Guar dar en bi na r i o ,f or mat o r e a l 4>> f wr i t e ( f i c h , a , r e a l 4 ) ;>> f c l o s e ( f i c h ) ;>> f i c h= f open ( dat os . t x t , r ) ; % Recuper ar en b i n a r i o>> b= f r e a d ( f i c h , i nf , r e a l 4 )>> f c l o s e ( f i c h ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 80/215Practicas de funciones y sentencias de control (I).Fichero Bejer1.m : Generar una funci on (*.m) para obtener lassiguientes series matematicas. Los argumentos son tres: El primero es elnombre de la serie deseada (obligatorio). El segundo es el n umero dedatos de , por defecto 200 (opcional). El tercero es lmite superior desumatorio, por defecto 1000 (opcional). Si el n umero de argumentos desalida es uno se devuelve los datos, si es cero se dibuja la gracacorrespondiente.Se nal cuadrada:f () = 4

n=1,3,5,...1nsin(2n) 12 12.Dientes de sierra:f () = 12+ 1

n=11nsin(2n) 1 1.Se nal triangular:f () = 2 4

n=11(2n 1)2 cos((2n 1)) 1 1.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 81/215Practicas de funciones y sentencias de control (II)Fichero Bejer2.m : El desplazamiento de una onda propagada a lolargo de una cuerda tiene una velocidad inicial cero y un deplazamientoinicial,{u(, 0) = a | 0 a} {u(, 0) = 11a | a 1},siendo su ecuaci on,u(, ) = 2a(1a)

Nn=1sin nan3 sin(n) cos(n).Crear una funcion *.m para mostrar en graco u(, ). La entrada de lafunci on sera el valor de a, opcional defecto a = 0,25, el de N, opcionaldefecto N = 50, y el de , opcional defecto = 0,05, donde0 2. La funci on dibuja la graca si el usuario no pide variables desalida y devuelve el valor de u(, ) sin dibujar la graca en casocontrario.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 82/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 83/215Optimizacion de programas: Indexado de arrays y celdas (I)Para la optimizaci on de un programa con matlab se debe reducir eln umero de bucles y cambiarlo por algebra matricial.Formato externo: Filas y columnas. Formato interno: vector de columnas,Ascript10.m.>> a= [ 1 , 2 , 3 ; 4 , 5 , 6 ] ;>> a ( 2 , 1) , a ( 2) ,Llamada parcial a un array, end cuenta el n umero de las o columnas,>> i i = 1 : 2 : 3 ; % v e c t or de 1 a 3 con paso 2.>> a ( 1 , i i ) % pr i mer a f i l a , col umnas i i>> a ( 1 , 2 : end ) % pr i mer a f i l a , col umnas de 2 a l f i n a l>> a ( 1 , : ) % pr i mer a f i l a , t odas l a s col umnasComposici on de arrays,>> b= [ a ( : , 1 ) , [ 5 , 7 ] ] % Pr i mer a col umna de a y [ 5 , 7 ]v e c t or col umna .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 84/215Optimizacion de programas: Indexado de arrays y celdas (II)Borrado de matrices,>> b ( : , 1 ) =[ ] ; % Bor r ado de l a pr i mer a col umna .Matrices ceros, unos y aleatorias,>> a= z e r os ( 2 , 3) ; b= ones ( 3 , 2) ; c= r and ( 2 , 3) ;Espacios lineales y logartmicos,>> a= l i n s p a c e ( 1 , 10 , 100) ; % De 1 a 10 , 100 puntos , pasol i n e a l>> a= l ogs pac e ( 1 , 5 , 100) ; % De 1e1 a 1e5 , 100 puntos ,paso l og .Funciones de tama no y repetici on.>> [ n f i l , nc ol ]= s i z e ( a ) ; % Tama no f i l a col umna ,>> n f i l = s i z e ( a , 1 ) ; % Tama no f i l a .>> ncomp= s i z e ( a ( : ) , 1) ; % N umero de componentes ,f or mat o i n t e r n o .>> b= repmat ( a , [ 3 , 1 ] ) ; % Re pe t i r mat r i z a t r e s ve c e sen col umna .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 85/215Optimizacion del codigo de programas (I)Inicializaci on de matrices como matrices cero.Sustituci on de bucles por productos matriciales, Ascript11.mFunci on en diferentes puntos, y(n) = sin(n) n, 0 < n < 10, 100 puntos:>> n=l i n s p a c e ( 0 , 10 , 100) ; y= s i n ( n) . n ;Sumatorio de funci on, y =

10n=0 sin(n) n.>> n= [ 0 : 1 0 ] ; y= sum( s i n ( n) . n) ;Funci on de dos dimensiones en varios puntos,y(i , j ) = i2+ j2+ i j , i [0, 5], j [0, 7],>> i i =0: 5; j j =[ 0 : 7 ] ;>> s i i = s i z e ( i i , 2 ) ; s j j = s i z e ( j j , 1 ) ;>> i i = repmat ( i i , [ s j j , 1 ] ) ; j j = repmat ( j j , [ 1 , s i i ] ) ;>> [ i i , j j ]= mes hgr i d ( i i , j j ) ; % e q u i v a l e n t e>> y= i i .2+ j j .2+ i i . j j ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 86/215Optimizacion del codigo de programas (II)Sustituci on de bucles por productos matriciales, Ascript11.mFunci on de una dimensiones con sumatorio,y(i ) =

10n=1 n i2+ i , i [0, 5],>> i i =0: 5; n =[ 1 : 1 0 ] ;>> y= n ones ( s i z e ( n) ) i i .2+ i i ;Pr actica de optimizacion de programas: Volver a escribir el codigode las practica de generaci on de se nales sin usar bucles, FicherosBejer1bis.m, Bejer2bis.m.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 87/215Matrices tri-dimensionales (I)Se componen de las, columnas y paginas.Generaci on de matrices tridimensionales, Ascript12.m>> a =[ 1 , 2 ; 3 , 4 ] ; % Mat r i z de dos di me ns i one s .>> a ( : , : , 2 )= [ 5 , 6 ; 7 , 8 ] ; % Mat r i z de t r e s di me ns i one s .>> a= cat ( 3 , [ 2 , 3 ; 4 , 5 ] , [ 5 , 6 ; 7 , 8 ] ) ; % encadena en dim 3>> a= repmat ( [ 2 , 3 ; 4 , 5 ] , [ 1 , 1 , 2 ] ) ; % r e p i t e en pagi nasRe-dimensi on: El array es tomado como vector y re-dimesionado,>> a= r e s hape ( a , [ 2 , 4 ] ) ; % Conv i e r t e dos pagi nas ac uat r o col umnas .Borrado de parte de la matriz,>> a ( : , : , 2 ) =[ ] ; % Bor r ado de l a pagi na 3.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 88/215Matrices tri-dimensionales (II)Eliminaci on de dimensiones,>> b= s queeze ( a ( : , 1 , 1 ) ) ; % Se obt i e ne un v e c t or dim( 21)>> b= s queeze ( a ( 1 , : , 1 ) ) ; % Se obt i e ne un v e c t or dim( 12)>> b= s queeze ( a ( 1 , 1 , : ) ) ; % Se obt i e ne un v e c t or dim( 21)Cambio de ndices en dimensiones,>> b= permute ( a , [ 2 , 1 , 3 ] ) ; % Las f i l a s pasan a s e rcol umnas .>> a= i per mut e ( b , [ 2 , 1 , 3 ] ) ; % Es l a i n v e r s a de permute .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 89/215Matrices multidimensionales (III)Celdas multidimensionales: Se puede trabajar con ellas de forma similar acomo se trabaja con las matrices.>> A= { [ 1 , 2 ; 3 , 4 ] , hol a ; [ 1 , 2 , 3 ] , 2 }; % c e l da de dim( 22)>> B= { hol a , [ 1 , 2 , 3 ] ; 2 , 2}; % c e l da de dim ( 22)>> C= cat ( 3 , A, B) ; % c e l da de dim (222)Estructuras multidimensionales: Se puede trabajar con ellas de la formasimilar a como se trabaja con matrices.>> c l a s e ( 1 , 1 , 1) . al um= pepe ; c l a s e ( 1 , 1 , 1) . not a =10;>> c l a s e ( 1 , 1 , 2) . al um= j uan ; c l a s e ( 1 , 1 , 2) . not a =10;>> c l a s e= s queeze ( c l a s e ) ; % Se r educe a dos di me ns i one s.>> c l a s e . al um % Muestra l o s nombres de t odos l o sal umnos .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 90/215Funciones para estructuras y celdas (I)Funciones especicas para structuras.Funcion Descripciongetfield() Muestra los campos de la estructura.isfield() Verdadero si un campo de la estructura.isstruct() Verdadero si es una estructura.rmfield() Borra el campo marcado de la estructura.setfield() Cambia los contenidos de campo.struct() Crea o convierte en una matriz de estructuras.struct2cell() Convierte una matriz de estructuras en celdas.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 91/215Funciones para estructuras y celdas (II)Ejemplos de funciones para estructuras,>> c l a s e ( 1) . al um= pepe ; c l a s e ( 1) . not a =10;>> c l a s e ( 2) . al um= j uan ; c l a s e ( 2) . not a =10;>> c l a s e ( 3)= s t r u c t ( al um , j o s e , not a , 7) % Otraf orma de d e f i n i r>> g e t f i e l d ( c l a s e ) % Muestra l o s campos de c l a s e>> i s s t r u c t ( c l a s e ) % Af i r ma t i v o>> i s f i e l d ( c l a s e , not a ) % Af i r ma t i v o>> r mf i e l d ( c l a s e , not a ) % El i mi na campo not a .>> s e t f i e l d ( c l a s e , al um , pepe ) ; % I nt r oduc e pepe en campo al um>> p= s t r u c 2 c e l l ( c l a s e )>> % Pone un el ement o de s t r u c t en una col umna de l ac e l da .>> % De un v e c t or e s t r u c t u r a s a l e una mat r i z de c e l d a sA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 92/215Funciones para estructuras y celdas (III)Funciones especicas de celdas.Funcion Descripcioncell() Crea una matriz de celda.cell2struct() Convierte celdas en estructuras.celldisp() Muestra el contenido de la celda.cellfun() Aplica una celda funcion a matriz.cellplot() Muestra una graca de la celda.iscell() Verdadero en caso de que sea celda.num2cell() Conversi on de matriz numerica en celda.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 93/215Funciones para estructuras y celdas (IV)Ejemplos de funciones de estructuras.>> a= c e l l ( 2 , 2) % Se c r e a una c e l da v a c a .>> a={ pepe , j uan ; 10 , 10}; %Se l l e n a c e l da>> i s c e l l ( a ) % Af i r ma t i v o>> c e l l d i s p ( a ) % Muestra e l c ont e ni do de l a c e l da>> c e l l p l o t ( a ) % Muestra e l c ont e ni do en vent ana .>> c e l l f u n ( i s r e a l , a ) % Di f e r e n t e s f unc i o ne sa p l i c a d a s a c e l d a s .>> c e l l 2 s t r u c ( a , { al um , not a }) % Pasa de c e l da ae s t r u c t u r a .>> %Toma l o s campos por f i l a s .>> num2cel l ( [ 1 , 2 ; 3 , 4 ] ) % Conv i e r t e mat r i z en c e l da .A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 94/215Practicas con matrices, celdas, estructuras y ficherosEscribir un chero Fichero Bejer3.m las siguientes operaciones:Generar una matriz aleatoria de dimensiones {10 5 20}.Obtener la matriz correspondiente a la segunda pagina.Obtener el vector correspondiente a la la 2, columna 3.Obtener una celda cuyos componentes sean los elementos de la matriz.Agregar dicha celda al campo datos de una estructura. Introducir otrocampo llamado nombre que corresponda a una cadena de caracteres.Salvar la matriz, celda y estructura en un chero de nombre datos.dat.Salvar los elementos de la matriz en un chero binario usando fwrite().Recuperar dichos datos e introducirlos en una matriz de dimension{5 10 20}.Meter la primera pagina de esta matriz en un chero de texto con formato5 datos por lnea.Recoger estos datos lnea a lnea y reconstruir la matriz.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 95/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 96/215Funciones para graficas en dos dimensiones (I)Funcion Comentariofigure Crea una gurasubplot Crea varios ejes en la misma gurahold Superpone diferentes plotsplot Plot linealloglog Plot logartmicosemilogx, semilogy Plot semilogartmico en eje x e yxlim, ylim , zlim Margenes en cada uno de los ejestit, xlabel, ylabel Texto en ttulo y ejeslegend, text, gtext A nadir texto en guraginput Marcar posicion en guragrid, box Mallado y caja en guraA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 97/215Funciones para graficas en dos dimensiones (II)Funcion Comentariobar, bar3, bar3h Gracas de barraserrorbar Gracas con barras que marcan el errorcompass Gracas en forma de compasezplot, ezpolar Graca sencillas de funcionesfplot Gracas de funcioneshist, pareto Histograma y carta de paretopie, pie3 Pastel de dos o tres dimensionesstem, stairts Gracas con impulsos y escalerasscatter, plotmatrix Gracas de dispersion de datos y matricesA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 98/215Ejemplos con graficos de dos dimensiones, Escript1.m (I)Barras:>> x= 2 . 9 : 0 . 2 : 2 . 9 ; bar ( x , exp(x . x ) ) ;>> bar h ( x , exp(x . x ) ) ;>> y= round ( r and ( 5 , 3) 10) ;>> bar ( y , gr oup ) ; bar ( y , s t ac k ) ;Histogramas:>> y= r andn (1 e4 , 1) ; h i s t ( y ) ; h i s t ( y , 20) ;Pasteles:>> x =[ 1 , 3 , 0 . 5 , 2 . 5 , 2 ] ; pi e ( x ) ;Escaleras:>> x= 3: 0. 1: 3; s t a i r s ( x , exp(x . 2) ) ;Barras con error:>> x= 4: . 2: 4; y= (1/ s q r t (2 pi ) ) exp(( x . 2) /2) ;>> e=r and ( s i z e ( x ) ) /10;>> e r r o r b a r ( x , y , e ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 99/215Ejemplos con graficos de dos dimensiones, Escript1.m (II)Puntos:>> y=r andn ( 50 , 1) ; stem( y ) ;Histograma de los angulos.>> y= r andn ( 1000 , 1) pi ; r os e ( y ) ;Representaci on de n umeros complejos:>> z= e i g ( r andn ( 20 , 20) ) ; compass ( z ) ;>> f e a t h e r ( z ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 100/215Graficas para funciones y complementos (I), Escript2.m.Gracas funciones: plot() para n umeros, ezplot(), fplot() parafunciones:>> x= 0 : 0 . 0 5 : 1 0 ; y= s i n ( x ) . exp ( 0.4 x ) ;>> f i g u r e ;>> s ubpl ot ( 3 , 1 , 1) ; p l o t ( x , y ) ; t i t l e ( p l o t ) ;>> s ubpl ot ( 3 , 1 , 2) ;>> e z p l o t ( s i n ( x ) . exp ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( e z p l o t ) ;>> s ubpl ot ( 3 , 1 , 3) ;>> f p l o t ( s i n ( x ) . exp ( 0.4 x ) , [ 0 , 1 0 ] ) ; t i t l e ( f p l o t );subplot(n,m,p) divide la graca en n m partes y va a la p.Texto y ejes en las gracas: Ttulos, legendas, cajas, mallado:>> di s p ( Texto y e j e s en g r a f i c a s : )>> t= 0 : 0 . 1 : 2 pi ; r=s i n (2 t ) . cos (2 t ) ;>> f i g u r e ; s ubpl ot ( 2 , 1 , 1) ; p o l a r ( t , r ) ;>> t i t l e ( p o l a r )>> s ubpl ot ( 2 , 1 , 2) ;>> f p l o t ( [ s i n ( x ) , s i n (2 x ) , s i n (3 x ) ] , [ 0 , 2 pi ] , , o , ) ;>> t i t l e ( f p l o t )>> l e ge nd ( s i n ( x ) , s i n (2 x ) , s i n (3 x ) ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 101/215Graficas para funciones y complementos (II), Escript2.m.>> di s p ( T t ul o , nombre en e j e s , l egenda : )>> x= l i n s p a c e ( 0 , 2 , 30) ; y= s i n ( x . 2) ; f i g u r e ; p l o t ( x , y ) ;>> t e x t ( 1 , . 8 , y=s i n ( x 2) ) ; x l a b e l ( Ej e X ) ; y l a b e l ( Ej e Y );>> t i t l e ( Gr a f i c o s e n o i d a l ) ;>> di s p ( Subpl ot , tama no de l e t r a , tama no e j e s , caj a , g r i d : )>> x =0: . 1: 4 pi ; y= s i n ( x ) ; z=cos ( x ) ;>> f i g u r e ; s ubpl ot ( 1 , 2 , 1) ; p l o t ( x , y ) ;>> a x i s ( [ 0 , 2 pi , 1 , 1] ) ;>> s e t ( gca , Font Si z e , 12) ;>> g r i d on ; box on ;>> t i t l e ( s i n ( x ) , FontWei ght , bol d , Font Si z e , 12) ;>> s ubpl ot ( 1 , 2 , 2) ; p l o t ( x , z ) ;>> a x i s ( [ 0 , 2 pi , 1 , 1] ) ; g r i d on ; box on>> s e t ( gca , Font Si z e , 12) ;>> t i t l e ( cos ( x ) , FontWei ght , bol d , Font Si z e , 12) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 102/215Funciones para graficas en tres dimensiones.Funcion Comentarioplot3 Plot lineal en tres dimensionesmesh, meshc, meshz Plot de mallados en tres dimensionessurf, surfc, surfl Plot de superecie en tres dimensionesmeshgrid, ndgrid Preparacion de datos para gracas de superciehidden Ocultar lneas y supercies ocultascontour, contour3 Curvas de niveltrimesh, trisurf Plot de mallado triangularscatter3, stem3 Diagramas de dispersi on y impulsos en 3 dimensionesslice Gracos de volumensurfnorm Normales de las superciesquiver3 Puntos y normales en vectorespatch Parches de superciesA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 103/215Ejemplos de graficas en tres dimensiones, Escript3.m (I)Graca de tres dimensiones por puntos:>> t= 0: pi /50: 10 pi ;>> f i g u r e ; pl ot 3 ( s i n ( t ) , cos ( t ) , t ) ; g r i d on ; a x i s s quar e>> f i g u r e ; pl ot 3 ( s i n ( t ) , cos ( t ) , t , , cos ( t ) , s i n ( t ) , t , ) ;Graca de tres dimensiones por polgonos:>> z =0: 0. 01: 8; x=cos ( z ) ; y=s i n ( z ) ;>> f i g u r e ; f i l l 3 ( x , y , z , r ) ;Gracas de tres dimensiones con barras:>> f i g u r e ; y= c ool ( 7) ;>> s ubpl ot ( 1 , 3 , 1) ; bar 3 ( y , 0 . 2 , det ached ) ;>> s ubpl ot ( 1 , 3 , 2) ; bar 3 ( y , gr ouped ) ;>> s ubpl ot ( 1 , 3 , 3) ; bar 3 ( y , 0 . 1 , s t ac ke d ) ;Gracas de tres dimensiones con puntos con base:>> f i g u r e ; x= l i n s p a c e ( 0 , 1 , 10) ;>> y=x . / 2 ; z=s i n ( x )+s i n ( y ) ;>> stem3 ( x , y , z , f i l l ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 104/215Ejemplos de graficas en tres dimensiones, Escript3.m (II)Supercies tres dimensiones y contornos en dos y tres:>> [ X, Y]= mes hgr i d ( 7 . 5 : . 5 : 7 . 5 ) ;>> Z= s i n ( s q r t (X.2+Y. 2) ) . / s q r t (X.2+Y. 2) ;>> s u r f (X, Y, Z) ; f i g u r e ; s u r f c (X, Y, Z) ;>> f i g u r e ; s u r f l (X, Y, Z) ;>> cont our (Z) ; cont our 3 (Z, 50) ;Supercie con velocidad:>> f i g u r e ; [ U, V,W]= s ur f nor m (X, Y, Z) ;>> qui v e r 3 (X, Y, Z, U, V,W, 0 . 5 ) ;Contornos:>> [ X, Y]= mes hgr i d ( 2: . 2: 2 , 2: . 2: 3) ; Z= X. exp(X.2Y. 2) ;>> cont our (X, Y, Z) ; f i g u r e ; cont our (X, Y, Z, 50) ;>> f i g u r e ; c ont our f (X, Y, Z) ;Cambio de color y perspectiva:>> f i g u r e ; s phe r e ( 16) ; a x i s s quar e ; s hadi ng f l a t ;>> s e t ( gca , Zl i m , [ 0. 6 , 0. 6] ) ; s e t ( gcf , Col or , w ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 105/215Ejemplos de graficas en tres dimensiones, Escript3.m (III)Rotaci on de la gura:>> h= s u r f ( peaks ( 20) ) ; r o t a t e ( h , [ 1 , 0 , 0 ] , 1 5 ) ;>> vi ew ( [ 1 0 , 1 0 ] ) ;Mallado triangular de la base, no homogeneo. Supercie en funci on deese mallado:>> f i g u r e ; x= r and ( 1 , 50) ; y= r and ( 1 , 50) ;>> z= peaks (6x 3, 6x3) ;>> t r i = del aunay ( x , y ) ; t r i me s h ( t r i , x , y , z ) ;>> f i g u r e ; t r i s u r f ( t r i , x , y , z ) ;Representaci on en cuatro dimensiones, la cuarta es el color:>> f i g u r e ; l oad wi nd ; cav= c u r l ( x , y , z , u , v , w) ;>> s l i c e ( x , y , z , cav , [ 9 0 , 1 3 4 ] , [ 5 9 ] , [ 0 ] ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 106/215Practicas funciones para graficasEscribir en un chero Fichero Cejer1.m el c odigo para obtener lassiguientes gracas,Visualizar sobre el rango 2 a 2 la funci on v = ex2y2z2.Representar en el intervalo [8, 8] la funcion f (x) = x3x24.Gracar sobre los mismos ejes las funciones bessel (1, x), bessel (2, x) ybessel (3, x) para valores entre 0 y 12, separados uniformemente entres dos decimas. Colocar tres leyendas y tres tipos de trazo diferentes(normal, asteriscos y crculos) respectivamente para las tres funciones.Representar la curva en polares r = 4(1 + cos(a)) para a entre 0 y 2(cardiode). Representar tambien la curva en polares r = 3a para a entre4 y 4 (espiral).Representar la curva alabeada de coordenadas parametricas x = cos2(t),y = sin(t) cos(t) y z = sin(t) para t entre 4 y 4.Escribir en un chero Fichero Cejer2.m el c odigo para obtener lassiguientes gracas,Representar la supercie, su graco de malla y su graco de contornocuya ecuacion es la siguiente:x = xex2y22 < x, y < 2Representar en un graco de curvas de nivel con 20 lneas la supercie dela ecuacion z = sin(x) sin(y) con 2 < x, y < 2.Representar el paraboloide x2+ y2seccionado por el plano z = 2.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 107/215Contenidos1 Introduccion2 Programaci on con Matlab3 Optimizaci on del c odigo de programacion4 Gracas en dos y tres dimensiones5 Programaci on orientada a objetos6 Simulaci on en Matlab y Simulink7 GUIDE: Interface graco de matlab8 Funciones para tratamiento de datos9 Funciones para algebra de matrices10 Filtros y analisis en frecuencia11 Funciones para polinomios e interpolaci on de datos12 Funciones de funciones: Optimizaci on e integraci on13 BibliografaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 108/215Definicion de clase y objetoUna clase es un nuevo tipo de dato, a una estructura, para el que sepueden denir funciones especicas y redenir los operadores.Un objeto es un caso particular de una clase.Los campos de la estructura asociada a una clase se llamaran propiedadesde la clase, y las funciones asociadas a una clase funciones metodo.>> s= t f ( s ) ; % Cl as e t f , obj e t o s .>> P= 1/( s +1) ; % Oper ador + y / r e d e f i n i d o s par a P>> K= zpk ( [ ] , [ 1 , 2] , 1) ; % Cl as e zpk , obj e t o K>> bode (P) ; % bode metodo de l a c l a s e t f Caractersticas de la programaci on a objeto:Redenicion de operadores especcos para la clase.Datos encapsulados: Las propiedades de un objeto no son visibles y solose puede acceder a ellas desde las funciones metodo de la clase.Herencia: Una clase se puede crear a partir de otra, heredando todas susfunciones metodo. Las clases tf, zpk y ss derivan de la clase lti.Agregacion: Un objeto puede contener otros objetos.Toda la informaci on de una clase, tf, esta en el directorio asociado @tf.Las propiedades de clase usada quedan en memoria. Se deben limpiarpara poder modicarlas,>> c l e a r t fA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 109/215Funciones metodo principales (I)Constructor: Genera un objeto a partir de datos.>> P= t f ( 1 , [ 1 , 2 , 3 ] ) ; % Cons t r uc t or t f , obj e t o P.>> K= zpk ( [ ] , [ 1 , 2] , 1) ; % Cons t r uc t or zpk , obj e t o K>> Pzpk= zpk (P) ; %P obj e t o t f , Pzpk obj e t o zpk >> i s a (P, t f ) % a f i r ma t i v o>> i s a (P, zpk ) % ne ga t i v o>> P % Ll ama a f unc i on di s pl a y Visualizador: Metodo display que muestra la informaci on del objeto.>> P % Ll ama a f unc i on di s pl a y de t f >> Pzpk % Ll ama a f unc i on di s pl a y de zpk A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 110/215Funciones metodo principales (II)Obtenci on de informaci on:General: Metodo get(), muestra propiedades del objeto.>> get (P)Por ndices: Metodo B=subref(A,S)>> P. num{1} %A=P, S( 1) . t ype = . , S( 1) . t ype = {} ,>> %S( 1) . s ubs ={num } , S( 2) . s ubs ={1}Introducci on de informaci on:General: Metodo set(), cambia propiedades del objeto.>> s e t (P, num , [ 1 , 2 ] )Por ndices: Metodo A= subsasign(A,S,B)>> P. num{1}= 1 %A=P, S( 1) . t ype = . , S( 2) . t ype ={} >> %S( 1) . s ubs ={num } , S( 2) . s ubs ={1}, B=1A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 111/215Redefinicion de operadores (I)Operacion M-chero Descripciona + b plus(a,b) Sumaa - b minus(a,b) Resta-a uminus(a) Menos unitario+a uplus(a) Mas unitarioa.*b times(a,b) Multiplicaci on por elementoa*b mtimes(a,b) Multiplicaci on matriciala./b rdivide(a,b) Divisi on derecha por elementoa.\b ldivide(a,b) Divisi on izquierda por elementoa/b mrdivide(a,b) Divisi on matricial derechaA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 112/215Redefinicion de operadores (II)Operacion M-chero Descripciona\b mldivide(a,b) Divisi on matricial izquierdaa.^b power(a,b) Potencia por elementoa^b mpower(a,b) Potencia matriciala < b lt(a,b) Menor quea > b gt(a,b) Mayor quea = b ge(a,b) Mayor que o igual aa ~= b ne(a,b) Distinto dea == b eq(a,b) Igual aa & b and(a,b) Y l ogicoa | b or(a,b) O logicoA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 113/215Redefinicion de operadores (III)Operacion M-chero Descripcion~a not(a) NO l ogicoa:d:b colon(a,d,b) Operador dos puntosa:b colon(a,b)a ctranspose(a) Traspuesta conjugada complejaa. transpose(a) Matriz transpuestadisplay(a) Visualizaci on pantalla[a b] horzcat(a,b,...) Concatenaci on horizontal[a; b] vertcat(a,b,...) Concatenaci on verticala(s1,s2,...sn) subsref(a,s) Referencia por subndicesa(s1,...,sn) = b subsasgn(a,s,b) Asignamiento por subndices(a) subsindex(a) Conversi on al ser ndiceA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 114/215Prioridades y ejemplosPrioridades entre objetos ante metodos y operadores:Un objeto creado tiene prioridad sobre una variable de Matlab,>> P= 1/( s +1) ; % oper ador / y + de c l a s e t f .Entre dos objetos creados hay que asignar prioridades,>> i n f e r i o r t o ( c l a s s 1 , c l a s s 2 , . . . )>> s u p e r i o r t o ( c l a s s 1 , c l a s s 2 , . . . )Ejemplo de objetos, metodos y operadores:>> s= t f ( s ) % Cons t r uc t or>> P( 1)= 1/( s +1) ; % Oper ador es / , + , metodo s ubs as i gn >> P( 2)= 1/( s +2) ;>> K= P( 1) % metodo s ubs r e f A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 115/215Ejemplo: Una clase de polinomios (I)Objetivos: Se pretende realizar una clase para trabajar con polinomios.Para ello se denen las siguientes funciones metodo:Metodo constructor polynom: Se crea un objeto a partir de loscoecientes del polinomio.Metodo double: El polinomio se podra convertir a un vector.Metodo display: El objeto se vera en la pantalla en forma de cadena decaracteres.Sobrecarga de operadores: Los operadores suma (+), resta (-) ymultiplicacion (*) son redenidos para polinomios.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 116/215Ejemplo: Una clase de polinomios (II)Metodo constructor,f u n c t i o n p = pol ynom( a )% pol ynom Cons t r uc t or de l a c l a s e pol ynom .% p = pol ynom( v ) c r e a un pol i nomi o de un v e c t or .% Los c o e f i c i e n t e e s t an en or den d e c r e c i e n t e% de l a s po t e nc i a s de x .i f na r gi n == 0p . c = [ ] ;p = c l a s s ( p , pol ynom ) ;e l s e i f i s a ( a , pol ynom )p = a ;e l s ep . c = a ( : ) . ;p = c l a s s ( p , pol ynom ) ;endA. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 117/215Ejemplo: Una clase de polinomios (III)Metodo display:f u n c t i o n d i s p l a y ( p)% pol ynom\ d i s p l a y . Comando vent ana par a v e r e l obj e t o .di s p ( i n t 2 s t r ( p . c ) ) ;Metodo double:f u n c t i o n c = doubl e ( p)% pol ynom\ doubl e . Conv i e r t e pol ynom a un v e c t or doubl e .% c = doubl e ( p) . Conv i e r t e un pol i nomi o en v e c t or .c = p . c ;Operador +:f u n c t i o n r = pl us ( p , q)% pol ynom\ pl us . Def i ne p + q par a pol i nomi os .p = pol ynom( p) ; q = pol ynom( q) ;k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;r = pol ynom ( [ z e r os ( 1 , k ) p . c ] + [ z e r os (1, k ) q . c ] ) ;A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 118/215Ejemplo: Una clase de polinomios (IV)Operador -:f u n c t i o n r = mi nus ( p , q)% pol ynom\mi nus . I mpl ementa p q e nt r e pol i nomi os .p = pol ynom( p) ; q = pol ynom( q) ;k = l e ngt h ( q . c ) l e ngt h ( p . c ) ;r = pol ynom ( [ z e r os ( 1 , k ) p . c ] [ z e r os (1, k ) q . c ] ) ;Operador *:f u n c t i o n r = mti mes ( p , q)% pol ynom\mti mes . I mpl ementa p q e nt r e pol i nomi os .p = pol ynom( p) ;q = pol ynom( q) ;r = pol ynom( conv ( p . c , q . c ) ) ;Ejemplo de su uso en workspace:>> p= pol ynom % Crea un obj e t o v a c i o>> p= pol ynom( p) % Devuel ve e l obj e t o que s e manda>> p= pol ynom ( [ 1 , 2 , 3 ] ) % Crea un obj e t o p l l e n o>> q= p+p>> t= qp>> a= doubl e ( p)A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 119/215Clases derivadas: Herencia (I)Muchas veces se desea crear una nueva clase con las mismas propiedadesy funciones metodos que otra ya existente a la que se a naden nuevaspropiedades y funciones metodo.Esto se puede conseguir a nadiendo un objeto de la clase existenteClasePadre en la denici on de la nueva clase.Los objetos de la nueva clase seran ObjetoHijo, y los de la claseexistente ObjetoPadre.Un ObjetoHijo puede acceder a todos las funciones metodo de laClasePadre que no esten denidos en su clase.La forma de denir un objeto hijo es la siguiente:Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj et oPadr e ) ;Con esta denici on Matlab crea un componenteObjetoHijo.ClasePadre donde se guardara la informacion de la partedel ObjetoHijo con las mismas propiedades que el ObjetoPadre.A. Herreros, E. Baeyens, DISA/EII (UVa) Curso de Programacion en Matlab y Simulink Curso 2010/2011 120/215Clases derivadas: Herencia (II)Un objeto hijo puede recibir herencia de varios objetos padres,Obj et oHi j o= c l a s s ( Obj et oHi j o , Cl a s e Hi j o , Obj etoPadr e1 ,Obj et oPadr e2 ) ;Una funcion metodo que no posea la ClaseHijo sera buscada en lasfunciones de la clase ClasePadre1 y de no ser encontrada entre las de laclase ClasePadre2.Un ejemplo muy sencillo de una clase derivada es el de una clase defunciones, cuyas propiedades son:Nombre de la funcion.Polinomio caracterstico.Esta claro que esta clase funcion puede ser propuesta como derivada dela clase polinomio polymon, a nadiendo a la misma una propiedad dondese escriba el nombre de la funci on.Todas las funciones metodo de la clase polynom pueden ser usadas en laclase funcion excepto el metodo constructor, el metodo display y elsubsref, que van a ser redenidos.Cuando los objetos funcion use funciones metodo de la


Recommended