Tutorial Matlab..Espanol
Tutorial Matlab..Espanol
Tutorial Matlab..Espanol
TUTORIAL DE MATLAB
1. QU ES MATLAB? 1.1 Uso de Matrices 1.2 Origen de MatLab 1.3 Plataformas 1.4 Productos
1
4 5 5 5 5
7
7 7 8 8 9 9 9 9 9 9 10 10 10 10 10 11 11 12 12 12 13 13 14 15 16 17 18 20
2.4 SYMBOLIC MATH TOOLBOX 2 . 5 O P T I M I Z A T I O N T O O LBOX 2 . 6 I M A G E P R O C E S S I N G TOOLBOX 2.7 Neural Network Toolbox 2.8 NON LINEA R C O N T R O L D E S I G N T O O L B O X 2.9 NAG FOUNDATION TOOLBOX 3. INICIANDO MATLAB
4. USO DE COMANDOS 4 . 2 I n s t r u c c i o n e s d e M A T L A B y V a r i a b les 4.3 Obteniendo Informacin del Espacio de Trabajo 4.4 Variables Permanentes 4.6 Saliendo y Guardando el Espacio de Trabajo 4. 7 M a n i p u l a c i n d e V e c t o r e s y M a t r i c e s 4.8 Operaciones de Matrices 4.9 Operaciones de Arreglos 4.10 Ejemplos: Operaciones Aritmticas 5 . P R O G R A M A N D O C O N MATLAB 5.1 Generalidades 5.1.1 A r c h i v o s -M : C o m a n d o s y F u n c i o n e s 5.1.2 Otras funciones 5.1.3 Declaracin function 5.2 Operadores relacionales 5.3 Operadores lgicos 5.4 Caracteres especiales 5.5 Control de flujo 5.5.1 Declaracin FOR simple 5.5.2 Declaracin FOR anidada. 5.5.3 Declaracin WHILE 5.5.4 D e c l a r a c i o n e s I F , E L S E , E L S E I F y B R E A K 5.6.1 C r e a c i n d e u n a m a t r i z 5.6.2 C a m b i o d e l o r d e n d e u n a m a t r i z : reshape 5.6.3 M o d i f i c a c i n i n d i v i d u a l d e e l e m e n t o s 5.6.4 M o d i f i c a c i o n e s a d i c i o n a le s d e u n a m a t r i z 5.7.1 Declaracin f o p e n Ejemplo 5.7.2 Declaracin f c l o s e 5.7.3 Declaracin f r e a d 5.7.4 Declaracin fwrite 5.7.5 Declaracin f p r i n t f 5.8 Variables globales 5.9 Vectorizacin de algoritmos y estructuras (for, while) 5.10 Grficas en Dos Dimensiones
20 22 23 23 23 24 25 28 29 33 33 33 37 41 41 42 43 44 44 45 46 47 50 50 50 51 57 57 57 57 58 58 58 59 60
COMANDO PLOT
Smbolo Color Smbolo Estilo de lnea 5.10.6 Comandos grficos 5.11 Grficos en 3 dimensiones 5.12 Archivos de disco 5.12.1 M a n i p u l a c i n d e A r c h i v o s d e D i s c o 5.12.2 Ejecutando Programas Externos 5.12.3 I m p o r t a n d o y E x p o r t a n d o D a t o s 5.13 INDICE ALFABETICO 6. S I M U L I N K 6.1 Acelerador de Simulink 6 . 2 Ge n e r a d o r d e c d i g o - C en Simulink 7. COMANDOS DE MATLAB 7.1 General purpose commands: C o n t r o l S y s t e m T o o l b o x C o m m a n d s:
60
60 61 63 66 73 73 73 73 74 75 77 77 78 78 81 2
8. APLICAN D O M A T L A B A L C O N T R O L DE PROCESOS 8.1 Respuesta en el dominio del tiempo 8.2 Respuesta en el dominio de la frecuencia 8.3 Lugar de las races 8.4 Controladores PID 9. TRUCOS EN MATLAB Paper semilogartmico gratis: papelbod.m
86 86 91 95 97 99 99
1. QU ES MATLAB?
MatLab e s u n p r o g r a m a i n t e r a c t i v o p a r a c o m p u t a c i n n u m r i c a y v i s u a l i z a c i n d e datos. Es ampliamente usado por Ingenieros de Control en el anlisis y diseo, posee adems una extraordinaria versatilidad y capacidad para resolver problemas en matemtica aplicada, fsica, qumica, ingenier a, finanzas y muchas otras aplicaciones. Est basado en un sofisticado software de matrices para el anlisis de sistemas de ecuaciones. Permite resolver complicados problemas numricos sin necesidad de escribir un programa. MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados clculos matemticos y la visualizacin grfica de los mismos. MATLAB integra anlisis numrico, clculo matricial, proceso de seal y visualizacin grfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribiran tradicionalmente, sin necesidad de hacer uso de la programacin tradicional. El nombre de MATLAB proviene de la contraccin de los trminos MATrix LABoratory y fue inicialmente concebido para proporcionar fcil acceso a las libreras LINPACK y EISPACK, las cuales representan hoy en dia dos de las libreras ms importantes en computacin y clculo matricial. M AT L A B e s u n s i s t e m a d e t r a b a j o i n t e r a c t i v o c u y o e l e m e n t o b s i c o d e t r a b a j o son las matrices. El programa permite realizar de un modo rpido la resolucin numrica de problemas en un tiempo mucho menor que si se quisiesen resolver estos mismos problemas con lenguajes de programacin tradicionales como pueden ser los lenguajes Fortran, Basic o C. MATLAB goza en la actualidad de un alto nivel de implantacin en escuelas y centros universitarios, as como en departamentos de investigacin y desarrollo de muchas c o m p a a s i n d u s t r i a l e s n a c i o n a l e s e i n t e r n a c i o n a l e s . E n e n t o r n o s universitarios, por ejemplo, MATLAB se ha convertido en una herramienta bsica, tanto para los profesionales e investigadores de centros docentes, como una importante herramienta para la imparticin de cursos universitarios, tales como sistemas e ingenieria de control, lgebra lineal, proceso digital de imagen, seal, etc. En el mundo industrial, MATLAB est siendo utilizado como herramienta de investigacin para la resolucin de complejos prob l e m a s planteados en la realizacin y aplicacin de modelos matemticos en ingeniera. Los usos ms caractersticos de la herramienta los encontramos en reas de computacin y clculo numrico tradicional, prototipaje algortmico, teora de c o n t r o l a u t o m tico, estadstica, anlisis de series temporales para el proceso digital de seal.
MATLAB dispone tambin en la actualidad de un amplio abanico de programas de apoyo especializados, denominados Toolboxes, que extienden significativamente el nmero de funciones incorporadas en el programa principal. Estos Toolboxes cubren en la actualidad prcticamente casi todas las reas principales en el mundo de la ingeniera y la simulacin, destacando entre ellos el 'toolbox' de proceso de imgenes, seal, control robusto, estadstica, anlisis financiero, matemticas simblicas, redes neurales, lgica difusa, identificacin de sistemas, simulacin de sistemas dinmicos, etc. Adems tambin se dispone del programa Simulink que es un entorno grfico interactivo con el que se puede analizar, modelizar y simular la dinmica de sistemas no lineales.
1.3 Plataformas
MatLab est disponible para una amplio nmero de plataformas: estaciones de trabajo SUN, Apollo, VAXstation y HP, VAX, MicroVAX, Gould, Apple Macintosh y PC AT compatibles 80386 o superiores. Opera bajo sistemas operativos UNIX, Macintosh y Windows.
1.4 Productos
La empresa MathWorks ofrece MatLab como su principal producto para c o m p u t a c i n n u m r i c a , a n l i s i s y v i su a l i z a c i n d e d a t o s . T a m b i n o f r e c e S i m u l i n k
como un anexo a MatLab y que interactua con l en lenguaje de MatLab y lenguaje de bajo nivel C. Simulink es usado para simulacin modelado no lineal avanzado. Se ofrecen adems numerosas herramientas especiales en "Toolboxes" para resolver problemas de aplicaciones especficas, por ejemplo control, procesamiento de seales, redes neurales, etc. Estas herramientas son colecciones de rutinas escritas en MatLab.
Diseo de filtros FIR mediante el algortmo p t i m o d e P a r k s -McClellan. Procesamiento de la transformada rpida de Fourier FFT, incluyendo la transformacin para potencias de dos y su inversa, y transformada para no potencias de dos.
Matrices elementales y manipulacin de vectores. Matrices especiales. Estadstica bsica y anlisis de datos. Polinomios e interpolacin. Gestin de cadenas de caracteres. Entradas y Salidas. Gestin de memoria y errores.
(Nota: Las funciones del tipo Handle Graphics no estn incluidas en la C Math Library).
2. Compilar el cdigo C fuente en cdigo objeto utilizando un compilador ANSI C. 3. Enlazar el cdigo resultante con la MATLAB C Math Library y con cualquier tipo de ficheros y prog ramas especficos que hayan sido previamente definidos por el usuario.
Polinomios e interpolacin
Interpolacin 1 - D y 2 - D. Construccin polinomial. Interpolacin por splines cbicos. Diferenciacin de polinomios. Evaluacin de polinomios. Multiplicacin y divisin de polinomios. Residuos de polinomios y residuos.
2.2.5 Utilidades
Gestin y mantenimiento de errores. Conversin de tipos de datos Fortran. Funciones de fecha y hora. Clasificacin de matrices. Conversin de n m e r o s a c a d e n a s y v i c e v e r s a .
2.2.6 Requerimientos
La libreria MATLAB C Math Library cumple con la normativa estndar ANSI para compiladores C. Finalmente, la librera trabajar con aquellos enlazadores suministrados con la mayora de compiladores ANSI C. que vienen
10
2. Pueden construirse aplicaciones que se ejecutaran independientemente de MATLAB. Estas aplicaciones externa s requieren de la MATLAB C Math Library, que est disponible separadamente.
Mediante la conversin automtica de ficheros M en cdigo C fuente, el compilador MATLAB elimina consumo de tiempo y la conversin manual de cdigo. T o d o e l p r o c e s o d e c o n v e r s i n , compilacin y enlazado se inicia a travs de una simple instruccin de MATLAB.
2. La instruccin MATLAB cmex llama al compilador y al enlazador del sistema para construir un fichero MEX objeto. 3. El intrprete de MATLAB enlaza automticamente la funcin de MATLAB como 'runtime'. Mientras se efecta una conversin de los ficheros M en ficheros MEX, el compilador realiza llamadas a las rutinas de la libreria C para muchas de las instrucciones contenidas en el propio ncleo de MATLAB. Existen algunas funciones, incluyendo las rutinas 'Handle Graphics', para las cuales se generan de nuevo llamadas 'c a l l b a c k s ' a M A T L A B . Pueden convertirse convenientemente ficheros M en cdigo fuente C para incorporarlos posteriormente en los ficheros externos desarrollados en lenguaje C, si ese es el caso. Esta opcin es ideal para usuarios que quieren sacar la m x i ma ventaja de MATLAB desde cualquier otra aplicacin o producir cdigo C eficiente a partir de los algoritmos desarrollados con MATLAB. Los desarrollos 11
del tipo 'stand-alone' requieren para ello de la MATLAB C Math Library. Obsrvese que las funciones grficas de MATLAB no estn incluidas. Para construir aplicaciones 'stand-alone' se debera seguir los siguientes pasos: 1. Utilizar el compilador de MATLAB para convertir ficheros M en C con la instruccin externa mcc - e.
12
MPW MrC V.1.0b2 o PPCC version 1.0.5 680x0 MacIntosh MPW C Versin 3.4 UNIX y VMS
Cualquier compilador ANSI C (Nota: El compilador de SunOS 4.1.X no es un compilador ANSI C). Cualquiera que sea el equipo informtico que vaya a utilizarse para desarrollar aplicaciones 'stand alone' se requiere, adems del compilador de MATLAB, que se tengan las MATLAB C Math Library y un compilador ANSI C.
Aritmtica de precisin variable: Evaluacin de expresiones matemticas con diversos grados de precisin. Resolucin de ecuaciones: Resolucin numrica y simblica de ecuaciones algebraicas y diferenciales. Funciones matemticas especiales: E v a l u a c i n d e l a m a y o r a d e l a s f u n c i o n e s utilizadas en matemticas aplicadas.
Existen dos versiones del mismo Toolbox. The Basic Symbolic Math Toolbox es una coleccin de ms de 50 funciones MATLAB las cuales permiten acceder al
13
kernel de MAPLE utilizand o l a S i n t a x i s y el estilo del lenguaje MATLAB. The Extended Symbolic Math Toolbox aumenta esta funcionalidad incluyendo todas las caractersticas de programacin de MAPLE, y el acceso a los paquetes de funciones de ms de veinte campos de las matemticas e s p e c i a l e s a p l i c a d a s . Es posible utilizar este Toolbox sin conocimiento previos de MAPLE, ya que los ficheros contenidos en l son totalmente autnomos. Sin embargo, si lo que se desea es obtener toda la potencia de clculo del entorno, ser necesario un a mplio conocimiento del manejo y la programacin de MAPLE
14
E l p r o c e s o d e i m g e n e s e s u n c a m p o d e t r a b a j o a b s o l u t a m e n te c r u c i a l p a r a aquellos colectivos e industrias que estn trabajando en reas como diagnstico mdico, astronoma, geofsica, ciencia medioambientales, anlisis de datos en laboratorios, inspeccin industrial, etc. Los programas actuales de procesado y anlisis de imgenes se clasifican actualmente en dos categoras: libreras de bajo nivel para programadores profesionales y paquetes de aplicacin con capacidades limitadas de personalizacin. Ambos tipos de aplicaciones estn, generalmente, pensados para ta reas bsicas de visualizacin de datos y 'rendering'. Sin embargo, muchos de ellos adolecen de la posibilidad de efectuar anlisis numricos de los mismos. El Image Processing Toolbox entra dentro de la categora de familias de funciones que, desde el ento rno de trabajo de MATLAB , permitir al profesional efectuar una exploracin exhaustiva y desde un punto de vista matemtico de las imgenes y grficos que se deseen tratar o analizar. Algunas de las funciones ms importantes incluidas dentro de este toolbo x s o n las siguientes: Anlisis de imgenes y estadstica. Diseo de filtros y recuperacin de imgenes. Mejora de imgenes. Operaciones morfolgicas. Definicin de mapas de colores y modificacin grfica. Operaciones geomtricas. Transformacin de imgenes. Proceso de bloques
15
Dentro de las aplicaciones bsicas de este toolbox, cabe destacar aquellas que estn orientadas a aquellas que se enmarcan dentro del campo de la industria aeroespacial y automocin (simulacin, sistemas de control, autopilotaje), banca, defensa (reconocimiento de patrones, procesamiento de seales, identificacin de imgenes, extraccin de caractersticas, compresin de datos), electrnica (control de procesos, anlisis de errores, modelado no lineal, sntesis de voz, visin por ordenador), economa (anlisis financiero, anlisis predictivo), industria (control de procesos, identificacin en tiempo real, sistemas de inspeccin), medicina, robtica (control de trayectorias, sistemas de visin), reconocimiento y sntesis del habla, telecomunicaciones (control de datos e imgenes, servicios de informacin automatizada, traduccin del lenguaje hablado en tiempo real, diagnosis, sistemas de enrutamiento), etc. El toolbox contiene muchos ejemplos de al g u n a s d e e s t a s a p l i c a c i o n e s .
17
siempre que se detecten determinadas variaciones en los componentes del sistema. El toolbox NCD es un componente avanzado del entorno integrado de desarrollo que ofrecen a los especialistas los programas MATLAB y SIMULINK. Por ello, los diseadores podrn beneficiarse de muchos de los toolboxes desarrollados para este entorno en materia de diseo de sistemas lineales. Por ejemplo, podrn utilizarse toolboxes para el anlisis de sistemas lineales para el diseo inicial; posteriormente, podrn utilizarse modelos no lineales ms sofisticados utilizando SIMULINK. Adems, puede invocarse NCD para un mejor ajuste paramtrico y para la optimizacin de los controladores. Este toolbox se encuentra actualmente disponible para una amplia va riedad de plataformas informticas, destacando ordenadores personales tipo PC o Apple MacIntosh, numerosas estaciones UNIX y ordenadores Digital VAX VMS.
18
Suma de series. Cuadraturas. Ecuaciones diferenciales ordinarias. Ecuaciones diferenciales en derivadas parciales. Estadstica no paramtrica. Anlisis de series temporales. Rutinas de clasificacin. Aproximacin de funciones especiales. Aproximacin de curvas y superficies. Maximizacin y minimizacin de funciones. Factorizacin de matrices. Valores y vectores propios. Resolucin de ecuaciones lineales simultneas. Ecuaciones lineales (LAPACK). Estadstica bsica. Anlisis de correlacin y regresiones. Mtodos multivariantes. Generacin de nmeros aleatorios.
19
3. INICIANDO MATLAB
Despus de ejecutar el programa MatLab desde el sistema operativo empleado, por ejemplo haciendo doble click sobre el icono de MatLa b e n a m b i e n t e s Windows, aparece el indicador de comandos el cual est listo para recibir instrucciones en lenguaje MatLab. Este indicador es de la siguiente forma: >> Al iniciar el uso de MatLab estn disponibles dos comandos de ayuda y demostracin. Para e j e c u t a r l o s s e e s c r i b e e l c o m a n d o e n l a l n e a d e c o m a n d o s despus del smbolo >> y se presiona la tecla Enter. Por ejemplo: >>help permite obtener una ayuda sobre los diferentes comandos de MatLab. >>demo h a c e u n a d e m o s t r a c i n d e l a s d i f e r e n t e s a p l i c a c i o n es de MatLab. Para cerrar o finalizar el uso de MatLab se usa el comando quit . >>quit
4. USO DE COMANDOS
La primera forma de interactuar con MatLab es a travs de la lnea de comandos. Puede ejecutarse un comando si este est escrito despus del smbolo >> y se presiona la tecla Enter. MATLAB trabaja esencialmente con matrices numricas rectangulares. La manera ms fcil de entrar matrices pequeas es enumerando los elementos de sta de tal manera que: los elementos estn separados por blancos comas. l os elementos estn cerrados entre corchetes, [ ]. muestre el final de cada fila con ; (punto y coma).
Ejemplo: A = [ 1 2 3; 4 5 6; 7 8 9 ] resultara en la matriz A= 1 2 3 4 5 6 7 8 9 MATLAB guarda esta matriz para utilizarla luego bajo el nombre de A. Si la matriz a introducir es muy grande se puede utilizar el siguiente formato:
20
A = [1 2 3 4 5 6 7 8 9] El comando load y la funcin fread p u e d e n l e e r m a t r i c e s g e n e r a d a s e n s e s i o n e s anteriores generadas por otros programas. Ya que MatLab se basa en el lgebra de matrices como ejemplo crearemos una matriz. Estas pueden estar formadas por un slo elementos (escalar), por una fila o una columna (vector) o por una serie de filas y columnas (matriz propiamente dicha). >>A=1 define A como un escalar de valor 1. Al definir A automticamente MatLab presenta en pantalla su valor. A= 1 Para no presentar el valor de la variable creada, debe agregarse punto y coma (;) al final del comando. Despus de crear una variable, puede presentarse escri biendo la variable despus del prompt (>>). >>A Se pueden redefinir variables, por ejemplo: >>A=[1 2 3] define A como un vector de tres elementos, A(1)=1, A(2)=2 y A(3)=3. Estos elementos deben separase con espacios en blanco o comas (,). Para definir una m a t r i z s e d e b e n s e p a r a r l a s f i l a s c o n p u n t o y c o m a ( ; ) o c o n retorno (Enter). >>A=[1 2 3; 4 5 6] o >>A=[1 2 3 4 5 6] ambos comandos producen el mismo efecto: A= 1 2 3 4 5 6 su valor en pantalla
21
Nos podemos referir a elementos individuales de la matriz con ndices entre parntesis. Ejemplo: En el ejemplo anterior x(4) = abs(x(1)) resultara x= -1.3000 1.7321 4.8000 0 1.3000
Para aadir otra fila a la matriz A de arriba podemos hacer lo siguiente: r = [10 11 12]; A = [A; r] y resultara A= 1 2 3 4 5 6 7 8 9 10 11 12
22
4.5 Funciones
Las funciones que utiliza MATLAB son intrnsecas al procesador de ste. Otras f u n c i o n e s e s t n d i s p o n i b l e s e n l a l i b r e r a e x t e r n a d e a r c h i vo s -M . A d e m s d e stas funciones todo usuario tambin puede crear otras funciones. Puedes combinar las funciones de acuerdo a tu necesidad. Ejemplo: x = sqrt(log(z))
23
ndices Podemos referirnos a elementos individuales de matrices encerrando sus ndices en parntesis. Ejemplo: A= 1 2 3 4 5 6 7 8 9
Un ndice puede ser un vector. Si x y v son vectores, entonces x(v) es [x(v(1)), x(v(2)), ...,x(v(n))]. Para matrices, los ndices de vectores permiten acceso a submatrices contiguas y no -con t i g u a s .
24
Por ejemplo, suponga que A es una matriz 10 por 10. Entonces A(1:5, 3) especifica la submatriz 5 x 1, vector columna, que consiste de los primeros cinco elementos en la tercera columna de A. Tambin A(1:5, 7:10) es la submatriz 5 x 4 de las pr i m e r a s c i n c o f i l a s y l a s l t i m a s c u a t r o c o l u m n a s . Utilizando solo los dos puntos denota todo lo correspondiente a la fila columna. Podramos tener una instruccin como: A(:, [3 5 10]) = B(:, 1:3) que reemplaza la tercera, quinta y dcima columna de A con las primeras tres columnas de B.
Manipulacin de Matrices diag - extrae crea una diagonal t r i l - parte inferior triangular triu - parte superior triangular ' - transposicin
25
y = x - 1 resultara y = -2 -1 1
Ejemplo: >>A=[1 2 3;4 5 6]; B=[6 5 4; 3 2 1]; define las matrices A y B. Para sumarlas se escribe la operacin: >>A+B El resultado de la operacin es por defecto almacenado en la variable ans e inmediatamente presentado en pantalla: ans = 7 7 7 7 7 7 Para almacenar la suma de A y B en la variable C: >>C=A+B C= 7 7 7 7 7 7
Multiplicando Matrices
La operacin de multiplicacin de matrices est definida siempre que el nmero de columnas de la primera matriz sea igual a el nmero de filas de la segunda matriz.
Producto escalar
El producto interior (producto escalar producto punto) se consigue de la siguiente manera: x' * y asumiendo que x y y son vectores columnas. Note que y' * x produce el mismo resultado.
26
Dividiendo Matrices
En divisin de matrices, si A es una matriz cuadrada no- s i n g u l a r , e n t o n c e s A\B y B/A corresponden a la multiplicacin izquierda y derecha de B por el inverso de A, esto es, inv(A) * B y B * inv(A) respectivamente. El resultado es obtenido directamente sin la computacin del inverso.
A \B es definido cuando B tiene la misma cantidad de filas que A. Si A es cuadrada, el mtodo usado es la Eliminacin Gaussiana. El resultado es una matriz X con las mismas dimensiones que B. Si A no es cuadrada, se factoriza utilizando la ortogonalizacin de Householder con pivoteo de columnas. Los factores son usados para resolver sistemas de ecuaciones sub-d e t e r m i n a d o s y sobre -determinados. El resultado es una matriz X m-p o r -n donde m es el nmero de columnas de A y n es el nmero de columnas de B. Cada columna de X tiene, al menos, k componentes diferentes de cero, donde k es el rango efectivo de A.
27
especiales
estn
definidas
solamente
para
28
>> a=[2;1;2] a= 2 1 2
>> b=[1;2;3] b= 1 2 3
29
>> a*b ??? Error using ==> * Inner matrix dimensions must agree.
>> a.*b' ??? Error using ==> .* Matrix dimensions must agree.
30
>> a^b ??? Error using ==> ^ Matrix dimensions must agree.
31
Precisin
Aproximadamente 16 dgitos significativos computadoras utilizando aritmtica flotante IEEE. El rango aproximado es: 1 0 ^-3 0 8 a 1 0 ^ 3 0 8 .
utilizada .-
en
Formatos de salida :
4/3 a) format short 1.3333 b) format short e 1.3333e+00 c) format long 1.33333333333333 d) format long e 1.33333333333333e00 e) format bank 1.33 f) format hex 3ff5555555555555
32
Archivos de Comandos Cuando un archivo de comandos es invocado, MATLAB simplemente ejecuta los comandos encontrados en dicho archivo. Las instrucciones en un archivo de comando operan globalmente en los datos en el espacio de trabajo. Los comandos son utilizados para hacer anlisis, resolver problemas, disear secuencias
33
l a r g a s d e c o m a n d o s q u e s e c o n v i e r t a n e n interactivas. Por ejemplo, suponga que el archivo f i b o . m contiene los siguientes comandos de MATLAB:
% U n a r c h i v o -M p a r a c a l c u l a r l o s e l e m e n t o s d e l a s e r i e d e F i b o n a c c i f = [1 1]; i = 1; while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1); i = i + 1; end plot(f)
S i e s c r i b i m o s fibo e n u n a v e n t a n a d e M A T L A B s e g u i d o d e " e n t e r " v e m o s q u e MATLAB calcula los primeros 16 nmeros de Fibonacci, y luego grafica estos. Luego que la ejecucin del archivo es completada, las variables f y i permanecen en el espacio de trabajo. Los programas de demostraciones incluidos en MATLAB son ejemplos de como usar comandos para hacer tareas ms complicadas. Para utilizar estos escriba demos en el "prompt" de MATLAB.
Archivos de Funciones Un archivo - M q u e c o n t i e n e l a p a l a b r a f u n c ti o n a l p r i n c i p i o d e l a p r i m e r a l n e a , e s un archivo de funcin. En una funcin, a diferencia de un comando, se deben de pasar los argumentos. Las variables definidas y manipuladas dentro de la funcin son locales a esta y no operan globalmente en el espacio de trabajo. Los archivos de funciones se utilizan para extender a MATLAB, i.e., crear nuevas funciones para MATLAB utilizando el lenguaje propio de MATLAB. El archivo m e a n . m contiene las instrucciones: function y = mean(x) % Valor medio. % Para vectores, mean(x) retorna el valor medio de los elementos del vector x. % Para matrices, mean(x) es un vector fila conteniendo el valor medio de cada columna. [m, n] = size(x); if m == 1 m = n; end y = sum(x)/m;
34
(Las lineas que comienzan con "%" son interpretadas como comentarios por MATLAB). La existencia de este archivo en el disco duro define una nueva funcin en MATLAB llamada m e a n . S i z e s u n v e c t o r d e l o s e n t e r o s d e s d e 1 a 9 9 , por ejemplo, z = 1:99; entonces, el valor promedio es encontrado escribiendo m e a n ( z) que resultara ans = 50
Veamos algunos detalles de m e a n . m: La primera lnea declara el nombre de la funcin, los argumentos de entrada, y los argumentos de salida. Sin esta lnea sera un archivo de comando. % indica que el resto de la lnea es un comentario. Las primeras lneas documentan el archivo - M y a p a r e c e n e n l a p a n t a l l a c u a n d o escribimos help mean. Las variables m, n, e y son locales a mean y no existen en el espacio de trabajo. (O si existen, permanecen sin cambios.) No es necesario asi gnar los enteros de 1 al 99 en la variable x. Utilizamos mean con una variable llamada z. Este vector que contena los enteros de 1 a 99 fue pasado copiado a mean donde se convirti en una variable local llamada x. Ejemplo % Ejemplo de un archivo-m % Cre a c i n d e l v e c t o r x u s a n d o e l c o m a n d o f o r n=5; for i=1:n x(i)=i^2; end x % Fin del archivo-m Este ejemplo es un archivo - m tipo comando. Para ejecutarlo, en la lnea de comandos se debe escribir el nombre del archivo: >>ejemplo x = 1 4 9 16 25
35
Ejemplo % C a lc u l a e l p r o m e d i o d e l o s e l e m e n t o s d e u n v e c t o r y d i b u j a d i c h o v e c t o r % Sintaxis : p r o m e d i o ( x ) d o n d e x e s e l v e c t o r a p r o m e d i a r function p = promedio(x) n=length(x); p=0; for i=1:n p=p+x(i); end p=p/n; plot(x);
P a r a e j e c u t a r l a f u n c i n , s e h a c e l a l l a m a d a en l a l n e a d e c o m a n d o s i n c l u y e n d o el parmetro. La funcin promedio usa por parmetro un vector. Este vector debe ser definido previamente. >>A=[1 2 4 3 7 5 6 1 2 0 8 5]; >>promedio(A) ans = 3.6667
MatLab presenta las imgenes en una ventana de figuras. Al observar el contenido de dicha ventana luego de ejecutar la funcin promedio, se tiene:
36
Esta imagen es el resultado del comando plot(x) al ejecutar la funcin promedio. M a t L a b p o s e e u n c o n j u n t o d e a r c h i v o s- m i n c o r p o r a d o s ( b u i l t-in). Puede agregrsele archivos - m definidos por el usuario almacenando los mismos en el directorio principal de MatLab. Los comentarios incluidos en estos scripts y funciones se visualizan al usar el comando h e l p s e g u i d o d e l n o m b re d e l a r c h i v o . >>help promedio Calcula el promedio de los elementos de un vector y dibuja dicho vector Sintaxis : p r o m e d i o ( x ) d o n d e x e s e l v e c t o r a p r o m e d i a r
Algunas funciones elementales son: real(a) Pa rte real imag(a) Parte imaginaria conj(a) C o n j u g a d o d e a fft(x) Transformada discreta de Fourier del vector x fft(x,n) FFT de n puntos muestrales ifft(x) Transformada inversa rpida de Fourier del vector x ifft(x,n) FFT inversa de n puntos muestrados zero s Inicializa a ceros zeros(n) M a t r i z d e n x n d e c e r o s zeros(m,n) M a t r i z d e m x n d e c e r o s y=zeros(size(A) Matriz del tamao de A, todos ceros
37
Ejemplo size R e g r e s a e l n m e r o d e f i l a s y c o l u m n a s A= 0 7 -6 1 0 0 0 1 0
>> [m n]=size(A) m = 3 n= 3 F u n c i o n e s ma t r i c i a l e s tril(A) Matriz triangular inferior triu(A) Matriz triangular superior p a s c a l Triangulo de Pascal t o c p l i t z Tocplitz
P r o d u c t o d e d o s matrices triangulares. Esta factorizacin se utiliza para obtener el inverso y el determinante. Tambin es la base para la solucin de sistemas lineales. Para obtener la factorizacin LU de A escribimos, [L, U] = lu(A).
38
Factorizacin Ortogonal Factori z a c i n Q R . Se utiliza para matrices cuadradas rectangulares. Esta factorizacin se utiliza para resolver sistemas lineales con ms ecuaciones que desconocidas. Esta factorizacin tambin es la base para las funciones n u l l y orth, que generan bases orto normales para el espacio nulo y rango de una matriz rectangular dada.
Descomposicin de Valores Singulares La descomposicin de Valores Singulares es importante para el anlisis de problemas que envuelvan matrices. La asignacin triple [ U , S , V ] = s v d ( A ) produce los tres factores en la descomposicin de valores singulares A = U*S*V'. Las matrices U y V son ortogonales y la matriz S es diagonal. La funcin s v d ( A ) devuelve solamente los elementos de la diagonal de S, que son los valores singulares de A.
Descomposicin de Valores Propios La Descomposicin de Valores Propios se utiliza para obtener los valores y vectores propios de una matriz cuadrada A. La funcin e i g ( A ) devuelve los valores propios de A en un vector columna. La asignacin [ X , D ] = e i g ( A ) p ro d u c e u n a m a t r i z d i a g o n a l D c u y o s e l e m e n t o s diagonales son los valores propios de A y las columnas de X son los vectores propios correspondientes.
Las Funciones de norma, rango y acondicionamiento asociadas son: c o n d - nmero de condicin en la norma 2 nor m - norma 1, norma 2, norma F, norma rank - rango rcond - e s t i m a d o d e l n m e r o d e c o n d i c i n
Funciones de Funciones MATLAB representa funciones matemticas mediante archivos- M funcin. Un ejemplo de una funcin es el archivo -M l l a m a d o h u m p s . m. de tipo
39
y = 1 . / ( ( x- .3).^2 +.01) + 1./((x- .9).^2 +.04) - 6; y para la grfica de la funcin escribimos x = - 1:.01:2; plot(x, humps(x))
Integracin Numrica (Cuadratura) El rea bajo la grfica de la funcin f(x) se puede aproximar integrando f(x) numricamente mediante una regla de cuadratura. Para integrar la funcin definida por h u m p s . m d e s d e 0 h a s t a 1 e s c r i b i m o s : q = quad('humps', 0, 1) q= 29.8583
N o t e q u e e l a rg u m e n t o d e q u a d c o n t i e n e u n n o m b r e d e u n a f u n c i n . P o r e s t o q u a d se llama una funcin de funcin, i.e., es una funcin que opera en otras funciones.
Ecuaciones No -lineales y Funciones de Optimizacin Las funciones de funciones para ecuaciones no -lineales y optimizacin incluyen: fmin - mnimo de una funcin de una variable fmins - mnimo restricciones) de una funcin multi - variable (minimizacin no-l i n e a l sin
Funciones para Ecuaciones Diferenciales Las funciones de MATLAB para resolver ecuaciones diferenciales ordinarias son: problemas de valor inicial para
ode23 - mtodo Runge- Kutta de largo de paso variable que combina un mtodo de orden dos con uno de orden tres. ode45 - mtodo Runge -Kutta -F e h l b e r g d e l a r g o d e p a s o v a r i a b l e q u e c o m b i n a u n mtodo de orden cuatro con uno de orden cinco.
40
41
El resultado de C = A & B es una matriz cuyos elementos son unos donde A y B sean ambos distintos de cero, y ceros donde A B sean cero. A y B deben de ser matrices con las mismas dimensiones, a menos que una de ellas sea un escalar. El resultado d e C = A | B e s u n a m a t r i z c u y o s e l e m e n t o s s o n u n o s d o n d e A B tienen un elemento diferentede cero, y ceros donde ambas tienen elementos cero. A y B deben de ser matrices con las mismas dimensiones, a menos que una sea un escalar. El resultado de B = ~A es una matriz cuyos elementos son uno donde A tiene un elemento cero, y ceros donde A tiene elementos diferentes de cero.
F u n c i n e s any, all La funcin any(x) devuelve 1 si cualquiera de los elementos de x es diferente de cero, de lo contrario devuelve 0. La funcin all(x) d e v u e l v e 1 s o l a m e n t e s i t o d o s l o s e l e m e n t o s d e x s o n d i f e r e n t e s de cero. Estas funciones se usan en clusulas i f. Por ejemplo: if all(A <.5) . . . end Para argumentos matriciales, a n y y a l l t r a b a j a n p o r c o l u m n a s p a r a d e v o l v e r u n v e c tor fila con el resultado para cada columna. Aplicando la funcin dos veces, any(any(A)), siempre reduce la matriz a una condicin escalar. Las funciones relacionales y lgicas en MATLAB son: any - condiciones lgicas all - condiciones lgicas find - halla n d i c e s d e a r r e g l o s d e v a l o r e s l g i c o s exist - verifica si existen variables isinf - d e t e c t a i n f i n i t o s
42
finite - v e r i f i c a p a r a l o s v a l o r e s f i n i t o s
Ejemplos: [6.0 9.0 3.4 ] sqrt(2) for i=1:n, a(i)=0, end for i=1:n; a(i)=0; end % inicia vector a en 0
43
El ciclo FOR permite que una instruccin, grupo de instrucciones, pueda repetirse un n m e r o d e t e r m i n a d o d e v e c e s . P o r e j e m p l o , for i = 1:n, x(i) = 0, end asigna 0 a los primeros n elementos de x. Si n es menor de 1, el ciclo sigue siendo vlido pero MATLAB no ejecuta la instruccin intermedia. Si x no esta definido, si tiene menos de n elementos, entonces un espacio adicional es localizado automticamente a x cada vez que sea necesario.
44
Ejemplo y=1 for t1=0:0.1:1 for t2=1: - 0 . 1 : 0 y(1)=sin(t1*t2) end i=i+1; end
Ejemplo for i = 1:m for j = 1:n A(i, j) = 1/(i+j- 1); end end A La "A" al terminar el ciclo muestra en la pantalla el resultado final. Es importante que para cada for halla un e n d .
45
El ciclo WHILE permite a una instruccin , g r u p o d e i n s t r u c c i o n e s , r e p e t i r s e u n nmero indefinido de veces, bajo el control de una condicin lgica. El siguiente ciclo while halla el primer entero n para el cual n! es un nmero de 100 digitos:
Un clculo ms prctico ilustrando el ciclo while es en el cmputo del exponencial de una matriz, llamado e x p m ( A ) en MATLAB. Una posible definicin de la funcin exponencial es mediante la serie:
La idea es sumar todos los trminos necesarios hasta producir un resultado que, en la precisin finita la de computadora, no cambie aunque ms trminos sean aadidos. Para esto procedemos de la forma siguiente:
46
E = zeros(size(A)); F = eye(size(A)); k = 1; w h i l e n o r m ( E + F- E, 1) > 0 E = E + F; F = A*F/k k = k+1; end Aqui A es la matriz dada, E representa la suma parcial de la serie, F es un trmino individual en la serie, y k es el ndice de este trmino.
47
c) if expresin proposicin 1; ... proposicin n; elseif proposicin 1; ... proposicin m; else proposicin 1; ... proposicin r; end
sum=0.0; y=1; while i<=so n=input(`Introduzca n, interrumpe con valor negativo `); if n<0, break, end; if n==0 sum=sum+n; elseif n<=10 sum=sum+n/2; else sum=sum+n/10; end end
48
A continuacin se muestra como un clculo se puede dividir en tres casos, dependiendo del signo paridad de un entero n:
En el segundo, partiendo de un entero positivo n, si este es par, se divide entre dos; si es impar, se multiplica por tres y se le suma uno. Habr algn entero para el cual el proceso nunca termine? Aqu se ilustran los enunciados while y i f, tambin se muestra la funcin input (en este caso es una entrada del teclado), y el enunciado b r e a k, que provee salidas abruptas de los ciclos. Veamos:
% Problema "3n+1" clsico de la teoria de nmeros. while 1 n = input('Entre n, negativo termina. '); if n <= 0, break, end while n > 1 if rem(n, 2) == 0 n = n/2 else n = 3*n+1 end end end
49
>> B=reshape(A,2,6) B= 1 3 5 7 9 11 2 4 6 8 10 12
>> A(1,1)=A(1,2)+A(2,1) A = 5 2 3 4
50
>> A(1,2)=A(2,1) A= 5 3 3 4
>> A(2,2)=10 A= 5 3 3 10
>> b=A(:) b= 1 3 5 2 4 6
51
>> x=5:- 1 : 1 x = 5 4 3 2 1
Acceso a submatrices contiguas y no contigua s Ejemplos Si la matriz original A es de 10*10, entonces: A(1:3,5) de A matriz de 3x1 que tiene los tres primeros elementos de la columna 5
A(1:3, 5:9) matriz de 3x4 que tiene los tres primeros filas y las columnas de 5 a 9 de A A(:,5) quinta columna de A A(1:5,:) primeras cinco filas de A A(:,[4 6])=B(:,1:2) primeras de A remplaza la cuarta y sexta columnas de A con las dos
52
Para la matriz A considerada previamente A(:,[3,5])=[ ] borra columnas 3 y 5 de A A([3,5 ],:)=[ ] borra filas 3 y 5 de A
Declaracin de matrices complejas A=[1 2; 3 4] + i*[5 6 ; 7 8] o A=[1 2; 3 4] + i*[5 6 ; 7 8] o A=[1+5i 2+6i; 3+7i 4+8i] A = 1.0000 + 5.0000i 2.0000 + 6.0000i 3.0000 + 7.0000i 4.0000 + 8.0000i
Generacin de tablas >> x=(0.0:0.2:3.0); > > y = e x p ( - x).*sin(x); >> [x;y] ans = Columns 1 through 7 0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000 0 0.1627 0.2610 0.3099 0.3223 0.3096 0.2807 C ol um ns 8 thr ough 14 1.4000 1.6000 1.8000 2.0000 2.2000 2.4000 2.6000 0.2430 0.2018 0.1610 0.1231 0.0896 0.0613 0.0383 Columns 15 through 16 2.8000 3.0000 0.0204 0.0070
53
D i a g o n a l d e A: diag(A) >> diag(A) ans = 1 5 9 Valores y vectores caractersticos: e i g ( A ) >> A=[0 7 - 6; 1 0 0;0 1 0] A= 0 7 -6 1 0 0 0 1 0
54
>> [v d]=eig(A) v= 0.9435 -0.8729 0.5774 -0 . 3 1 4 5 - 0. 4 3 6 4 0 . 5 7 7 4 0.1048 -0.2182 0.5774 d= -3 . 0 0 0 0 0 0 0 2.0000 0 0 0 1.0000
- Factori z a c i n L U d e A : l u ( A ) >> [L U]=lu(A) L= 0 1.0000 0 1.0000 0 0 0 0.1429 1.0000 U = 1.0000 0 0 0 7.0000 - 6.0000 0 0 0.8571
55
- I n v e r s a d e A: inv(A) >> inv(A) ans = 0 1.0000 0 0 0 1.0000 -0 . 1 6 6 7 0 1 . 1 6 6 7 - E c u a c i n c a r a c t e r s t i c a d e l a m a t r i z A: poly(A) >> p = p o l y ( A ) p= 1.0000 0.0000 - 7.0000 6.0000 - Raices de la ecuacin caracterstica : roots(p) >> r=roots(p) r = -3 . 0 0 0 0 2.0000 1.0000
56
Ejemplo fid = fopen(`archivo.dat','r') fid = -1, error 0, lectura/escritura normal [fid, mensaje = fopen(`archivo.dat','r ' )
57
Ejemplo: A = fread(fid,10,'float')
Ejemplo function x=ccdifs(t,x) global ka,kb x p = [ x ( 1 )- ka*x(1)*x(2); - x(2)+kb*x(1)*x(2)]; ... global ka,kb ka=0.01 kb=0.02 [t,x]=ode23('ccdifs',0,10,[1:1]);
58
V e c t o r e s P r e- A s i g n a d o s Si no podemos vectorizar un pedazo de cdigo, podemos hacer que los ciclos for vayan ms rpido pre -asignando cualquier vector en el cual el resultado de salida sea guardado. Veamos un ejemplo: y = zeros (1,100); for i = 1:100 y(i) = det(X^i); end Si no pre -asignamos el vector "y", el interpretador de MATLAB ir aumentando el tamao de "y" por uno cada vez que se itera en el ciclo. Permite incrementar la velocidad de proceso de MATLAB Sintaxis variable=inicio:incremento:final Ejemplo i=1, wo=2*pi*fo; for t=0:dt:per f(i)=sin(wo*t); i= i+1; end t=0:dt:per; fi=sin(wo*t);
59
Plot
60
b azul w blanco k negro Smbolo Estilo de lnea . punto o circulo x marca + mas * asterisco - slido : punteado -. s e g m e n t o p u n t o -- s e g m e n t o
Ejemplo
usar
la
funcin
plot
con
mltiples
pares
de
argumentos
plot (X1, Y1, X2, Y2, ...) Cada par X -Y es graficado, generando lneas mltiples. Los pares diferentes pueden ser de dimensiones diferentes.
61
P a r a e v a l u a r u n a f u n c i n , s e c r e a u n a r c h i v o d e e s t a f u n c i n y se le pasa el nombre del archivo a fplot. El siguiente archivo -M de tipo funcin define la funcin anterior como fofx. function y = fofx(x) y = cos(tan(pi*x)); Este archivo se guarda con el nombre de f o f x . m. Ahora la instruccin fplot('fofx', [0 1]) prod u c e l a g r f i c a :
62
Aqu, fplot usa menos puntos para evaluar la misma funcin a intervalos ms cerrados en la regin donde la rapidez de cambio es mayor.
loglog Sintaxis a) loglog(x,y) b) loglog(x,y,'tipo_lnea') c)loglog(x1',y1','tipo_lnea_1',..., xn,yn,'tipo_lnea_n') Ejemplo x = l o g s p a c e (- 1,3); loglog(x,exp(x)) donde l o g s p a c e tiene las formas: l o g s pa c e ( a , b ) logspace(a,b,n) a,b exponentes de los lmites. Es decir, 10^a y 10^b
63
fill Dibuja el area interior de una curva en determinado color Sinta x i s: a) fill(x,y,'c') b) fill(x1,y1,'c1',...,xn,yn,cn) Ejemplo t=0:0.5:2*pi; x=sin(t); fill(t,x,'b') t=0:0.5:2*pi; x=sin(t); y=cos(t); fill(y,x,'r')
subplot Dibuja la pantalla en mxn subdivisioens, numeradas por el parmetro p, de izquierda a derecha, ini c i a n d o p o r l a f i l a s u p e r i o r Sintaxis: subplot(m,n,p) Ejemplo: vt=smvars(:,1); it=smvars(:,2); rang=smvars(:,3); ikd=smvars(:,4); subplot(2,2,1); plot(vt) subplot(2,2,2) plot(it) suplot(2,2,3) plot(rang) subplot(2,2,4) plot(ikd)
bar Crea una grfica de ba r r a s Sintaxis: a) bar(y); b) bar(x,y); c) [xb,yb]=bar(y); => plot(xb,yb) d) [xb,yb]=bar(x,y); => plot(xb,yb)
64
Ejemplo x= - 2.8:0.2:2.8 b a r ( x , e x p (- x.*x) Nota: Los valores de x deben estar igualmente espaciados
fplot Dibuja la grfica de una funcin Sintaxis: a) fplot(`funcin', [inicio,final]) b) fplot(`funcin', [inicio,final],n) c) fplot(`funcin', [inicio,final],n,ngulo) d) [x,y]=fplot(`funcin', [inicio,final]) => plot(x,y) n - nmero de puntos n gulo - ngulo entre segmentos sucesivos de la funcin
65
colormap Colorea con sombreado el interior de una curva o polgono Sintaxis colormap(colorbase) donde colorbase es: gray hot cool copper pink Ejemplo t=0:0.05:2*pi; x=sin(t); y=cos(t); colormap(hot(130)); ... Nota: 130 es opcional el rango 0- 255 fill(y,x,x) => sombreado horizontal f i l l ( y , x , y ) => sombreado vertical
contour, contour3 Genera dibujos compuestos de lneas de valores de datos constantes obtenidos de una matriz de entrada S i n ta x i s: a) contour(z) b) contour(z,n)
66
c) contour(x,y,z) d) contour(x,y,z,n)
contour3 Igual funcin de contour en 3 dimensiones Sintaxis: a) contour3(z) b) contour3(z,n) c) contour3(x,y,z) d) contour3(x,y,z,n)
E j e mplo contour3(peaks,30)
meshgrid Genera arreglos X y Y para dibujos en 3 dimensiones Sintaxis: a) [X,Y] = meshgrid(x,y) b) [X,Y] = meshgrid(x) => meshgrid(x,y)
Ejemplo. Evalue y dibuje la funcion z=x*exp( -x^2 -y^2) sobre el rango -2 < = x < = 2 , -2 < = y < = 2 [ X , Y ] = meshgrid(-2 : 2 : 2 ) ; z = x . * e x p (- x ^ 2 -y^2); ... mesh(Z)
67
mesh, meshc y meshz Dibujan una superficie de malla tridimensional, crando una perspectiva del dibujo, sobre y bajo el plano de referencia. Sintaxis: a) mesh(x,y,z,c) b) mesh(x,y,z) c) mesh(x,y,z,c) d) mesh(x,y,z) e) mesh(z,c) f) mesh(z) g) meshc(...) => mismo que mesh h) meshc(...) => mismo que mesh
meshz A a d e u n p l a n o d e r e f e r e n c i a o c o r t i n a a l d i b u j o
surf, surfc Crean superficies sombreadas en 3 dimensiones Sintaxis: a) surf(x,y,z,c) b) surf(x,y,z) c) surf(x,y,z,c) d) surf(x,y,z) e) surf(z,c) f) surf(z) g) surfc(...) => misma S i n t a x i s que surf
68
hadamar d M a t r i z h a d a m a r d c o m p u e s t a d e 1 ' s y -1's, empleada en procesamiento de seales y anlisis numrico Ejemplo (matriz de 4*4) 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1
surfl Superficie sombreada tridimensioanl con efecto de reflexin de luz Sintaxis: a) surfl(z) b) surfl(z,s) c) surfl(x,y,z) d) surfl(x,y,z,s) s - direccin de la luz
69
shading Establece las propiedades de sombreado con color Sintaxis shading faceted shading interp shading flat
shading flat - cada segmento de la superficie tiene un valor constante determinado por el color de los puntos extremos del segmento o sus esquinas s h a d i n g i n t e r p - el color en cada segmento varia linealmente e interpolo los valores extremos o esquinas shading faceted superpuestas utiliza sombreado "flat" con lneas de malla negras
axis Escala y apariencia de los ejes Sintaxis: a) axis([xmin, xmax, ymin, ymax]) b) axis([xmin, xmax, ymin, ymax, zmin, zmax]) c) axis(`auto') d) axis(`ij') e) axis(`xy') f) axis(`square') g) axis(`equal' ) h) axis(`off') 70
i) axis(`on') donde: axis(`auto') realiza el escalamiento de ejes a su modo de autoescalamiento por defecto. a x i s ( ` i j ' ) dibuja nuevamente la grfica. El eje y es vertical y es numerado de arriba hacia abajo. El eje j es horizontal y es n u m e r a d o d e i z q u i e r d a a d e r e c h a . axis(`xy') regresa la forma de ejes cartesianos que existe por defecto . El eje x es horizontal y se numera de izquierda a derecha. El eje y es vertical y se numera de abajo hacia arriba a x i s ( ` s q u a r e ' ) d e t e r m i n a q u e l a r e g i n de los ejes es cuadrada axis(`equal') indica que los factores de escalamiento y marcas incrementales a lo largo de los ejes x y y son iguales. axis(`off') d e s a c t i v a l a s e t i q u e t a s d e l o s e j e s y l a s m a r c a s a x i s ( ` o n ' ) activa las etiquetas de los ejes y las marcas Para el ejemplo ltimo: ... axis([ - 3 3 - 3 3 - 8 8])
r a n d matrices y nmeros aleato rios distribuidos uniformemente Sintaxis: a) rand(n) - matriz de nxn b) rnad(m,n) - m a t r i z d e m x n
71
load carga en el area de trabajo un archivo (imagen, sonido, datos, etc) Sintaxis a) load archivo b) l o a d a r c h i v o . e x t donde: ext - e x t e n s i n
image crea un objeto imagen y lo presenta Sintaxis: a) image(x) b) image(x,y,x) c) presenta la matriz c como una imagen d) especifica los lmites de los datos de la imagen en los ejes x e y. En b) , x e y son vectores Ejemplo load clown colormap(map) image(x)
brighten hace ms brillante o ms obscura la imagen Sintaxis: a) brighten(alfa) b) brighten(map,alfa) donde: 0<alfa<1 ms brillante -1<alfa<0 ms obscuro Del ejemplo anterior: ... brighten(0. 6 ) brighten(- 0 . 6 )
72
c l f borra la figura
s o u n d convierte un vector en sonido (en computadoras sparc y macintosh) Sintaxis a) sound(y) b) sound(y,Fs) donde: Fs frecuencia especificada en Hz
el cal es el formato de archivo utilizado por MATLAB. Para informacin acerca de las tcnicas utilizadas para importar y exportar datos consulte la seccin de Importando y Exportando Datos de la gua de MATLAB utilice al comando help de MATLAB.
74
6. SIMULINK
Simulink es una herramienta para el modelaje, anlisis y simulacin de una amplia variedad de sistemas fsicos y matemticos, inclusive aquellos con elementos no lineales y aquellos que hacen uso de tiempos continuos y discretos. Como una extensin de MatLab, Simulink adiciona muchas caractersticas especficas a los sistemas dinmicos, mientras conserva toda la funcionalidad de propsito g e n e r a l d e M a t L a b . A s S i m u l i n k n o e s c o m p l e t a m e n t e u n p r o g r a m a s e p a r a d o de MatLab, sino un anexo a l. El ambiente de MatLab est siempre disponible mientras se ejecuta una simulacin en Simulink. Simulink tiene dos fases de uso: la definicin del modelo y el anlisis del modelo. La definicin del modelo significa construir el modelo a partir de elementos bsicos construidos previamente, tal como, integradores, bloques de ganancia o servomotores. El anlisis del modelo significa realizar la simulacin, linealizacin y determinar el punto de equilibrio de un modelo previamente definido. Para simplificar la definicin del modelo Simulink usa diferentes clases de ventanas llamadas ventanas de diagramas de bloques. En estas ventanas se puede crear y editar un modelo grficamente usando el ratn. Simulink usa un ambiente grfico lo que hace sencillo la creacin de los modelos de sistemas. Despus de definir un modelo este puede ser analizado seleccionando una opcin desde los mens de Simulink o entrando comandos desde la lnea de comandos de MatLab. Simulink puede simular cualquier si s t e m a q u e p u e d a s e r d e f i n i d o p o r e c u a c i o n e s diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que se puede modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas hbridos. S i m u l i n k u s a d i a g r a m a s d e b l o q u e s p a ra representar sistemas dinmicos. Mediante una interface grfica con el usuario se pueden arrastrar los componentes desde una librera de bloques existentes y luego interconectarlos mediante conectores y alambre. La ventana principal de Simulink se activa escribiendo simulink en la lnea de comandos de MatLab, y se muestra a continuacin: Haciendo doble click en cualquiera de las libreras presentes en esta ventana se abrir otra ventana conteniendo una cantidad de bloques relativos a dicha librera. Para realizar un sistema debe abrirse una nueva ventana de diagrama de bloques seleccionando la opcin file del men principal del Simulink y all la opcin new. En esta nueva ventana se colocarn todos los bloques interconectados que formarn el sistema deseado .
75
Como ejemplo se ha tomado un generador de ondas seno de la librera de fuentes "sources" y un osciloscopio de la librera "sinks", ambos se unieron mediante un conector usando el ratn. Este sistema se almacena como un archivo - m. Haciendo doble click so bre cada elemento del sistema se pueden ver y modificar sus caractersticas. Por ejemplo, al generador seno se le puede modificar su amplitud, frecuencia y fase. Al osciloscopio se le definen las escalas horizontal y vertical. Para ejecutar el programa se usa la opcin simulation en el men de la ventana del archivo - m creado. En este submen est la opcin start que permite ejecutar el programa. Tambin est la opcin parameters que activa el panel de control de Simulink en donde se definen los mtodos y parmetros usados para la simulacin, tal como se muestra a continuacin: Al ejecutar el programa seno.m creado mediante simulink, se puede observar la respuesta al hacer doble click en el osciloscopio. Existen numerosos bloques y funciones incorporados en las libreras de simulink que pueden ser empleados para simular cualquier sistema. Por ejemplo, para implementar un sistema que emplea un controlador PID tenemos:
En este diagrama se tiene al bloque llamado PID que fue definido previamente y agrupado como uno solo. El contenido de dicho bloque se obtiene haciendo doble click sobre l. A continuacin se muestra el bloque PID:
76
77
Managing variables and the workspace: who - List current variables. whos - List current variables, long form. load - Retrieve variables from disk. save - S a v e w o r k s p a c e v a r i a b l e s t o d i s k . clear - C l e a r variables and functions from memory. pack - C o n s o l i d a t e w o r k s p a c e m e m o r y . size - Size of matrix. length - Length of vector. disp - Display matrix or text.
Working with files and the operating system: cd - Change current working directory. dir - Directory l i s t i n g . delete - Delete file. getenv - Get environment value. ! - Execute operating system command. unix - Execute operating system command & return result. diary - Save text of MATLAB session.
78
C o n t r o l l i n g t h e c o m m a n d w i n d o w: cedit - S e t c o m m a n d l i n e e d it/recall facility parameters. clc - Clear command window. home - Send cursor home. format - Set output format. echo - E c h o c o m m a n d s i n s i d e s c r i p t f i l e s . more - C o n t r o l p a g e d o u t p u t i n c o m m a n d w i n d o w .
Starting and quitting from MATLAB: quit - T e r m i n a t e MATLAB. startup - M -f i l e e x e c u t e d w h e n M A T L A B i s i n v o k e d . matlabrc - Master startup M-f i l e .
General information: info - I n f o r m a t i o n a b o u t M A T L A B a n d T h e M a t h W o r k s , I n c . subscribe - B e c o m e s u b s c r i b i n g u s e r o f M A T L A B . hostid - MATLAB server host identificati o n n u m b e r . whatsnew - Information about new features not yet documented. ver - M A T L A B , S I M U L I N K , a n d T O O L B O X v e r s i o n i n f o r m a t i o n .
Operators and special characters: Char Name HELP topic + Plus arith - Minus arith * Matrix multiplication arith .* Array multiplication arith ^ Matrix power arith .^ Array power arith \ Backslash or left division slash / Slash or right division slash ./ Array division slash
79
kron Kronecker tensor product kron : Colon colon ( ) Parentheses paren [ ] Brackets paren . Decimal point p u n c t .. Parent directory punct ... Continuation punct , Comma punct ; Semicolon punct % Comment punct ! Exclamation point punct ' Transpose and quote punct = Assignment punct == Equality relop < > Relational operators relop & Logical AND relop | Logical O R relop ~ Logical NOT relop xor Logical EXCLUSIVE OR xor
Logical characteristics: exist - C h e c k i f v a r i a b l e s o r f u n c t i o n s a r e d e f i n e d . any - T r u e i f a n y e l e m e n t o f v e c t o r i s t r u e . a l l - True if all elements of vector are true. f i n d - F i n d i n d i c e s o f n o n - zero elements. isnan - T r u e f o r N o t- A- Number. isinf - True for infinite elements. finite - T r u e f o r f i n i t e e l e m e n t s . isempty - T r u e f o r e m p t y m a t r i x . issparse - True for sparse matrix. isstr - T r u e f o r t e x t s t r i n g . isglobal - True for global variables.
80
Con t r o l S y s t e m T o o l b o x C o m m a n d s: Model building: append - Append system dynamics. augstate - A u g m e n t s t a t e s a s o u t p u t s . b l k b u i l d - Build state -space system from block diagram. cloop - C l o s e l o o p s o f s y s t e m . connect - Block diagram modeling. conv - Convolution of two polynomials. destim - F o r m d i s c r e t e s t a t e e s t i m a t o r f r o m g a i n m a t r i x . dreg - Form discrete controller/estimator from gain matrices. drmodel - Generate random discrete model. estim - Form continuous state estimator from gain matrix. feedback - F e e d b a c k s y s t e m c o n n e c t i o n . ord2 - G e n e r a t e A , B , C , D f o r a s e c o n d-order system. pade - Pade approximation to time delay. parallel - P a r a l l e l s y s t e m c o n n e c t i o n . reg - F o r m c o n t i n u o u s c o n t r o l l e r / e s t i m a t o r f r o m g a i n m a t r i c e s . rmodel - Generate random continuous mod e l . series - S e r i e s s y s t e m c o n n e c t i o n . ssdelete - Delete inputs, outputs, or states from model. ssselect - Select subsystem from larger system.
Model conversions>: c2d - Continuous to discrete - time conversion. c2dm - Continuous to discrete- time conversion w i t h m e t h o d . c2dt - C o n t i n u o u s t o d i s c r e t e c o n v e r s i o n w i t h d e l a y . d2c - D i s c r e t e t o c o n t i n u o u s- t i m e c o n v e r s i o n . d2cm - Discrete to continuous- time conversion with method. poly - Roots to polynomial conversion. residue - P a r t i a l f r a c t i o n e x p a n s i o n .
81
ss2tf - State - space to transfer function conversion. ss2zp - S t a t e - space to zero -pole conversion. tf2ss - Transfer function to state- s p a c e c o n v e r s i o n . tf2zp - Transfer function to zero -p o l e c o n v e r s i o n . zp2tf - Z e r o- pole to transfer function conversion. zp2ss - Z e r o- pole to state- s p a c e c o n v e r s i o n .
Model reduction: balreal - Balanced realization. dbalreal - Discrete balanced realization. dmodred - Discrete model order reduction. minreal - M i n i m a l r e a l i z a t i o n a n d p o l e- zero cancellation. modred - Model order reducti o n .
M o d e l r e a l i z a t i o n s: canon - C a n o n i c a l f o r m . ctrbf - Controllability staircase form. obsvf - Observability staircase form. ss2ss - Apply similarity transform.
Model properties: covar - Continuous covariance response to white noise. ctrb - C o n t r o l l a b i l ity matrix. damp - Damping factors and natural frequencies. dcgain - Continuous steady state (D.C.) gain. dcovar - Discrete covariance response to white noise. ddamp - D i s c r e t e d a m p i n g f a c t o r s a n d n a t u r a l f r e q u e n c i e s . ddcgain - Discrete steady state (D.C.) gain. dgram - Discrete controllability and observability gramians. dsort - S o r t d i s c r e t e e i g e n v a l u e s b y m a g n i t u d e . eig - Eigenvalues and eigenvectors. esort - Sort continuous eigenvalues by real part.
82
gram - Controllability and observability gramians. o b sv - Observability matrix. printsys - Display system in formatted form. roots - P o l y n o m i a l r o o t s . tzero - T r a n s m i s s i o n z e r o s . tzero2 - T r a n s m i s s i o n z e r o s u s i n g r a n d o m p e r t u r b a t i o n m e t h o d .
Time response: dimpulse - Discrete unit sample response. dinitial - Discrete initial condition response. dlsim - Discrete simulation to arbitrary inputs. dstep - Discrete step response. filter - S I S O z - transform simulation. impulse - Impulse response. initial - Continuous initial condition response. lsim - C o n t i n u o u s s i m u l ation to arbitrary inputs. ltitr - Low level time response function. step - Step response. stepfun - S t e p f u n c t i o n .
Frequency response: bode - Bode plot (frequency response). dbode - Discrete Bode plot (frequency response). dnichols - Discrete Nichols plo t. dnyquist - Discrete Nyquist plot. dsigma - Discrete singular value frequency plot. fbode - F a s t B o d e p l o t f o r c o n t i n u o u s s y s t e m s . freqs - Laplace - transform frequency response. freqz - Z- t r a n s f o r m f r e q u e n c y r e s p o n s e . ltifr - Low level frequency response f u n c t i o n . margin - Gain and phase margins. nichols - Nichols plot.
83
R o o t l o c u s: pzmap - P o l e- zero map. rlocfind - Interactive root locus gain determina tion. rlocus - E v a n s r o o t-locus. sgrid - D r a w c o n t i n u o u s r o o t l o c u s w n , z g r i d . zgrid - D r a w d i s c r e t e r o o t l o c u s w n , z g r i d .
Gain selection: acker - SISO pole placement. dlqe - D i s c r e t e l i n e a r -q u a d r a t i c e s t i m a t o r d e s i g n . d l q e w - General discrete linear quad ratic estimator design. dlqr - D i s c r e t e l i n e a r -q u a d r a t i c r e g u l a t o r d e s i g n . dlqry - D i s c r e t e r e g u l a t o r d e s i g n w i t h w e i g h t i n g o n o u t p u t s . lqe - L i n e a r-quadratic estimator design. lqed - Discrete estimator design from continuous cost function. lqe2 - Linear quadratic estimator design using Schur method. l q e w - G e n e r a l l i n e a r-quadratic estimator design. lqr - L i n e a r- quadratic regulator design. lqrd - Discrete regulator design from continuous cost function. lqry - R e g u l a t o r d e s i g n w i t h w e i g h t i n g o n o u t p u t s . lqr2 - Linear quadratic regulator design using Schur method. place - P o l e p l a c e m e n t .
Equation solution: are - Algebraic Riccati equation solution. dlyap - Discrete Lyapunov equation solution. lyap - C o n t i n u o u s L y a p u n o v e q u a t i o n s o l u t i o n . lyap2 - Lyapunov equa tion solution using diagonalization.
84
Demonstrations: ctrldemo - Introduction to the Control Toolbox. boildemo - LQG design of boiler system. jetdemo - Classical design of jet transport yaw damper. diskdemo - Digital control design of hard disk controller. kalmdemo - K a l m a n f i l t e r d e s i g n a n d s i m u l a t i o n .
85
En MatLab debe definirse el numerado r Y(s) y el denominador U(s) como vectores, cuyos elementos son los coeficientes de los polinomios del numerador y del denominador en potencias decrecientes de S. Por ejemplo, para definir la funcin de transferencia:
Para d e t e r m i n a r l a r e s p u e s t a e n e l t i e m p o p a r a u n a e n t r a d a e s c a l n u n i t a r i o d e este sistema se usa el comandos step indicando el vector del numerador y del denominador entre parntesis. step(num,den) >>step(y,u)
86
Puede definirse el tiempo en el cual se desea la respuesta al escaln, mediante un vector de tiempo T, step(num,den,T) >>t=0:0.1:20; >>step(y,u,t)
Se define t como un vector cuyo elemento inicial es 0, su elemento final es 20 y existen elementos que son el incremento desde 0 hasta 20 de 0.1 en 0.1. Al ejecutar el comando step para y y u se obtiene en la ventana de figuras la respuesta escaln para los primeros 20 segundos. Otra forma de definir el sistema en MatLab es usando las ecuaciones de estado de la forma: x = Ax + Bu y = Cx + Du
MatLab permite hacer la conversin de una funcin de transferencia a su equivalente en ecuaciones de estado, mediante el comando tf2ss. Se deben especificar las cuatro matrices de estado de la forma: [A,B,C,D]=tf2ss(num,den)
87
Se puede hacer la conversin de una ecuacin de estado a su equivalente funcin de transferencia, mediante el comando ss2tf. Se deben especificar los vectores para almacenar los coeficientes del polinomio numerador y del denominador. Su Sintaxis e s : [num,den]=ss2tf(a,b,c,d)
P a r a o b t e n e r l a respuesta escaln de un sistema a partir de las ecuaciones de estado se usa el comando step con la Sintaxis: step(A,B,C,D)
Ejemplo >>step(a,b,c,d)
Para obtener la respuesta en el tiempo para una entrada impulso unitario se usa el comando impulse, con Sin taxis idntica a la utilizada con el comando step: Si se define el sistema en MatLab por los polinomios denominador de la funcin de transferencia tenemos: y=[1 5 4]; u=[1 6 11 6]; impulse(y,u) del numerador y
Si por el contrario el sistema se defin e en MatLab por las ecuaciones de estado: [A,B,C,D]=tf2ss(y,u) A= -6 - 1 1 - 6 1 0 0 0 1 0
88
B= 1 0 0 C= 1 5 4 D = 0 impulse(A,B,C,D)
89
MatLab permite, adems de obtener la respuesta en el tiempo para una entrada escaln o impulso, tambin obtener respuesta para otras entradas tal como rampas o sinusoides. El comando lsim permite obtener la respuesta en el tiempo para un sistema con una entrada u, donde u se define como una funcin del tiempo. La Sintaxis de este comando es: lsim(A,B,C,D,U,T) usando las matrices de estado o lsim(NUM,DEN,U,T) usando la funcin de transferencia. Para obtener la respuesta en el tiempo para una funcin rampa, se define U de la siguiente forma: >>T=0:0.1:10 >>U=T; >>NUM=[1]; >>DEN=[1 0.25 1]; >>[Y,X]=lsim(NUM,DEN,U,T); >>PLOT(T,Y,T,U)
Al hacer U=T se est definiendo la funcin rampa. T es el vector de tiempo variando desde 0 hasta 10 s e g . N U M y D E N s o n l o s v e c t o r e s d e l o s c o e f i c i e n t e s d e c r e c i e n tes en potencia de S de los polinomios del numerador y del denominador respectivamente. En la variable Y se almacena la salida del sistema en funcin del tiempo T. El comando plot permite presentar en la ventana de figuras la variable Y (salida) y la entra da U (rampa) en funcin del tiempo, obtenindose:
90
91
Otro formato mediante el cual el comando bode presenta el diagrama de bode, es a travs de las ecuaciones de estado representadas por las matrices de estado (A,B,C,D). Su Sintaxis e s : bode(A,B,C,D). Para especificar un rango deseado de frecuencias en las cuales se desea obtener el diagrama de Bode, se emplea un vector de frecuencias en el que se especifica la frecuencia inicial, el incremento y la frecuencia final. Por ejemplo: >>W=0:0.1:100; >>bode(y,u,W) Este comando muestra el diagrama de Bode entre 0 y 100 rad/s. Otra herramienta de anlisis en el d o m i n i o e n l a f r e c u e n c i a q u e o f r e c e M a t L a b es el diagrama de Nichols. Para obtener el diagrama de Nichols se utiliza el comando nichols, cuya Sintaxis es idntica a la del comando bode: nichols(A,B,C,D,W) si se emplean las matrices de estado o nichols(num, den,W) si se emplea la funcin de transferencia.
Si se define y como el vector de los coeficientes del polinomio del numerador y u como el deldenominador: >>y=[0 0 100]; >>u=[0.04 1 0]; >>nichols(y,u)
92
Otra herramienta de anlisis en el dominio en la frecuencia que ofrece MatLab es el diagrama de Nyquist. Para obtenerlo se utiliza el comando nyquist, cuya Sintaxis es idntica a la del comando bode y nichols: nyquist(A,B,C,D,W) si se emplean las matrices de estado o nyquist(num,den,W) si se emplea la funcin de transferencia. Si se define y como el vector de los coeficientes del polinomio del numerador y u como el del denominador: >>y=[1]; >>u=[1 6 5]; >>nyquist(y,u) M a t L a b p r e s e n t a e n l a ventana de figuras el diagrama de Nyquist:
93
Para obtener el margen de ganancia, el margen de fase, la frecuencia de cruce de ganancia y la frecuencia de cruce de fase MatLab dispone del comando margin. Las diferentes formas de utilizar este comando son: [Gm,Pm,Wcg,Wcp] = MARGIN(A,B,C,D) retorna los valores de margen de ganancia (Gm), margen de fase (Pm), frecuencia de cruce de ganancia (Wcg) y la frecuencia de cruce de fase (Wcp) cuando se trabaja con las matrices de estado (A,B,C,D). [Gm,Pm,Wcg,Wcp] = MA R G I N ( N U M , D E N ) cuando se trabaja con la funcin de transferencia. [Gm,Pm,Wcg,Wcp] = MARGIN(MAG,PHASE,W) toma los vectores de magnitud, fase y frecuencia del diagrama de Bode. M A R G I N ( A , B , C , D ) dibuja el diagrama de Bode y muestra con lneas verticales los m rg e n e s d e g a n a n c i a y d e f a s e .
>>num=10; >>den=[1 0.25 1]; >>[Gm,Pm,Wcg,Wcp] =margin(num,den) Gm = Inf Pm = 4.7487 Wcg = NaN Wcp = 3.3114 >>margin(num,den)
94
Para obtener el lugar de las races, MatLab dispone del comando rlocus. Las diferentes Sintaxis para utilizar este comando son: r l o c u s ( N U M , D E N ) c a l c u l a y dibuja el lugar de las races cuando se trabaja con la funcin de transferencia donde NUM y DEN son los vectores de los coeficientes en potencia descendiente de S de los polinomios del numerador y denominador de la funcin de transferencia G(S). MatLab g enerar automticamente un conjunto de valores de la ganancia K. rlocus(NUM,DEN,K): calcula y dibuja el lugar de las races cuando se trabaja con la funcin de transferencia y ha sido previamente definido el rango de valores de K. Por ejemplo de 0 a 100 co n incrementos de 10: k=0:10:100 R = rlocus(NUM,DEN,K) o [R,K] = rlocus(NUM,DEN) no dibuja el lugar de las races pero almacena en la matriz R, de longitud igual al nmero de elementos de K, la localizacin de las races. R tendr tantas columnas como races existan, estas pueden adems ser complejas. rlocus(A,B,C,D), R=rlocus(A,B,C,D,K), o [R,K]=rlocus(A,B,C,D) son equivalentes a las Sintaxis anteriores pero empleando las matrices de estado para hallar el lugar de las races.
95
Para la siguiente forma modificada de la ecuacin caracterstica de un sistema se desea hallar el lugar de las races mediante MatLab: >>num=[0,0,0,1]; >>den=[1,3,2,0]; >>rlocus(num,den) MatLab dispone del comando rlocfind que permite determinar los polos del sistema para una valor dete rminado de k. Su Sintaxis e s : [K,POLES] = rlocfind(num,den) p e r m i t e d e t e r m i n a r l o s p o l o s p a r a u n v a l o r determinado de k, cuando se trabaja con la funcin de transferencia. Por medio del curso en el lugar de las races se selecciona una localizacin, MatLa b retorna el valor de k para esta localizacin y los polos asociados a esta ganancia.
Cuando se trabaja con las matrices de estado, las Sintaxis para el comando rlocfind es: [ K , P O L E S ] = r l o c f i n d ( A , B , C , D ) . A l e j e c u t a r e l c o m a n d o r l o c f i n d c o n l a f u n c i n d e transferencia anterior, MatLab activa la ventana de figuras en espera de que el usuario seleccione un punto del lugar de las races mediante el cursor. En este caso el punto seleccionado fue 2.4623 en la parte real y - 0 . 0 1 3 2 e n l a p a r t e i m a g i n a r i a . [k,p o l e s ] = r l o c f i n d ( n u m , d e n ) Select a point in the graphics window selected_point = -2 . 4 6 2 3 - 0 . 0 1 3 2 i k = 1.6655 poles = -2 . 4 6 2 5 -0 . 2 6 8 8 + 0 . 7 7 7 3 i -0 . 2 6 8 8 - 0 . 7 7 7 3 i Para seleccionar el punto en el cual calcular los polos del lugar de las races sin usar el cu rsor se agrega un parmetro al comando rlocfind. Este debe ser el punto o los puntos en donde se desea tomar el valor de k. La nueva Sintaxis es: [K,POLES] = rlocfind(A,B,C,D,P) o [K,POLES] = rlocfind(num,den,P) P debe definirse previamente indicando la parte real e imaginaria del mismo. Por ejemplo: P=3+0i o P=1 -0 . 5 5 5 i .
96
donde G(S) es la funcin de transferencia de la planta o proceso; mientras que C(S) es la funcin de transferencia del controlador. Para el caso del controlador proporcional, C(S)=Kp, que es una constante o valor es c a l a r . E l c o n t r o l a d o r P I e s C ( S ) = K p + K i / S q u e p u e d e r e p r e s e n t a r s e c o m o u n a relacin ente dos polinomios. El controlador PID es C(S)=Kp + Ki/S + Kd S que se representa como:
que es de nuevo una relacin entre dos polinomios. Los coeficientes decrec i e n t e s en potencias de S de estos polinomio pueden ser almacenados en vectores en MatLab. Si se multiplica el controlador C(S) por la funcin de transferencia del proceso o planta G(S) se formar la funcin de transferencia de lazo abierto. Por ejemplo un G(S) puede ser:
97
Para obtener la respuesta en lazo abierto ante una entrada escaln unitario tenemos: >>Kp=50; >>Ki=1; >>Kd=10; >>num=[Kd Kp Ki]; >>den=[1 10 20 0 0]; >>step(num,den)
Para obtener la respuesta de lazo cerrado en el tiempo para una entra da escaln unitario se emplea el comando cloop, el cual genera los polinomios del numerador (numc) y denominador (denc) de la funcin de transferencia de lazo cerrado con realimentacin unitaria a partir de los polinomios de la funcin de transferencia de l a z o a b i e r t o ( n u m y d e n ) . S u Sintaxis es: [numc,denc]=cloop(num,den,sign) El signo de la realimentacin viene dado por sign. Para el ejemplo anterior, tenemos: >>Kp=500; >>Ki=1; >>Kd=100; >>num1=[Kd Kp Ki]; >>den1=[1 0]; >>num2=1; >>den2=[1 10 20 0]; > > [numc,numd]=cloop(conv(num1,num2),conv(den1,den2), - 1); >>step(numc,denc)
Se usa el comando c o n v p a r a o b t e n e r l a c o n v o l u c i n y m u l t i p l i c a c i n p o l i n o m i a l d e dos vectores. La salida obtenida mediante el comando s t e p se muestra a continuacin:
98
N o t a : E s t o da l a s c u r v a s e x a c t a s , n o l a s a p r o x i m a c i o n e s a s i n t t i c a s c o n l n e a s rectas.
Ejemplo: Para ,
Precaucin: El punto "." puede significar operacin elemento -p o r -e l e m e n t o o punto decimal. C u a n d o e s c r i b i m o s un dgito pegado al punto como "2.", el interpretador cree que es el nmero "2.0". Entonces si queremos calcular A2B2, donde A y B son a r r e g l o s y n o m a t r i c e s ( o s e a , q u e r e m o s o p e r a c i n e l e m e n t o -p o r- elemento), debemos escribir >>A.^2 .*B.^2 (notar el espacio despus del primer 2) y no >>A.^2.*B.^2
99
Para cambiar el color de trasfondo de la grfica: >> whitebg('c') donde c es el cdigo del color descrito en help plot.
Para establecer propiedades de la grfica, es ms fcil hacerlo al crearla que despus. Por ejemplo, para graficar con una lnea gruesa, >>plot(x,y,'linewidth',3) (En el momento de creacin) >>set(get(gca,'children'),'linewidth',3) ( D e s p u s d e c r e a d a )
100
101