Está en la página 1de 28

TUTORIAL DE INTRODUCCIN A MATLAB

Manuel Vargas Villanueva Este tutorial est basado en un trabajo original de: Manuel Berenguel Soria y Teodoro lamo Cantarero

Contenido

A MATLAB 1 INTRODUCCION 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introduccio n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Instalacio Primeros pasos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y s mbolos relacionados con el entorno . . . . . . . . . . n de datos. Uso de la ventana de comandos . . . . . . . Introduccio Variables de entorno y variables especiales . . . . . . . . . . . . . . Elementos de las matrices . . . . . . . . . . . . . . . . . . . . . . . . . . Operaciones con matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . lisis de datos . . . . . . . . . . . . . . . . Funciones orientadas al ana

1 1 2 4 4 6 7 8 9 10 10 11 12 14 14 14

1.10 Polinomios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s . . . . . . . . . . . . . . . . . . . . . . . . . . 1.11 Otras funciones de intere ficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.12 Gra 1.13 Programando en matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.13.1 Operadores l ogicos y relacionales . . . . . . . . . . . . . . . . . . . . . 1.13.2 Bucles y estructuras condicionales . . . . . . . . . . . . . . . . . . . . 1

CONTENIDO 1.13.3 Ficheros .m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.14 Resumen de los comandos de matlab . . . . . . . . . . . . . . . . . . . . 16 18

Cap tulo 1

A MATLAB INTRODUCCION
1.1 n Introduccio

En estas notas se pretende realizar una introducci on muy b asica a matlab, orient andola en el siguiente cap tulo al estudio de sistemas de control. En l neas generales, matlab es una herramienta interactiva basada en matrices para c alculos cient cos y de ingenier a (de hecho, el t ermino matlab procede de matrix laboratory). Desde el punto de vista del control, matlab se puede considerar un entorno matem atico de simulaci on que puede utilizarse para modelar y analizar sistemas. Permitir a el estudio de sistemas continuos, discretos, lineales y no lineales, mediante descripci on interna y externa, en el dominio temporal y frecuencial. matlab constituye un entorno abierto, para el cual numerosas paquetes espec cos adicionales (toolboxes) han sido desarrollados. En el caso que nos ocupa se utilizar a fundamentalmente el Control System Toolbox. Estos paquetes espec cos adicionales est an constituidos por un conjunto de funciones que pueden ser llamadas desde el programa y mediante las cuales se pueden realizar multitud de operaciones. Las referencias al Control System Toolbox se realizar an directamente en los ejemplos que acompa nan a estas notas. Las notas se centrar an fundamentalmente en aquellos aspectos y funciones que m as inter es tengan desde el punto de vista de control, instando al lector a que busque en el manual de usuario cualquier informaci on adicional que desee ([4], [3], [2]). Para el desarrollo de las mismas se ha utilizado asimismo, una serie de referencias b asicas en control: [1], [5], [6], [7], etc. 1

n Instalacio

1.2

n Instalacio

La forma normal en la que se encuentra el sistema una vez instalado es la siguiente (versi on 3.5.1):

\matlabr11\bin \extern \help \notebook \simulink \sys \toolbox \control \local \matlab \simulink \work

El n ucleo fundamental de matlab se encuentra en los subdirectorios BIN y MATLAB. En BIN se encuentran los programas ejecutables. El subdirectorio MATLAB contiene los cheros .m (aunque ser an explicados posteriormente, comentamos brevemente que consisten en cheros escritos a base de comandos de matlab y que realizan una funci on determinada), que contienen las funciones b asicas para el funcionamiento de matlab. En este sentido, es necesario comentar que matlab cuenta con dos tipos b asicos de funciones:

Funciones denominadas built-in functions: Son funciones que matlab tiene incorporadas internamente y por tanto no son accesibles al usuario.

Funciones llamadas m functions: Son funciones cuyo c odigo es accesible. Las que se encuentran en el subdirectorio MATLAB son las b asicas para el funcionamiento del sistema.

Como se desprende del arbol de directorios, los toolboxes se suelen instalar en forma de subdirectorios en el disco duro, colgando del subdirectorio TOOLBOX. En ellos se encuentran tambi en funciones .m orientadas al control de sistemas. Adem as, se pueden incorporar otros toolboxes (signal processing, image processing, robust control, non-linear control, system identification, etc), e incluso funciones propias del usuario.

A MATLAB INTRODUCCION

matlab\general matlab\ops matlab\lang matlab\elmat matlab\elfun matlab\specfun matlab\matfun matlab\datafun matlab\polyfun matlab\funfun matlab\sparfun matlab\graph2d matlab\graph3d matlab\specgraph matlab\graphics matlab\uitools matlab\strfun matlab\iofun matlab\timefun matlab\datatypes matlab\winfun matlab\demos simulink\simulink simulink\blocks simulink\simdemos toolbox\control toolbox\local

Comandos de prop osito general Operadores y caracteres especiales Constructores del lenguaje de programaci on Matrices elementales y manipulaci on matricial Funciones matem aticas elementales Funciones matem aticas especiales Funciones matriciales - algebra lineal num erica An alisis de datos y transformada de Fourier Interpolaci on y polinomios Funciones de funciones y m etodos para ODE Funciones para matrices dispersas Gr acos en dos dimensiones Gr acos en tres dimensiones Gr acos especializados Manipulaci on de gr acos Herramientas de interfaz gr aca de usuario (GUI) Cadenas de caracteres Funciones para entrada/salida de cheros Hora y fecha Tipos de datos y estructuras Ficheros de interfaz con Windows (DDE/ActiveX) Ejemplos y demostraciones Simulink Librer a de bloques de Simulink Ejemplos y demostraciones de Simulink Paquete de Control de Sistemas Librer a de funciones locales Tabla 1.1: Listado del comando help

Primeros pasos

1.3

Primeros pasos

Una vez arrancado matlab , se abre la ventana de comandos en la que aparece el prompt o l nea de comandos (representado con el s mbolo ). Este es el momento de comentar la existencia del comando m as famoso de cualquier aplicaci on: help. Introduciendo este comando aparecer an todas las citadas built-in functions, tanto las contenidas en el subdirectorio MATLAB, como otras contenidas en subdirectorios eventualmente a nadidos por el usuario (ver Tabla 1.1). Para obtener informaci on sobre cualquiera de las funciones se introduce help nombre-funci on. Ejemplo: help impulse (impulse es una funci on que calcula la respuesta impulsional de un sistema y que se encuentra en el control system toolbox). Una cuesti on importante a tener en cuenta es que matlab distingue entre may usculas y min usculas. En este sentido, los nombres de funci on se introducir an en min usculas. El comando demo permite obtener una demostraci on de las posibilidades de matlab.

1.4

Funciones y s mbolos relacionados con el entorno

Con el comando path puede comprobarse cu ales son las localizaciones de los cheros y programas con los que va a trabajar matlab, pudiendo a nadirse nuevos subdirectorios (incluso personales) a conveniencia. La forma m as c omoda de interactuar con dichas localizaciones es mediante la opci on File/Set-Path... en el men u de la ventana de comandos. Para poder usar cualquier funci on .m, como por ejemplo las contenidas en el paquete de control, bastar a con que el camino \matlabr11\toolbox\control est e incluido en el path de matlab (cosa que ocurrir a si el paquete se instal o adecuadamente). Por otro lado, matlab comienza trabajando, por defecto, en el subdirectorio matlabr11\work. Si queremos cambiar de directorio de trabajo en cualquier momento, podemos hacerlo con el comando cd camino. Puede utilizarse en nombre completo del comando si se desea: chdir. Cabe decir que todas las funciones .m que existan en el directorio de trabajo ser an localizadas sin necesidad de tener que incluir dicho directorio en el path de matlab. El comando pwd nos indica cu al es el directorio de trabajo actual. Para mostrar el contenido del directorio de trabajo, se pueden emplear los comandos dir o ls. El comando delete nombre-chero puede emplearse para eliminar un archivo del directorio de trabajo. Asimismo, se pueden realizar operaciones t picas de l nea de comandos del sistema operativo DOS, introduciendo el comando correspondiente precedido por el s mbolo !.

A MATLAB INTRODUCCION

Resulta interesante tener en cuenta que la l nea de comandos de matlab posee memoria y podemos recuperar comandos introducidos previamente, haciendo uso de las teclas de movimiento de cursor arriba y abajo. Para una localizaci on m as ecaz de alg un comando introducido previamente, podemos teclear los primeros caracteres del mismo antes de usar el cursor arriba y s olo buscar a entre los comandos ya introducidos aqu ellos cuyos primeros caracteres coincidan con los introducidos. Otra posibilidad que se ofrece es la de introducir varios comandos en una misma l nea de la ventana de comandos, separados por coma o punto y coma. Puede limpiarse el contenido de la ventana de comandos mediante la instrucci on clc. El s mbolo % sirve para introducir comentarios. Todo lo escrito desde ese s mbolo hasta el nal de la l nea ser a ignorado por el int erprete de matlab. El uso de comentarios puede no resultar demasiado interesante en la l nea de comandos, aunque s lo ser a cuando se est en escribiendo programas, como se ver a m as adelante. Si se quiere guardar toda la sesi on en un archivo, basta usar el comando diary nombrearchivo. Dicho archivo contendr a los comandos introducidos y los correspondientes resultados. Cuando no se quiera seguir almacenando la informaci on se introducir a diary off. Si se desean almacenar todas las variables de memoria en un chero, junto con sus valores actuales, se usa el comando save nombre-chero. Esto crea un chero binario en el directorio de trabajo actual con el nombre introducido y con extensi on .mat. Si no se da el nombre del chero, se crea uno llamado matlab.mat. En caso que se desee guardar en un chero con formato ascii, se introducir a en el comando un modicador: save -ascii nombre chero. Si s olo se quieren guardar una serie de variables, se introducir a save nombre-chero nombre-variables separadas por espacios. Para recuperar los cheros generados con el comando save se utilizar a load nombre-chero. El formato de visualizaci on en la ventana de comandos puede modicarse usando format: format long: Presentar a mayor n umero de decimales en pantalla al presentar los resultados en punto otante. format short: Es el modo por defecto, presenta un n umero de decimales menor. Este formato no afecta para nada a la precisi on de los c alculos, es sencillamente una cuesti on de visualizaci on. format compact: Deja menor n umero de l neas en blanco en la visualizaci on de los resultados, permitiendo dar cabida a m as informaci on previa en la ventana de comandos sin necesidad de hacer scroll. format loose: Es el modo por defecto, se dejan m as l neas de separaci on durante la visualizaci on. Tambi en puede modicarse el formato de visualizaci on a trav es de las opciones de men u: File/Preferences/General Para detener la ejecuci on de un comando, se usa Ctrl-C. La salida del sistema se efect ua al introducir quit o exit, o simplemente cerrando la ventana de comandos.

n de datos. Uso de la ventana de comandos Introduccio

1.5

n de datos. Uso de la ventana de comandos Introduccio

El elemento b asico en matlab es la matriz compleja de doble precisi on, estructura que abarca realmente todo tipo de datos, desde escalares tales como n umeros reales o complejos, hasta vectores o matrices de tama nos arbitrarios. Impl citamente se usa la notaci on matricial para introducir polinomios y funciones de transferencia, de la forma que se explicar a m as adelante. Por otro lado, si se dispone de una representaci on de un sistema lineal en el espacio de estados de la forma: x = Ax + Bu y = Cx + Du

bastar a con introducir los valores de los elementos de las matrices A, B , C y D, para tener descrito al sistema. Estos elementos se podr an introducir de la siguiente forma:

A=[1 0 2;2 2 0;0 0 1] B=[1, 0,0] C=[1 1 sqrt(2)] D=0;

A la vista de esta serie de comandos se pueden comentar varias cosas:

Si al nal de la introducci on de un comando cualquiera no se pone punto y coma (;), aparecer a expl citamente en pantalla el resultado de dicho comando. En caso contrario, el comando se ejecutar a pero no se mostrar a su resultado. Dicho resultado se habr a almacenado en la variable a la que se asigna o, si no se realiza asignaci on, se guardar a en una variable de entorno llamada ans. En caso de que se asigne a una variable, esta se crear a autom aticamente, sin necesidad de una declaraci on previa. Los elementos de cada la de una matriz se pueden introducir separados por espacios o por comas, indistintamente. Para separar las de una matriz se usa ; o un simple retorno de carro. Esta u ltima opci on puede facilitar muchas veces la visualizaci on de la matriz que se est a introduciendo. Para transponer matrices se usa el ap ostrofe. Los elementos de vectores y matrices pueden ser reales, complejos e incluso expresiones, como vemos en el caso del u ltimo elemento del vector C . Si se est a introduciendo un comando o conjunto de ellos cuya sintaxis sea muy larga, se puede continuar en la siguiente l nea introduciendo al nal de la actual tres puntos seguidos (...). Las variables a las que se asignan resultados, as como las variables de entorno, se almacenan en lo que se denomina el espacio de trabajo de matlab (workspace).

A MATLAB INTRODUCCION

En este caso, se han creado una serie de variables (en particular, matrices) mediante la introducci on expl cita de sus elementos en l nea de comandos. Otras formas de producir variables podr an ser: gener andolas mediante funciones y declaraciones, cre andolas en un archivo .m, carg andolas desde un archivo de datos externo mediante el comando load (bien se trate de cheros de datos ASCII o bien de cheros binarios con formato de datos de matlab .mat). Adem as de variables num ericas, escalares o matriciales, en matlab pueden usarse cadenas de caracteres. Para ello se delimita una secuencia de caracteres mediante ap ostrofes: cadena = ejemplo de cadena de caracteres Para hacer referencia a cualquiera de los caracteres que componen una cadena, podemos hacerlo como si de un vector se tratara (la forma de indexar vectores y matrices se ver a m as adelante).

1.6

Variables de entorno y variables especiales

Existen una serie de variables predenidas en matlab, son las siguientes:

ans: Contiene la respuesta (answer) del u ltimo comando ejecutado, cuando el resultado de dicho comando no se asigna expl citamente a ninguna variable. eps: Da el valor de la precisi on con la que la m aquina realiza las operaciones en punto otante. T picamente, esta precisi on es del orden de 1017 . pi: . i, j: 1. Constante imaginaria. inf: . Se trata de un valor excesivamente grande para ser almacenado. NaN: Not a number. Es el resultado que se proporciona si durante una operaci on se produce 0 , etc. una indeterminaci on, del tipo 0 , , 0 clock: Reloj. date: Fecha. flops: N umero de operaciones en punto otante realizadas hasta el momento.

El comando who muestra las variables existentes en el espacio de trabajo generadas por el usuario, pero no las variables especiales.

Elementos de las matrices

Para borrar alguna variable de memoria se utiliza clear nombre-variables separadas por espacios. Pueden borrarse todas las variables a la vez si no se especica ning un nombre a continuaci on del nombre del comando.

1.7

Elementos de las matrices

En este punto es importante comentar uno de los elementos m as potentes de matlab, que es el s mbolo :, que permite generar una secuencia, y en particular permitir a referenciar varios elementos de una matriz. Veamos algunos ejemplos en los que se usa este operador: 1:0.1:10 Generar a una secuencia comenzando por 1 hasta 10, cada elemento de la secuencia estar a separado del anterior en 0.1. 1:10 Si se obvia el valor central, la separaci on entre cada dos elementos de la secuencia ser a 1. [1:0.1:10] Si lo ponemos entre corchetes, estaremos generando un vector con los elementos de la secuencia. En la forma m as directa, los elementos de una matriz se referencian mediante A(i, j ), donde i y j son los ndices del elemento correspondiente. Podemos usar una secuencia que facilitar la indexaci on de m ultiples elementos, como en los siguientes ejemplos: A(1,2:3) dar a como resultado los elementos de las columnas 2 y 3 pertenecientes a la primera la. A(:,2) dar a como resultado todos los elementos pertenecientes a la segunda columna. L ogicamente, en estos casos, los elementos especicados como inicio, nal e incremento para producir la secuencia deben ser enteros. Otra forma de generar datos secuencialmente es usando los comandos linspace y logspace, su formato es: t = linspace(n1,n2,n); w = logspace(n1,n2,n); El comando linspace genera un vector desde n1 a n2 de longitud n, cuyos componentes poseen valores espaciados linealmente. Por su parte, logspace produce tambi en un vector de n elementos, pero sus valores est an espaciados logar tmicamente desde 10n1 a 10n2 . Este u ltimo comando resultar au til para la generaci on de escalas frecuenciales para el an alisis de sistemas mediante diagramas de Bode, Nyquist, etc.

A MATLAB INTRODUCCION

1.8

Operaciones con matrices

Las operaciones comunes con matrices son:

Suma: + Resta: Multiplicaci on: * Divisi on derecha / (x = b/A es la soluci on del sistema de ecuaciones x A = b. Es decir calcula la inversa de la matriz A y multiplica b por la derecha por dicha inversa) Divisi on izquierda \ (x = A \ b es la soluci on de A x = b. Es decir, igual que en el caso anterior, pero realiza la multiplicaci on de la inversa con b por la izquierda) Potenciaci on ^. Este operador permite, en particular, implementar otra forma de realizar la inversi on de una matriz: A^(-1). Conjugada traspuesta Cabe mencionar la potencia de los operadores /, \, y ^, puesto que si la matriz A no es cuadrada, autom aticamente se realiza el c alculo de su pseudoinversa, lo que equivaldr a a resolver el sistema de ecuaciones correspondiente por m nimos cuadrados. Las mismas operaciones que se han enumerado se pueden realizar elemento a elemento, anteponiendo un punto a cualquiera de los operandos anteriores. Como ejemplo, el siguiente comando realizar a el producto de cada elemento de la matriz A con su correspondiente de la matriz B (para que dicho producto sea realizable, obviamente, dichas matrices deben tener las mismas dimensiones): A .* B Adem as de los operadores anteriores, existen funciones tales como:

Trigonom etricas est andar: sin, cos, tan, asin, acos, atan, atan2 Trigonom etricas hiperb olicas: sinh, cosh, tanh, asinh, acosh, atanh Trascendentales: log, log10, exp, sqrt Manipulaci on de n umeros complejos: real: parte real de un escalar o de los elementos de una matriz. imag: parte imaginaria. conj: proporciona el conjugado de un escalar o la matriz conjugada a una dada.

10

lisis de datos Funciones orientadas al ana

C alculo del m odulo: abs permite calcular tanto el valor absoluto de un escalar real como el m odulo de un escalar complejo o el m odulo de un vector. Funciones t picas de matrices: det: determinante de una matriz inv, pinv: inversa y pseudoinversa eig: obtenci on de autovalores rank: rango de la matriz norm: norma de una matriz (norma 2, norma 1, norma innito, norma de Frobenius) trace: traza de la matriz diag: produce un vector conteniendo los elementos de la diagonal de una matriz, o si recibe un vector como par ametro, genera una matriz diagonal. tril: devuelve la matriz triangular inferior de una matriz dada triu: devuelve la matriz triangular superior de una matriz dada funciones para generar matrices: eye(n): produce una matriz identidad de dimensi on n n zeros(n,m): genera una matriz de ceros de dimensi on n m ones(n,m): genera una matriz de unos de dimensi on n m rand(n,m): permite generar una matriz de valores aleatorios, entre 0 y 1, de dimensi on n m A = [A11,A12;A21,A22]: podemos producir una nueva matriz por bloques, mediante su composici on a partir de submatrices ya existentes.

1.9

lisis de datos Funciones orientadas al ana

Se trata de funciones que operan con vectores. Si se aplican a matrices operan columna a columna. Permiten realizar an alisis sobre el conjunto de datos contenido en los vectores correspondientes, tales como calcular su valor m nimo, m aximo, media, mediana, desviaci on t pica, suma de los elementos de dicho vector, etc. min, max, mean, median, std, sum, prod, etc.

1.10

Polinomios

Esta es una secci on importante, dado que las funciones de transferencia de los sistemas se introducir an habitualmente en la forma numerador-denominador, los cuales ser an tratados

A MATLAB INTRODUCCION

11

como polinomios por matlab. En las demos que acompa nan a estas notas se podr an analizar numerosos ejemplos. Los polinomios se representan por vectores, cuyos elementos son los coecientes del polinomio en orden descendente. Por ejemplo, el polinomio s3 + 2s2 + 3s + 4 se representa: p=[1 2 3 4]; que muy bien podr a ser el denominador de una funci on de transferencia. Mediante la funci on roots se pueden encontrar las ra ces de esa ecuaci on: roots(p) De modo complementario, se puede calcular un polinomio a partir de sus ra ces usando la funci on poly: p2=poly([-1 -2]); Si el argumento de entrada a poly es una matriz, devuelve el polinomio caracter stico de la matriz (det(I A)) como un vector la. Un polinomio puede ser evaluado en un punto determinado usando polyval(p,s), donde p es el polinomio y s es el punto donde va a ser evaluado. Por ejemplo: p2=[1 3 2]; a=[1 2; 3 4]; polyval(p2,a) si se introduce, como en este caso, un vector o una matriz, en lugar de un valor individual, la evaluaci on se hace elemento a elemento. Podemos realizar c omodamente operaciones de multiplicaci on y divisi on de polinomios mediante las funciones conv y deconv, respectivamente: conv([1,2],[2,0])

1.11

s Otras funciones de intere

En esta secci on simplemente comentaremos, de forma r apida, la existencia de una serie de funciones muy u tiles en problemas de integraci on num erica (quad, quad8), soluci on de ecuaciones diferenciales (ode23, ode45 y muchos otros), importantes cuando se estudian los sistemas din amicos, ecuaciones no lineales (fmin, fsolve, etc.), interpolaci on (spline, etc.)...

12

ficos Gra

1.12

ficos Gra

matlab es muy potente a la hora de generar gr acos (sobre todo en sus u ltimas versiones), no s olo por la variedad de comandos que ofrece para ello, sino tambi en por la versatilidad de dichos comandos. En las demostraciones aparecer an varios tipos de gr acos. De momento, comentaremos los comandos fundamentales para la realizaci on de los mismos. En primer lugar, comandos gen ericos y comandos orientados a gr acos bidimensionales:

figure(n): Las representaciones de gr acos en matlab se realizan en ventanas gr acas. En un momento dado puede haber varias ventanas gr acas abiertas. La funci on figure se utiliza para abrir una nueva ventana gr aca que ser a numerada de acuerdo con el par ametro, o bien, si ya existe una ventana con ese n umero, se convertir a en la ventana gr aca activa, donde se realizar a la pr oxima representaci on gr aca. clf: Limpia la ventana gr aca activa. close(n): Para cerrar una ventana gr aca. close all cierra todas las ventanas gr acas. plot: es la funci on b asica de representaci on gr aca de datos en dos dimensiones. La representaci on se realiza en la ventana gr aca que est e activa en un momento dado. En caso de no haber ninguna, se crea una ventana gr aca nueva. Ejemplos de uso: plot(v): representa en el eje vertical los valores contenidos en el vector v , frente a los valores del ndice en el eje horizontal. plot(t,v): representa los valores del vector v frente a los del vector t. plot(t,A), plot(t,[v1,v2]): presentar a varias gr acas, puesto que cada columna de la matriz A es considerada como un vector a representar frente al vector t. En la segunda variante indicada, se consigue lo mismo mediante la agrupaci on de los vectores v 1, v 2 en una matriz. plot(t1,v1,t2,v2): En este caso tambi en se obtendr an dos gr acas, pero cada una de ellas tiene un conjunto de valores diferente para el eje horizontal. loglog: representaci on en escala logar tmica en ambos ejes. semilogx: representaci on en escala semilogar tmica, el eje vertical aparecer a en escala lineal. semilogy: representaci on en escala semilogar tmica, el eje horizontal aparecer a en escala lineal. polar: representaci on de datos dados en forma polar, es decir en lugar de dar un par de vectores de componentes horizontales y verticales, se dan los vectores conteniendo el vector de angulo y m odulo.

Cuando se representan varias curvas simult aneamente en una misma ventana gr aca, se utiliza una secuencia predenida de colores para aplicar uno diferente a cada una de ellas. Se puede

A MATLAB INTRODUCCION

13

cambiar manualmente el color que por defecto tendr a una determinada curva con la adici on de un par ametro: plot(t,y,r). En este ejemplo, en lugar de representarse la curva con el color por defecto (azul), aparecer a en color rojo. Para ver los c odigos de colores, puede consultarse la ayuda del comando plot. Tambi en pueden realizarse gr acos en tres dimensiones:

plot3(x,y,z): comando an alogo a plot para dibujar curvas, pero en tres dimensiones. mesh(x,y,Z): para dibujar supercies, Z debe ser una matriz con tantas las como longitud del vector x y tantas columnas como la longitud del vector y . Los puntos que se representan son: (x(i), y (j ), Z (i, j )). contour: representa en un plano horizontal las curvas de nivel de una supercie tridimensional.

Por otro lado, existen comandos que permiten a nadir determinados complementos a estos gr acos:

title: permite a nadir un t tulo a la gr aca xlabel: a nadir una etiqueta al eje horizontal de la gr aca ylabel: a nadir etiqueta al eje vertical grid: a nadir una rejilla axis: permite modicar los l mites de los ejes horizontal y vertical text: a nadir un texto en una posici on cualquiera de la gr aca gtext: igual que text pero permite seleccionar la ubicaci on del texto mediante el rat on.

Por otra parte, muchos de los elementos gr acos pueden manipularse como objetos que tienen una serie de propiedades asociadas. Por ejemplo: handlePlot = plot(x,y); con este comando estamos asignando el objeto de tipo plot a una variable. Podemos ver las propiedades asociadas a un objeto mediante la funci on get(handlePlot), o bien especicar alguna de ellas: get(handlePlot,LineStyle). Cualquiera de las propiedades de un objeto pueden ser alteradas mediante la funci on set(handlePlot,Color,g). Por otra parte, tambi en se dispone de cierta capacidad de modicaci on de las gr acas mediante opciones de la propia ventana gr aca, en lugar de usar instrucciones desde la ventana de comandos.

14

Programando en matlab

1.13

Programando en matlab

matlab permite a la hora de programar una serie de elementos t picos para la modicaci on del ujo de una secuencia de instrucciones. La sintaxis es muy parecida a la de cualquier lenguaje de programaci on. Todos estos operadores se pueden usar en la ventana de comandos, en l nea, o en un chero .m.

1.13.1

Operadores l ogicos y relacionales

Permiten la comparaci on de escalares (o de matrices elemento a elemento). Si el resultado de la comparaci on es verdadero, devuelven un 1, en caso contrario devuelven un 0. Los operadores elementales son: < > menor que mayor que <= >= menor o igual mayor o igual == = igual no igual

Es importante no dejar espacios entre los operadores formados por dos s mbolos. Si los datos a comparar son matrices, la comparaci on se hace elemento a elemento, devolviendo una matriz binaria.

1.13.2

Bucles y estructuras condicionales

En esta secci on se explica una serie de comandos importantes a la hora de hacer un programa en matlab: for, while, if-else.

for La sintaxis de este comando es la siguiente: for variable = expresion hacer algo; end La expresion es un vector, una matriz o cualquier comando de matlab que produzca como salida un vector o una matriz. La ejecuci on se realiza una vez por cada elemento del vector o de una columna de la matriz. Tanto los bucles como las estructuras condicionales se terminan con end. Presentamos un primer ejemplo en el que la variable i toma los valores 10, 9, ..., 1:

A MATLAB INTRODUCCION for i=10:-1:1 kk(11-i)=i; end A continuaci on otro ejemplo en el que aparecen dos bucles anidados: x = [0:0.1:pi]; y = x; for f=1:length(x) for c=1:length(y) Z(f,c) = sin(x(f)).^2 + cos(y(c)).^2; end end mesh(x,y,Z);

15

Es importante evitar en lo posible el uso de bucles en matlab, ya que consumen mucho tiempo, pudi endose en muchos casos realizar las mismas operaciones de una forma m as eciente y compacta. Los siguientes ejemplos calculan logaritmos de n umeros desde 1 a 10.000. Se har a de diferentes maneras para comparar. Se utilizan los comandos clock (que devuelve la hora actual) y etime (que devuelve el tiempo en segundos que ha transcurrido entre dos instantes) para calcular el tiempo consumido en las operaciones. t1=clock; for i=1:10000, a(i)=log(i); end; e1=etime(clock,t1); t1=clock; ind=[1:10000]; for i=ind, a(i)=log(i); end;... e2=etime(clock,t1); t1=clock; a=zeros(1,10000); ind=[1:10000];... for i=ind, a(i)=log(i); end; e3=etime(clock,t1); t1=clock; ind=[1:10000]; a=log(ind); e4=etime(clock,t1); t1=clock; ind=[1:10000]; a=zeros(1,10000); a=log(ind); ... e5=etime(clock,t1); Los tiempos de computaci on para los diferentes m etodos son: 86.17 86.56 2.42 0.27 0.28

Las causas de la disminuci on importante de tiempos es que en los primeros m etodos, matlab tiene que recalcular la dimensi on del vector cada pasada por el bucle (importancia de las inicializaciones), y adem as usa bucles for, que como se ha indicado, consumen mucho tiempo. Esto por supuesto no quiere decir que no deban usarse, pues habr a ocasiones en que no haya m as remedio, pero siempre que haya una forma alternativa de hacerlo, esta ser a preferible al uso de bucles.

16 while

Programando en matlab

Permite implementar bucles condicionales. Su sintaxis es: while expresion hacer algo; end La expresi on es de la forma X operador Y, donde X e Y son escalares o expresiones que devuelven escalares y los operadores suelen ser operadores relacionales. En el siguiente ejemplo se busca una matriz aleatoria estable (parte real de autovalores negativa): A = randn(2); % Genera numeros aleatorios con distribucion normal while max(real(eig(A))) >= 0 A=randn(2); end; eig(A) Se puede usar el comando break para salir de un bucle en funci on de una determinada condici on. if, else, elseif La sintaxis es la siguiente: if expresion 1 hace algo elseif expresion 2 hace algo else hace algo end else y elseif son opcionales.

1.13.3

Ficheros .m

matlab puede ejecutar programas que se encuentren almacenados en cheros ASCII que pueden encuentrarse en alguno de los subdirectorios indicados en el camino de b usqueda o bien en el subdirectorio de trabajo actual y tengan adem as extensi on .m. Hay dos tipos de cheros .m: script les y function les Scripts Son cheros .m en los que se ponen secuencialmente comandos de matlab que se ejecutan en ese orden al introducir el nombre del chero .m (sin extensi on). Operan globalmente con

A MATLAB INTRODUCCION

17

los datos que se encuentran en la memoria. Los ejemplos que ilustran estas notas son en s script-les, pues llevan un conjunto de comandos matlab y comentarios. funciones Son tambi en cheros .m, pero a diferencia de los anteriores, se le pueden pasar argumentos y pueden devolver resultados. Por tanto utilizan variables globales que se pasan por valor. La mayor a de los cheros contenidos en los toolboxes son funciones. La sintaxis de todas las funciones almacenadas en cheros .m es la siguiente:

function [out1,out2,...] = nombre_fichero (in1,in2,...) % Comentarios adicionales para el help comandos de MATLAB return;

Una funci on puede tener m ultiples par ametros de entrada y salida. Numerosos ejemplos de funciones ser an utilizados en las demostraciones. Para nalizar, comentar que existen una serie de utilidades a la hora de programar en matlab. Las m as comunes son:

pause: Para la ejecuci on hasta que se pulsa una tecla. Puede usarse para pausar la ejecuci on durante un n umero de segundos determinado, en lugar de esperar a que se pulse una tecla: pause(n).

disp: Muestra una cadena de caracteres por pantalla.

input: Muestra una cadena de caracteres por pantalla y espera a que el usuario introduzca un valor, que generalmente ser a asignado a una variable.

18

Resumen de los comandos de matlab

1.14

Resumen de los comandos de matlab

= [ ] ( ) . ... , ; % : !

Caracteres especiales Instrucci on de asignaci on Usado para formar vectores y matrices Ver [ Precedencia aritm etica Ver ( Punto decimal La instrucci on contin ua en la siguiente l nea Separa ndices y argumentos de funci on Acaba las, suprime la impresi on Comentarios Indexaci on, generaci on de vectores Ejecuta instrucci on del sistema operativo Valores Especiales Respuesta cuando no se asigna la expresi on Precisi on 1 No N umero (Not-a -Number) Reloj Fecha N umero de operaciones N umero de argumentos de entrada de una funci on N umero de argumentos de salida de una funci on Archivos de disco Cambiar de directorio Borrar archivo Diario de la sesi on Directorio de archivos en el disco Cargar variables de un archivo Guardar variables en un archivo Mostrar funci on o archivo Mostrar archivos .m en el disco Escribir en un archivo Compactar memoria v a save

ans eps pi i,j inf NaN clock date flops nargin narout

chdir delete diary dir load save type what fprintf pack

A MATLAB INTRODUCCION Matrices especiales Compa nera Diagonal Identidad Esot erica Hadamard Hankel Hilbert Inversa de Hilbert Vectores igualmente espaciados Vectores logar tmicamente espaciados M agica cuadrada Dominio para puntos de malla Matriz constante de unos Pascal Elementos aleatorios Toeplitz Vandermonde Matriz de ceros

19

compan diag eye gallery hadamard hankel hilb invhilb linspace logspace magic meshdom ones pascal rand toeplitz vander zeros

rot90 fliplr flipud diag tril triu reshape :

n de matrices Manipulacio Rotaci on Invierte el orden de las columnas Invierte el orden de las las Diagonal Parte triangular inferior Parte triangular superior Reordena una matriz en otra Traspuesta Convierte una matriz en una columna simple gicas y relacionales Funciones lo Condiciones l ogicas Condiciones l ogicas Encuentra ndices de valores l ogicos Detecta NaNs Detecta innitos Detecta matrices vac as Detecta variables de cadena Compara variables de cadena

any all find isnan finite isempty isstr strcomp

20

Resumen de los comandos de matlab Control de flujo Ejecuta instrucciones condicionalmente Usado con if Usado con if Termina if, for, while Repite instrucciones un n umero de veces Repite instrucciones mientras una sentencia l ogica sea verdadera Sale de los bucles for y while Salida desde funciones Pausa hasta que se pulse una tecla Texto y cadenas Convierte cadena en valores ASCII Eval ua texto como instrucciones Convierte n umeros en cadenas Convierte enteros en cadenas Indicador de cadenas Convierte n umeros en cadenas Detecta variables de cadena Compara variables de cadena Convierte cadenas hexadecimales en n umeros n y archivos .m Programacio Obtiene n umeros desde el teclado Llamada al teclado como si fuera un archivo .m Muestra mensaje de error Dene funci on Eval ua texto en variables Eval ua funci on dada por una cadena Permite mostrar las instrucciones en pantalla Comprueba si las variables existen Sensibilidad a las may usculas Dene variables globales Archivo de inicializaci on Accede a una variable de entorno Genera un men u Tiempo gastado rica Ventana alfanume Limpia pantalla Mueve cursor al comienzo Establece el formato de salida Muestra matriz o texto Imprime n umero formateado Permite la muestra de las instrucciones

if elseif else end for while break return pause

abs eval num2str int2str setstr sprintf isstr strcomp hex2num

input keyboard error function eval feval echo exist casesen global startup getenv menu etime

clc home format disp fprintf echo

A MATLAB INTRODUCCION ficos Gra Gr aco lineal en el plano XY Gr aco logar tmico en el plano XY Gr aco semilogar tmico Gr aco semilogar tmico Gr aco polar Supercie de malla tridimensional Plano de contornos Dominio para gr acos de supercie Gr acos de barras Gr acos de escaleras A nade barras de errores n Gra fica Anotacio T tulo Anotaci on en eje x Anotaci on en eje y Dibuja cuadriculado Posiciona un texto arbitrariamente Posiciona un texto con el rat on input gr aco fica Control de la ventana gra Escalado manual de ejes Mantiene gr aco en pantalla Muestra la pantalla gr aca Limpia la pantalla gr aca Divide la pantalla gr aca Funciones elementales M odulo complejo Argumento complejo Ra z cuadrada Parte real Parte imaginaria Conjugado complejo Redondeo al entero m as cercano Redondeo hacia cero Redondeo hacia Redondeo hacia Funci on signo Resto Exponencial base e Logaritmo natural Logaritmo base 10

21

plot loglog semilogx semilogy polar mesh contour meshdom bar stairs errorbar

title xlabel ylabel grid text gtext ginput

axis hold shg clf subplot

abs angle sqrt real imag conj round fix floor ceil sign rem exp log log10

22

Resumen de los comandos de matlab tricas Funciones Trigonome Seno Coseno Tangente Arcoseno Arcocoseno Arcotangente Arcotangente de x/y Seno hiperb olico Coseno hiperb olico Tangente hiperb olica Arcoseno hiperb olico Arcocoseno hiperb olico Arcotangente hiperb olica

sin cos tan asin acos atan atan2 sinh cosh tanh asinh acosh atanh

bessel gamma rat erf inverf ellipk ellipj

Funciones especiales Funci on de Bessel Funci on gamma Aproximaci on racional Funci on de error Inversa de la funci on de error Integral completa el ptica de primera especie Integral el ptica de Jacobi

balance backsub cdf2rdf chol eig hess inv lu nnls null orth pinv qr qz rref schur svd

Descomposiciones y factorizaciones Forma equilibrada Sustituci on regresiva Convierte diagonales complejas en diagonales reales Factorizaci on de Cholesky Autovalores y autovectores Forma de Hessenberg Inversa Factores de la eliminaci on gaussiana M nimos cuadrados con restricciones Base ortonormal del n ucleo Base ortonormal de la imagen Pseudoinversa Factorizaci on QR Algoritmo QZ Forma escalonada reducida por las Descomposici on de Schur Descomposici on en valores singulares

A MATLAB INTRODUCCION Condicionamiento de matrices N umero de condici on en la norma 2 Norma 1, norma 2, norma de Frobenius, norma Rango Estimaci on de la condici on (inverso) Funciones matriciales elementales Matriz exponencial Matriz logaritmo Matriz ra z cuadrada Funci on arbitraria de matriz Polinomio caracter stico Determinante Traza Producto tensorial de Kronecker

23

cond norm rank rcond

expm logm sqrtm funm poly det trace kron

poly roots roots1 polyval polyvalm conv deconv residue polyfit

Polinomios Polinomio caracter stico Ra ces de polinomios - m etodo de la matriz compa nera Ra ces de polinomios - m etodo de Laguerre Evaluaci on de polinomios Evaluaci on de polinomio matricial Multiplicaci on Divisi on Desarrollo en fracciones parciales Ajuste por un polinomio lisis de datos por columnas Ana Valor m aximo Valor m nimo Valor medio Mediana Desviaci on t pica Ordenaci on Suma de elementos Producto de elementos Suma acumulativa de elementos Producto acumulativo de elementos Derivadas aproximadas Histogramas Coecientes de correlaci on Matriz de covarianza Reordena en pares complejos

max min mean median std sort sum prod cumsum cumprod diff hist corrcoef cov cplxpair

24

Resumen de los comandos de matlab ales Tratamiento de sen M odulo complejo Argumento complejo Convoluci on Coecientes de correlaci on Covarianza Deconvoluci on Transformada r apida de Fourier FFT 2-dimensional FFT inversa FFT inversa 2-dimensional Cambia las dos mitades de un vector n nume rica Integracio Funci on de integraci on num erica Funci on de integraci on num erica

abs angle conv corrcoef cov deconv fft fft2 ifft ifft2 fftshift

quad quad8

ode23 ode45

n de ecuaciones diferenciales Solucio M etodo Runge-Kutta de orden 2/3 M etodo Runge-Kutta-Fehlberg de orden 4/5 n Ecuaciones no lineales y optimizacio M nimo de una funci on de una variable M nimo de una funci on de varias variables Soluci on de un sistema de ecuaciones no lineales (ceros de una funci on de varias variables) Cero de una funci on de una variable n Interpolacio Spline c ubico Genera tablas 1-D Genera tablas 2-D

fmin fmins fsolve fzero

spline table1 table2

Bibliograf a
[1] R.H. Bishop. Modern Control Systems Analysis and Design Using matlab. AddisonWesley, 1993. [2] The MathWorks Inc. Control System Toolbox Users Guide. 1999. [3] The MathWorks Inc. simulink Users Guide, version 3. 1999. [4] The MathWorks Inc. Using matlab, version 5.3.1. 1999. [5] K. Ogata. Solving Control Engineering Problems with matlab, year=1994, publisher=Prentice Hall International Editions. [6] B. Shahian and M. Hassul. Control System Design using matlab, year=1993, publisher=Prentice Hall. [7] K. Sigmon. Introducci on a matlab, Segunda Edici on. Department of Mathematics, U. Florida. Traducido del ingl es por Celestino Montes, Dep. Matem atica Aplicada II, U. Sevilla, 1992.

25

También podría gustarte