Source: https://www.scribd.com/doc/74843695/Tutorial-de-Matlab-101-paginas-en-espanol
Timestamp: 2018-05-28 08:23:49+00:00

Document:
Uploaded by moteo85
así como en departamentos de investigación 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 . como una importante herramienta para la impartición de cursos universitarios. E n e n t o r n o s universitarios. física. 4 . prototipaje algorítmico. Permite resolver complicados problemas numéricos sin necesidad de escribir un programa. Está basado en un sofisticado software de matrices para el análisis de sistemas de ecuaciones. álgebra lineal.1. estadística. proceso digital de imagen. ingenierí a. En el mundo industrial. señal. teoría de c o n t r o l a u t o m á tico. MATLAB se ha convertido en una herramienta básica. Los usos más característicos de la herramienta los encontramos en áreas de computación y cálculo numérico tradicional. MATLAB goza en la actualidad de un alto nivel de implantación en escuelas y centros universitarios. MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos. tanto para los profesionales e investigadores de centros docentes. El nombre de MATLAB proviene de la contracción de los términos MATrix LABoratory y fue inicialmente concebido para proporcionar fácil acceso a las librerías LINPACK y EISPACK. química. posee además una extraordinaria versatilidad y capacidad para resolver problemas en matemática aplicada. las cuales representan hoy en dia dos de las librerías más importantes en computación y cálculo matricial. Es ampliamente usado por Ingenieros de Control en el análisis y diseño. sin necesidad de hacer uso de la programación tradicional. cálculo matricial. El programa permite realizar de un modo rápido la resolución numérica de problemas en un tiempo mucho menor que si se quisiesen resolver estos mismos problemas con lenguajes de programación tradicionales como pueden ser los lenguajes Fortran. análisis de series temporales para el proceso digital de señal. 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. ¿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. finanzas y muchas otras aplicaciones. etc. MATLAB está siendo utilizado como herramienta de investigación para la resolución de complejos prob l e m a s planteados en la realización y aplicación de modelos matemáticos en ingeniería. MATLAB integra análisis numérico. por ejemplo. Basic o C. proceso de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente. tales como sistemas e ingenieria de control.
que extienden significativamente el número de funciones incorporadas en el programa principal. Su nombre proviene de MATrix LABoratory. Una matriz de fluctuaciones de una señal puede ser un sonido o una voz humana. Fue el resultado de los proyectos Linpack y Eispack desarrollados en el Argonne National Laboratory. 1.1 Uso de Matrices MatLab emplea matrices porque con ellas se puede describir infinidad de cosas de una forma altamente flexible y matemáticamente eficiente. una matriz puede describir una relación lineal entre los componentes de un modelo matemático. señal. MicroVAX. Apple Macintosh y PC AT compatibles 80386 o superiores. 1. T a m b i é n o f r e c e S i m u l i n k 5 . control robusto. En este último sentido. denominados Toolboxes.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 . 1.2 Origen de MatLab MatLab fue originalmente desarrollado en lenguaje FORTRAN para ser usado en computadoras mainframe.MATLAB dispone también en la actualidad de un amplio abanico de programas de apoyo especializados. análisis financiero.3 Plataformas MatLab está disponible para una amplio número de plataformas: estaciones de trabajo SUN. identificación de sistemas. redes neurales. VAXstation y HP. lógica difusa. Por ejemplo una matriz puede representar el vuelo de una avión a 40.000 pies de altura. Además también se dispone del programa Simulink que es un entorno gráfico interactivo con el que se puede analizar. Estos Toolboxes cubren en la actualidad prácticamente casi todas las áreas principales en el mundo de la ingeniería y la simulación. Actualmente la licencia de MatLab es propiedad de MathWorks Inc . etc. 1. simulación de sistemas dinámicos. o un filtro digital de procesamiento de señales. Una matriz de pixeles puede ser una imagen o una película. Al pasar de los años fue complementado y reimplementado en lenguaje C. 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 . Gould. estadística. Y tal vez más significativamente. Apollo. Macintosh y Windows. Opera bajo sistemas operativos UNIX. una matriz puede describir el comportamiento de un sistema extremadamente complejo. modelizar y simular la dinámica de sistemas no lineales. matemáticas simbólicas. destacando entre ellos el 'toolbox' de proceso de imágenes. VAX.
procesamiento de señales. 6 . etc. redes neurales. Estas herramientas son colecciones de rutinas escritas en MatLab.como un anexo a MatLab y que interactua con él en lenguaje de MatLab y lenguaje de bajo nivel C. Simulink es usado para simulación modelado no lineal avanzado. por ejemplo control. Se ofrecen además numerosas herramientas especiales en "Toolboxes" para resolver problemas de aplicaciones específicas.
Librería de Aplicaciones de MATLAB 2. tanto directo como usando técnicas en el dominio de la frecuencia basadas en la FFT. La MATLAB C Math Library proporciona una amplia gama de funciones clásicas del programa MATLAB. incluyendo Chebyshebv tipo II y elíptico. Puede ser utilizada independientemente de MATLAB por programadores avezados en lenguaje C que necesiten prestaciones computacionales robustas y de alto rendimiento. Funciones matemáticas elementales y especializadas. Este incluye funciones para: • • • • • Análisis de filtros digitales incluyendo respuesta en frecuencia.2. incluyendo la transformación para potencias de dos y su inversa. proporcionadas como libreri a s o b j e t o . y transformada para no potencias de dos. Para aquellos usuarios que sean nuevos en la tecnología MATLAB. retardo de grupo. 2. se elimina así cualquier necesidad de volver a reescribir algoritmos en lenguaje C para ser utilizada por programas externos. El objetivo principal de la C Math Library es soportar el desarrollo de aplicaciones 'stand alone' utilizando MATLAB y su compilador. 7 . retardo de fase.2 THE MATLAB C MATH LIBRARY La MATLAB C Math Library proporcio n a a l u s u a r i o l a c a p a c i d a d c o m p u t a c i o n a l d e MATLAB en una libreria en formato objeto enlazable. Chebyschev tipo I. Diseño de filtros FIR mediante el algorítmo ó p t i m o d e P a r k s -McClellan. Para los usuarios clásicos de MATLAB. Junto con el compilador de MATLAB. Butterworth. Diseño de filtros IIR. Procesamiento de la transformada rápida de Fourier FFT. la C Math Library permitirá a los programadores de aplicaciones utilizar MATLAB para la creación de aplicaciones 'stand alone'. i n c l u y e n d o básicamente las siguientes categorías de funciones presentes en MATLAB y ficheros M compilados: • • • Algebra lineal.1 SIGNAL P ROCESSING TOOLBOX MATLAB tiene una gran colección de funciones para el procesamiento de señal en el Signal Processing Toolbox. Implementación de filtros. esta tecnología ofrece una nueva vía para la reducción del tiempo de desarrollo y puesta a punto de aplicaciones. Operadores lógicos y aritméticos.
En equipos UNIX estas librerias pueden ser igualmente obtenidas como librerías de tipo estáti c o ( s t a t i c l i b r a r i e s ) o b i e n c o m o l i b r e r í a s c o m p a r t i d a s ( s h a r e d libraries). 8 . (Nota: Las funciones del tipo Handle Graphics no están incluidas en la C Math Library).2 Utilización de MATLAB y de su compilador Para construir una aplicación del tipo 'stand alone' que incorpore código originalmente desarrollado como ficheros M de MATLAB . Matrices especiales.2. Polinomios e interpolación. Gestión de cadenas de caracteres. 2. 2. Por otra parte la librería de toolboxes (toolbox library) contiene versiones compiladas de la mayoría de ficheros M de MATLAB para cálculo numérico. Entradas y Salidas. deberán seguirse los pasos siguientes: 1. Gestión de memoria y errores. estas librerías pueden obtenerse como DLL's en el entorno Microsoft Windows o como librerias compartidas en equipos Apple MacIntosh. lógico y utilidades.2.• • • • • • • Matrices elementales y manipulación de vectores. Enlazar el código resultante con la MATLAB C Math Library y con cualquier tipo de ficheros y prog ramas específicos que hayan sido previamente definidos por el usuario. análisis de datos y funciones de acceso a ficheros y matrices. Compilar el código C fuente en código objeto utilizando un compilador ANSI C. Respecto al mundo PC. 2. Estadística básica y análisis de datos. El producto está dividido en dos categorías (como librerías objeto): la librería (built-in library) contiene versiones de las funciones de MATLAB en lenguaje C del tipo numérico. 3.1 Desarrollo de aplicaciones utilizando la MATLAB C Math Library La construcción y desarrollo de aplicaciones utilizando esta librería es un proceso de amplias perspectivas una vez se tiene un dominio adecuado de su operativa. Utilizar el compilador de MATLAB para convertir ficheros M en C mediante la utilización de la instrucción mcc -e (la cual es externa a MATLAB).
vectorial o matricial con la misma facilidad sintáctica. Transformación de sistemas de coordenadas. Funciones trigonomé tricas y de potencias. imaginarias y complejas conjugadas. 2. Multiplicación y división de polinomios.2. Construcción polinomial.4 Lista parcial de funciones Funciones matemáticas Funcionales especiales y elementales Funciones gamma. Diferenciación de polinomios. Vandermonde. Algebra lineal numérica Valores propios y descomposición de matrices. logarítmica y raíces cuadradas. La MATLAB C Math Library contiene más de 300 funciones numéricas. Polinomios e interpolación Interpolación 1 . etc. Toeplitz. normas. Las funciones de álgebra lineal han sido obtenidas de las librerias mundialmente reconocidas LINPACK y EISPACK. Hadamard.3 Velocidad y Precisión Los algoritmos utilizados en la MATLAB C Math Library han sido desarrollados por un grupo de renombrados expertos en programación algorítmica de funciones de tipo matemático (algebra lineal y cálculo numérico).2. Partes reales. etc. Interpolación por splines cúbicos. Funciones generales de evaluación de matrices. Determinantes. Matrices de Hilbert. rangos. 9 . Matriz identidad y otras matrices elementales. Todas estas funciones le permitirán operar en datos de tipo escalar. beta y elíp ticas. lógicas y de utilidad.2. Ma triz exponencial.D y 2 .D. Evaluación de polinomios. Residuos de polinomios y residuos. Matrices inversas y factorización de matrices.
2. Conversión de tipos de datos Fortran. Filtros digitales 1.6 Requerimientos La libreria MATLAB C Math Library cumple con la normativa estándar ANSI para compiladores C.5 Utilidades Gestión y mantenimiento de errores. 2. multiplicación. Estadística y análisis de Fourier Convolución 1 . Matrix traspuesta. sum. min. la librería trabajará con aquellos enlazadores suministrados con la mayoría de compiladores ANSI C.2. que vienen 10 . Operaciones algebráicas y lógicas Suma. Deconvolución.Métodos numéricos no lineales Búsqueda de ceros en funciones de una única variable. Operadores lógicos AND. resta. Conversión 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 . Transformadas de Fourier 1 .D y 2 . Resolución numérica de integrales.2. Finalmente. Magnitudes y ángulos de fase.D y 2 . Coeficientes de correlación y m a t r i c e s d e c o v a r i a n z a . mean y otras funciones de estadística básica. NOT y XOR. Minimización de funciones de una o más variables. Clasificación de matrices. Funciones max.D y 2 -D . Solución numérica de ecuaciones diferenciales ordinarias. Funciones de fecha y hora.D.D y s u i n v e r s a . división y potencias de matric e s . OR.
compilación y enlazado se inicia a través de una simple instrucción de MATLAB. 2. 2. El proceso en cuestión se realiza en tres pasos: 1.The MATLAB Compiler . 2. El compilador de MATLAB traduce las funciones MATLAB en sus funciones equivalente en lenguaje C.3 THE MATLAB COMPILER TOOLBOX E l n u e v o c o m p i l a d o r d e M A T L A B . El compilador de MATLAB automatiza la creación de ficheros MEX de C (MATLAB Ejecutables). el compilador MATLAB elimina consumo de tiempo y la conversión manual de código. incluyendo las rutinas 'Handle Graphics'. El intérprete de MATLAB enlaza automáticamente la función de MATLAB como 'runtime'. Mediante la conversión automática de ficheros M en código C fuente. T o d o e l p r o c e s o d e c o n v e r s i ó n .3. Pueden construirse aplicaciones que se ejecutaran independientemente de MATLAB. Los desarrollos 11 . si ese es el caso. el compilador realiza llamadas a las rutinas de la libreria C para muchas de las instrucciones contenidas en el propio núcleo de MATLAB. que está disponible separadamente.1 Generación Automática de ficheros MEX. Como un generador MEX automático. Mientras se efectúa una conversión de los ficheros M en ficheros MEX. Estas aplicaciones externa s requieren de la MATLAB C Math Library. Este compilador puede ser utilizado de dos modos: 1. Existen algunas funciones. Esta opción es ideal para usuarios que quieren sacar la m á x i ma ventaja de MATLAB desde cualquier otra aplicación o producir código C eficiente a partir de los algoritmos desarrollados con MATLAB. Pueden convertirse convenientemente ficheros M en código fuente C para incorporarlos posteriormente en los ficheros externos desarrollados en lenguaje C. 3. L o s f i c h e r o s M E X c o n t i e n e n c ó d i g o o b j e to q u e e s d i n á m i c a m e n t e e n l a z a d o c o m o 'runtime' en el entorno MATLAB por el intérprete del programa.de MATLAB. Pueden convertirse ficheros M en funciones C ejecutables que se ejecutaran desde dentro de MATLAB. Como un generador de código C fuente. para las cuales se generan de nuevo llamadas 'c a l l b a c k s ' a M A T L A B .2. La instrucción MATLAB cmex llama al compilador y al enlazador del sistema para construir un fichero MEX objeto.p e r m i t e c r e a r c ó d i g o C optimizado procedente de ficheros M .M files .
La velocidad de mejora de este rendimiento. E n l a z a r e l c ó d i g o r e s u l t a n t e c o n l a s l i b r e r í a s m a t e m á t i c a s C d e M A T L A B y los ficheros específicos que dispongamos.10. 2.3. Por ejemplo. 2. Watcom C V. mediante la utilización del compilador se obtendrán significativas mejoras. vectorial. Desactivar el control de parámetros de entrada y el redimensionamiento dinámico de vectores.3. En algunos casos el rendimiento puede mejorar hasta en 200 veces la ejecución si la comparamos con el modo de trabajo interpretado del programa. Utilizar una variable concreta como variable escalar. 2. Utilizar el compilador de MATLAB para convertir ficheros M en C con la instrucción externa mcc . puede directamente: • • • Tratar todas las variables en ficheros como datos enteros y/o reales. 2.e. Ud.3 Opciones de ajuste del rendimiento E l c o m p i l a d o r d e M A T L AB ofrece varias opciones que permiten generar el programa final de la forma más eficiente.del tipo 'stand-alone' requieren para ello de la MATLAB C Math Library.2 Rendimiento del compilador Mediante la compilación de los ficheros M se puede obtener un rendimien to significativo. Sin embargo. Compilar el código C fuente en código ob j e t o u t i l i z a n d o u n c o m p i l a d o r C . Las opera ciones matriciales y vectoriales ejecutadas desde MATLAB ya están fuertemente optimizadas en su diseño. real o una combinación de estas.3.4 Requerimientos del sistema Para utilizar el compilador de MATLAB para crear ficheros MEX se necesita la versión de MATLAB 4. entera. 3.0 o superior Power MacIntosh MetroWer ks CodeWarrior C V. depende fuertemente de cada aplicación.2c y tener instalado uno de los siguientes compiladores de lenguaje C: PC/Microsoft Windows Metaware High C/C++ V.3.7 12 .0 o superior. Obsérvese que las funciones gráficas de MATLAB no están incluidas. Para construir aplicaciones 'stand-alone' se debería seguir los siguientes pasos: 1.
1. Cualquiera que sea el equipo informático que vaya a utilizarse para desarrollar aplicaciones 'stand alone' se requiere. que se tengan las MATLAB C Math Library y un compilador ANSI C. Funciones matemáticas 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 matemáticas aplicadas. y los programas realizados para este último. además del compilador de MATLAB. 2. Los toolboxes de MATLAB pueden incluir ficheros MEX y otros componentes que no son compilables. Algebra lineal exacta: Inversas. l o s p r i n c i p a l e s t i p o s d e o p e r a c i o n e s s o p o r t a d o s son los siguientes: • • • • • Algebra simbólica: Derivación.MPW MrC V. no están soportadas por el compilador de MATLAB . canónicas de matrices simbólicas.4 SYMBOLIC MATH TOOLBOX El Toolbox de Matemática Simbólica. añade a MATLAB la capacidad de realizar cálculos simbólicos basados en MAPLE V © soportando además (The Extended Symbolic Math Toolbox) las librerías especializadas.1.0b2 o PPCC version 1.5 680x0 MacIntosh MPW C Versión 3. Este no puede generar código de los diagramas de bloques de SIMULINK. Resolución de ecuaciones: Resolución numérica y simbólica de ecuaciones algebraicas y diferenciales. Entre o t r o s . integración y simplificación de expresiones matemáticas.3.0. The Basic Symbolic Math Toolbox es una colección de más de 50 funciones MATLAB las cuales permiten acceder al 13 . 2.4 UNIX y VMS Cualquier compilador ANSI C (Nota: El compilador de SunOS 4. Existen dos versiones del mismo Toolbox. como load y eval. autovalores y formas Aritmética de precisión variable: Evaluación de expresiones matemáticas con diversos grados de precisión. determinantes.5 Limitaciones del código compilado Ciertas instrucciones.X no es un compilador ANSI C).
en general multivariable y no lineal. Asimismo. Problemas de aproximación a un conjunto de objetivos. y el acceso a los paquetes de funciones de más de veinte campos de las matemáticas e s p e c i a l e s a p l i c a d a s . con o sin condiciones. ya que los ficheros contenidos en él son totalmente autónomos.kernel de MAPLE utilizand o l a S i n t a x i s y el estilo del lenguaje MATLAB. en general multivariable y no lineal. Cálculo de soluciones de un sistema de ecuaciones continuas y. condicionado a que la solución satisfaga ciertas condiciones de desigualdad (g(x)<=0) y/o igualdad (g(x)=0). si lo que se desea es obtener toda la potencia de cálculo del entorno. Como caso particular. sin imponer ninguna restricción o condición a la solución. no lineales. Resulta conveniente para una comprensión y mejor manejo de la toolbox poseer conocimientos básicos previos de análisis de funciones reales. Cálculo de un extremo local (máximo o mínimo) de una función real f(x). Solución de problemas minimax. en general. Programación lineal. matrices y teoría de extremos. Programación cuadrática. Es posible utilizar este Toolbox sin conocimiento previos de MAPLE. de funciones reales las cuales son generalmente multivariables y no lineales. será necesario un a mplio conocimiento del manejo y la programación de MAPLE 2. The Extended Symbolic Math Toolbox aumenta esta funcionalidad incluyendo todas las características de programación de MAPLE. Sin embargo. posee funciones para la resolución de algunos tipos de problemas matriciales en extremos. se incluye una rutina especial para problemas de mínimos cuadrados no lineales. Algunas de las áreas básicas que cubre este toolbox para MATLAB son las siguientes: • Cálculo de un extremo local (máximo o mínimo) de una función real f(x). • • • • • • • 14 . Problemas de mínimos cuadrados no negativos.5 OPTIMIZATION TOOLBOX El toolbox de optimización consta de un conjunto de funciones que resuelven problemas de extremos.
9 NAG FOUNDATION TOOLBOX Este toolbox proporciona un acceso interactivo. los diseñadores podrán beneficiarse de muchos de los toolboxes desarrollados para este entorno en materia de diseño de sistemas lineales. numerosas estaciones UNIX y ordenadores Digital VAX VMS. a u n amplio conjunto de funciones matemáticas y estadísticas contenidas en las clásicas NAG Fortran Libraries de la empresa The Numerical Algorithms Group Incorpora más de 200 ficheros M. La NAG Foundation Toolbox es resultado de la colaboración corporativa que actualmente están llevando a cabo The MathWorks Group y The Numerical Algoriths Group para proporcionar un rápido acceso desde MATLAB a un importante de rutinas matemáticas contenidas en la NAG Foundation Library. e c u a c i o n e s d i f e r e n c i a l e s ordinarias y en derivadas parciales. Actualmente. problemas de cuadratura adaptativa multidimensional. Como resultado de esto. El toolbox NCD es un componente avanzado del entorno integrado de desarrollo que ofrecen a los especialistas los programas MATLAB y SIMULINK. Los nombre de las funciones han sido directamente tomados de las especificaciones de función clásica que añade The Numerical Algorithms Group para sus librerías. los cuales cubren un amplio espectro de áreas d e i n t e r é s . Este toolbox se encuentra actualmente disponible para una amplia va riedad de plataformas informáticas. Por ello. cuadratura. posteriormente. encontraran bastante cómodo acceder a las rutinas NAG utilizando la nomenclatura original. podrán utilizarse toolboxes para el análisis de sistemas lineales para el diseño inicial. La NAG Foundation Toolbox añade también rutinas concretas para campos específicos tales como la resolución de problemas con condicion es de contorno. 18 .siempre que se detecten determinadas variaciones en los componentes del sistema. etc. destacando ordenadores personales tipo PC o Apple MacIntosh. puede invocarse NCD para un mejor ajuste paramétrico y para la optimización de los controladores. estadística. 2. aquellos usuarios de las librerías Fortran de NAG que a la vez sean usuarios de MATLAB. Además. este toolbox incorpora 250 rutinas matemáticas. podrán utilizarse modelos no lineales más sofisticados utilizando SIMULINK. Por ejemplo. Algunas de las áreas de cobertura de la NAG Foundation Toolbox son las siguientes: • • Ceros de polinomios Raíces de una o más ecuaciones de tipo trascendental. e n t r e l a s qu e c a b e d e s t a c a r o p t i m i z a c i ó n . ajuste de curvas y superficies y el acceso a los algoritmos LAPACK para la resolución de ecuaciones lineales. desde dentro de MATLAB.
Rutinas de clasificación. Resolución de ecuaciones lineales simultáneas.• • • • • • • • • • • • • • • • • • Suma de series. Aproximación de funciones especiales. Factorización de matrices. Métodos multivariantes. Aproximación de curvas y superficies. Análisis de series temporales. Ecuaciones diferenciales en derivadas parciales. Ecuaciones diferenciales ordinarias. Cuadraturas. Valores y vectores propios. Ecuaciones lineales (LAPACK). Generación de números aleatorios. 19 . Maximización y minimización de funciones. Análisis de correlación y regresiones. Estadística básica. Estadística no paramétrica.
MATLAB trabaja esencialmente con matrices numéricas rectangulares. La manera más fácil de entrar matrices pequeñas es enumerando los elementos de ésta de tal manera que: • • • los elementos estén separados por blancos ó comas. INICIANDO MATLAB Después de ejecutar el programa MatLab desde el sistema operativo empleado. >>quit 4.3. l os elementos estén cerrados entre corchetes. aparece el indicador de comandos el cual está listo para recibir instrucciones en lenguaje MatLab. 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 después del símbolo >> y se presiona la tecla Enter. Este indicador es de la siguiente forma: >> Al iniciar el uso de MatLab están disponibles dos comandos de ayuda y demostración. por ejemplo haciendo doble click sobre el icono de MatLa b e n a m b i e n t e s Windows. Para cerrar o finalizar el uso de MatLab se usa el comando quit . Por ejemplo: >>help permite obtener una ayuda sobre los diferentes comandos de MatLab. muestre el final de cada fila con . Puede ejecutarse un comando si este está escrito después del símbolo >> y se presiona la tecla Enter. >>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. 4 5 6. Si la matriz a introducir es muy grande se puede utilizar el siguiente formato: 20 . 7 8 9 ] resultaría 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. Ejemplo: A = [ 1 2 3. (punto y coma). USO DE COMANDOS La primera forma de interactuar con MatLab es a través de la línea de comandos. [ ].
por una fila o una columna (vector) o por una serie de filas y columnas (matriz propiamente dicha). puede presentarse escri biendo la variable después del prompt (>>). Estas pueden estar formadas por un sólo elementos (escalar). >>A=[1 2 3. 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 ( . A(1)=1. A(2)=2 y A(3)=3. A= 1 Para no presentar el valor de la variable creada. debe agregarse punto y coma (. Estos elementos deben separase con espacios en blanco o comas (. por ejemplo: >>A=[1 2 3] define A como un vector de tres elementos. Al definir A automáticamente MatLab presenta en pantalla su valor. >>A Se pueden redefinir variables. >>A=1 define A como un escalar de valor 1. Ya que MatLab se basa en el álgebra de matrices como ejemplo crearemos una matriz. Después de crear una variable.). 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 .) al final del comando. ) o c o n retorno (Enter).A = [1 2 3 4 5 6 7 8 9] El comando load y la función 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.
22 . T a m b i é n d i s t i n g u e l a s l e t r a s mayúsculas de las minúsculas. 8 0 0 0 Nos podemos referir a elementos individuales de la matriz con índices entre paréntesis.7321 4.1 Elementos de matrices Los elementos de una matriz pueden ser cualquier expr e s i ó n d e M A T L A B . M A T L A B a u t o m á t i c a m e n t e c r e a la variable a n s p a r a g u a r d a r e l r e s u l t a d o . A = [A.(1+2+3) *4/5] resultaría en x = -1 .3000 Para añadir otra fila a la matriz A de arriba podemos hacer lo siguiente: r = [10 11 12].3.2 Instrucciones de MATLAB y Variables Si omites el nombre de la variable y e l s i g n o " = " . Ejemplo: En el ejemplo anterior x(4) = abs(x(1)) resultaría x= -1. 3 0 0 0 1 . 7 3 2 1 4 . Todos los nombres de funciones deben ser en letras minúsculas.sqrt(3).8000 0 1.3000 1. r] y resultaría A= 1 2 3 4 5 6 7 8 9 10 11 12 4.4. Ejemplo: x = [-1.
Ejemplo: x = sqrt(log(z)) 4. Z en el archivo temp. Al terminar una sesión de MATLAB. s a v e guarda todas las variables en un archivo llamado matlab. 4.4 Variables Permanentes Las variables permanentes son aquellas con significado especial.5 Funciones Las funciones que utiliza MATLAB son intrínsecas al procesador de éste. las variables en el espacio de trabajo se borran. Puedes combinar las funciones de acuerdo a tu necesidad. Usando el comando load temp las obtienes nuevamente del archivo temp. 4. 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 .mat.0 al próximo número de punto flotante mayor. Estas son por ejemplo las variables a n s y e p s . Y. Su valor inicial es la distancia de 1. 23 .mat.3 Obteniendo Información del Espacio de Trabajo Los ejemplos que hemos dado se han guardado en variables que están en el espacio de trabajo de MATLAB. La variable e p s es una tolerancia para determinar.mat. Se puede utilizar s a v e y load con otros nombres de archivos. Si deseas guardar tu espacio de trabajo escribes s a v e . A d e m á s d e éstas funciones todo usuario también puede crear otras funciones. y que no se pueden eliminar. Para listar las variables en el espacio de trabajo se utiliza el comando who . Para ver información adicional acerca de estas variables se utiliza el c o m a n d o w h o s .4. Por ejemplo la singula r i d a d y el rango. ó para guardar solo variables seleccionadas Ejemplo: save temp X Y Z Este ejemplo guarda las variables X. load y s a v e también pueden impor tar y exportar información de archivos ASCII.6 Saliendo y Guardando el Espacio de Trabajo Para salir de MATLAB se escribe quit ó exit .
x(v(n))]. . Índices Podemos referirnos a elementos individuales de matrices encerrando sus índices en paréntesis. 1) resultaría A= 1 2 3 4 5 6 7 8 10 Un índice puede ser un vector. x(v(2)). Para matrices.7 Manipulación de Vectores y Matrices Generando Vectores Los dos puntos. Por ejemplo x = 1:5 genera un vector fila que contiene los números enteros del 1 al 5: x = 1 2 3 4 5 No necesariamente se tiene que incrementar por números enteros. pueden ser decimales. Si x y v son vectores. Ejemplo: A= 1 2 3 4 5 6 7 8 9 A(3.. 3) + A(3.4. 3) = A(1. números negativos ó constantes.. los índices de vectores permiten acceso a submatrices contiguas y no -con t i g u a s . 24 .. :. son importantes en MATLAB. entonces x(v) es [x(v(1)).
transposición 4.Por ejemplo. 3) especifica la submatriz 5 x 1. También A(1:5. que consiste de los primeros cinco elementos en la tercera columna de A. Es decir. una matriz 1 x 1. 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 .parte inferior triangular triu .8 Operaciones de Matrices Matrices Transpuestas El caracter ' (apóstrofe) denota la transpuesta de la matriz.extrae ó crea una diagonal t r i l . Manipulación de Matrices diag . Podríamos tener una instrucción como: A(:. Las operaciones suma y resta también está definidas si uno de los operandos es un escalar. es decir. suponga que A es una matriz 10 por 10. entonces A + B se puede calcular. Utilizando solo los dos puntos denota todo lo correspondiente a la fila ó columna. si A y B son matrices 3 x 3. Ejemplo: x= -1 0 2 25 . [3 5 10]) = B(:. Si tenemos la matriz A y llamamos B = A'. ó vector columna. quinta y décima columna de A con las primeras tres columnas de B. B es la transpuesta de la matriz A.parte superior triangular ' . Entonces A(1:5. 1:3) que reemplaza la tercera. Sumando y Restando Matrices Las operaciones suma (+) y resta (-) son definidas para las matrices siempre y c u a n d o é s tas tengan la misma dimensión.
4 5 6]. 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.y = x . define las matrices A y B. 3 2 1]. B=[6 5 4. Note que y' * x produce el mismo resultado.1 resultaría y = -2 -1 1 Ejemplo: >>A=[1 2 3. Para sumarlas se escribe la operación: >>A+B El resultado de la operación 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 operación de multiplicación de matrices está definida siempre que el número de columnas de la primera matriz sea igual a el número de filas de la segunda matriz. 26 .
s i n g u l a r .é s i m a p o t e n c i a y e s t a d e f i n i d o s i A e s u n a matriz cuadrada y n un escalar. e n t o n c e s A\B y B/A corresponden a la multiplicación izquierda y derecha de B por el inverso de A. El resultado es obtenido directamente sin la computación del inverso. puede multiplicar. inv(A) * B y B * inv(A) respectivamente. cualquier matriz. ó ser multiplicado por. al menos. Usando Exponentes con Matrices L a e x p r e s i ó n A ^ n e l e v a A a l a n. B/A esta definido en términos de A\B p o r B / A = ( A ' \B ' ) ' . Funciones Matriciales Trascendentales y Elementales MATLAB considera expresiones como exp(A) y sqrt(A) como operaciones de a r r e g l o s . Dividiendo Matrices En división de matrices. como la matriz exponencial y la matriz 27 . Cada columna de X tiene. se factoriza utilizando la ortogonalización de Householder con pivoteo de columnas. d e f i n i d a s e n los elementos individuales de A.Producto de una matriz por un vector El producto de una matriz y un vector es un caso especial del producto matrizmatriz y naturalmente. El resultado es una matriz X con las mismas dimensiones que B. El resultado es una matriz X m-p o r -n donde m es el número de columnas de A y n es el número de columnas de B. Si A no es cuadrada. X = A\B es una solución a A * X = B X = B/A es una solución a X * A = B A \B es definido cuando B tiene la misma cantidad de filas que A. También puede calcular funciones trascendentales de matrices. un escalar como pi. k componentes diferentes de cero. el método usado es la Eliminación Gaussiana. esto es. donde k es el rango efectivo de A. Si A es cuadrada. si A es una matriz cuadrada no. 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.
especiales están definidas solamente para Otras funciones elementales de matrices son: poly .0000 28 .0000 2.9 Operaciones de Arreglos El término operaciones de arreglo se refiere a las operacio n e s d e a r i t m é t i c a elemento por elemento. *y resulta z = 4 10 18 Las expresiones A.determinante trace .) antes de un operador indica una operación de arreglos elemento por elemento. Suma y Resta de Arreglos Para suma y resta./B y A.calcula los valores propios de la matriz 4.p r o d u c t o t e n s o r i a l d e K r o n e c k e r eig . Un punto (. Estas operaciones matrices cuadradas. las operaciones de arreglos y las operaciones de matrices son iguales.logarítmica. y = [4 5 6]. \B d a n l o s c o c i e n t e s d e l o s e l e m e n t o s i n d i v i d u a l e s .\ y resulta z= 4.p o l i n o m i o c a r a c t e r í s t i c o d e t . z = x. Multiplicación y División de Arreglos El símbolo .traza kron . Ejemplo: z = x. Ejemplo: x = [1 2 3].* denota multiplicación de arreglos elemento por elemento.5000 2.
^ denota exponenciación elemento por elemento.5000 >> a=[2.10 Ejemplos: Operaciones Aritméticas Ejemplos: >> 1/2 ans = 0.2.1. 4.Exponentes con Arreglos El símbolo .2] a= 2 1 2 >> b=[1.5000 >> 2\ 1 ans = 0.3] b= 1 2 3 >> a' ans = 2 1 2 >> b' ans = 1 2 3 29 .
*b ans = 2 2 6 >> a*b' ans = 2 4 6 1 2 3 2 4 6 >> a.*3 ans = 3 6 9 30 .>> a*b ??? Error using ==> * Inner matrix dimensions must agree. >> a*3 ans = 6 3 6 >> b.*b' ??? Error using ==> .* Matrix dimensions must agree. >> a.
6667 >> a^b ??? Error using ==> ^ Matrix dimensions must agree.3333 0.6667 >> a. >> a. >> a.^2 ans = 4 1 4 >> 2^a ??? Error using ==> ^ Matrix must be square./3 ans = 0.>> a/3 ans = 0.6667 0.^b ans = 2 1 8 >> a^2 ??? Error using ==> ^ Matrix must be square.3333 0. 31 .6667 0.
33333333333333e00 e) format bank 1.3333 b) format short e 1. utilizada .^a ans = 4 2 4 Precisión Aproximadamente 16 dígitos significativos computadoras utilizando aritmética flotante IEEE.>> 2.3333e+00 c) format long 1.33 f) format hex 3ff5555555555555 32 .33333333333333 d) format long e 1.- en Formatos de salida : 4/3 a) format short 1. El rango aproximado es: 1 0 ^-3 0 8 a 1 0 ^ 3 0 8 .
7 8 9] define la matriz A y el siguiente comando A' calcula y presenta en pantalla la transpuesta de A. resolver problemas.4 5 6.M c o n s i s t e d e u n a s e c u e n c i a d e i n s t r u c c i o n e s n o r m a l e s d e M A T L A B . son archivosordinarios de texto ASCII. Los comandos son utilizados para hacer análisis.M.1 Archivos -M: Comandos y Funciones Los archivos de disco que contienen instrucciones de MATLAB se llaman a r c h i v o s. ó diseñar secuencias 33 . MATLAB simplemente ejecuta los comandos encontrados en dicho archivo. Hay dos tipos de archivos .M.M: los de comandos y las funciones.M se puede llamar a sí mismo recursivamente. Los archivos de funciones. Un archivo . Puedes crear archivos.5.m" como la última parte de su nombre de archivo. q u e p r o b a b l e m e n t e i n c l u y e n r e f e r e n c i a s a o t r o s a r c h i v o s.1 Generalidades Programar en MatLab es usar una serie de comandos que permitan realizar una tarea o función específica. permiten añadir a MATLAB funciones adicionales expandiendo asi la capacidad de este programa. Los archivos de comandos. Un archivo . Las instrucciones en un archivo de comando operan globalmente en los datos en el espacio de trabajo.M utilizando un editor de texto ó procesador de palabras. Ambos. Estos pueden ser escritos uno por uno a través de la línea de comandos: >>A=[1 2 3.7 8 9] A= 1 2 3 4 5 6 7 8 9 >>A' ans = 1 4 7 2 5 8 3 6 9 El primer comando A=[1 2 3. Esto es así porque siempre tienen una extención de ". Archivos de Comandos Cuando un archivo de comandos es invocado. comandos y funciones.1. automatizan secuencias largas de comandos. PROGRAMANDO CON M ATLAB 5. 5.4 5 6.
y luego grafica estos. Para utilizar estos escriba demos en el "prompt" de MATLAB. % Para matrices. mean(x) es un vector fila conteniendo el valor medio de cada columna. i. % Para vectores. suponga que el archivo f i b o . 34 . a diferencia de un comando. crear nuevas funciones para MATLAB utilizando el lenguaje propio de MATLAB. El archivo m e a n . 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 números de Fibonacci. n] = size(x).. while f(i) + f(i+1) < 1000 f(i+2) = f(i) + f(i+1). Los archivos de funciones se utilizan para extender a MATLAB. las variables f y i permanecen en el espacio de trabajo. end y = sum(x)/m. 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 . Los programas de demostraciones incluidos en MATLAB son ejemplos de como usar comandos para hacer tareas más complicadas. se deben de pasar los argumentos. i = 1. En una función. i = i + 1. 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].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. [m. Por ejemplo.e. if m == 1 m = n. mean(x) retorna el valor medio de los elementos del vector x. Luego que la ejecución del archivo es completada. e s un archivo de función. m contiene las instrucciones: function y = mean(x) % Valor medio. Las variables definidas y manipuladas dentro de la función son locales a esta y no operan globalmente en el espacio de trabajo.
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. Las variables m. Sin esta línea sería un archivo de comando.m tipo comando. y los argumentos de salida. m: La primera línea declara el nombre de la función. en la línea de comandos se debe escribir el nombre del archivo: >>ejemplo x = 1 4 9 16 25 35 . z = 1:99.) No es necesario asi gnar los enteros de 1 al 99 en la variable x. (O si existen. el valor promedio es encontrado escribiendo m e a n ( z) que resultaría ans = 50 Veamos algunos detalles de m e a n . entonces. Para ejecutarlo. Este vector que contenía los enteros de 1 a 99 fue pasado ó copiado a mean donde se convirtió en una variable local llamada x. Utilizamos mean con una variable llamada z. n. end x % Fin del archivo-m Este ejemplo es un archivo . Las primeras líneas documentan el archivo . permanecen sin cambios. % indica que el resto de la línea es un comentario.(Las lineas que comienzan con "%" son interpretadas como comentarios por MATLAB). e y son locales a mean y no existen en el espacio de trabajo. los argumentos de entrada. 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 . La existencia de este archivo en el disco duro define una nueva función en MATLAB llamada m e a n .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. por ejemplo. for i=1:n x(i)=i^2.
se tiene: 36 . La función promedio usa por parámetro un vector.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). for i=1:n p=p+x(i). p=0. 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 parámetro. Al observar el contenido de dicha ventana luego de ejecutar la función promedio. end p=p/n.6667 MatLab presenta las imágenes en una ventana de figuras. plot(x). >>A=[1 2 4 3 7 5 6 1 2 0 8 5]. >>promedio(A) ans = 3. P a r a e j e c u t a r l a f u n c i ó n . Este vector debe ser definido previamente.
5.1.tangente inversa 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. 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.2 Otras funciones Funciones Matemáticas Algunas funciones trigonométricas utilizadas por MATLAB son: sin . 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 .coseno inverso a t a n .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.m i n c o r p o r a d o s ( b u i l t-in).seno cos .coseno t a n .tangente asin .m se usa el comando t y p e s e g u i d o d e l n o m b r e del archivo. Puede agregársele archivos .m definidos por el usuario almacenando los mismos en el directorio principal de MatLab. todos ceros 37 .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 tamaño de A. >>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 P a r a v e r e l c o n t e n i d o d e u n a r c h i v o.n) FFT de n puntos muestrales ifft(x) Transformada inversa rápida de Fourier del vector x ifft(x.seno inverso a c o s .Esta imagen es el resultado del comando plot(x) al ejecutar la función promedio.
U] = lu(A). Esta factorización se utiliza para obtener el inverso y el determinante. Para obtener la factorización LU de A escribimos. También es la base para la solución de sistemas lineales.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 Ejemplos >> A = 0 7 -6 1 0 0 0 1 0 >> toeplitz(A) ans = 0 1 0 7 0 1 -6 0 0 1 0 1 0 7 0 1 -6 0 0 1 0 1 0 7 0 1 -6 P r o d u c t o d e d o s matrices triangulares. [L. 38 .
m contiene las siguientes instrucciones: function y = humps(x) 39 . S . Esta factorización se utiliza para resolver sistemas lineales con más ecuaciones que desconocidas.M l l a m a d o h u m p s . Un ejemplo de una función es el archivo -M l l a m a d o h u m p s . Descomposición de Valores Propios La Descomposición de Valores Propios se utiliza para obtener los valores y vectores propios de una matriz cuadrada A. de tipo Ejemplo: El archivo. rango y acondicionamiento asociadas son: c o n d .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 matemáticas mediante archivos. norma F. La asignación [ X . m.Factorización Ortogonal ó Factori z a c i ó n Q R . La función s v d ( A ) devuelve solamente los elementos de la diagonal de S. Se utiliza para matrices cuadradas ó rectangulares.número de condición en la norma 2 nor m . Esta factorización también es la base para las funciones n u l l y orth. La asignación triple [ U . Descomposición de Valores Singulares La descomposición de Valores Singulares es importante para el análisis de problemas que envuelvan matrices. norma rank .M función. que son los valores singulares de A. norma 2.rango rcond . La función e i g ( A ) devuelve los valores propios de A en un vector columna. V ] = s v d ( A ) produce los tres factores en la descomposición de valores singulares A = U*S*V'. que generan bases orto normales para el espacio nulo y rango de una matriz rectangular dada. Las Funciones de norma. 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 matrices U y V son ortogonales y la matriz S es diagonal.norma 1.
.método 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 método de orden cuatro con uno de orden cinco./((x.e..solución de ecuación no-l i n e a l l e a s t s q . i. 0.variable (minimización no-l i n e a l sin fzero . ode45 .01) + 1. 1) q= 29.y = 1 . 40 .c u a d r a d o s m í n i m o s n o-lineales Funciones para Ecuaciones Diferenciales Las funciones de MATLAB para resolver ecuaciones diferenciales ordinarias son: problemas de valor inicial para ode23 .3).01:2. plot(x.minimización con restricciones fsolve . humps(x)) Integración Numérica (Cuadratura) El área bajo la gráfica de la función f(x) se puede aproximar integrando f(x) numéricamente mediante una regla de cuadratura.. P o r e s t o q u a d se llama una función de función. 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'. y para la gráfica de la función escribimos x = .^2 +.6.c e r o d e u n a f u n c i ó n d e u n a v a r i a b l e c o n s t r . Para integrar la función definida por h u m p s .9). Ecuaciones No -lineales y Funciones de Optimización Las funciones de funciones para ecuaciones no -lineales y optimización incluyen: fmin . / ( ( x. es una función que opera en otras funciones.mínimo de una función de una variable fmins .04) .mínimo restricciones) de una función multi .Kutta de largo de paso variable que combina un método de orden dos con uno de orden tres.método Runge.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 .1:.^2 +.
oe. parametro_n) Ejemplos: function y=promedio(x) function i=inodal(t.to.x]=ode23(`deriv'.xo).resultados intermedios default tol: ode23 -> 1.xo).to1.1.3 Declaración function Sintaxis: function nombre_1=nombr e_2(parametro_1.n o r e s u n t a d o s i n t e r m e d i o s 1 .to.v) function xpunto=vdpol(t..1). [t.> 1. tf=10.0e .0 6 5. ^ 2 )-x(2).0 3 ode45 . ode45 [t.2 Operadores relacionales Los operadores relacionales de MatLab son: < menor que <= menor o igual a > mayor que >= mayor o igual a == igual a =~ no igual a 41 . ode45 trace => 0 .x] =ode23(`deriv'.tf. 5..*(1 -x ( 2 ) . .trace). xpunto(1)=x(1).tf.x) xpunto=zeros(2.tf.. xpunto(2)=x(1).to.xo. [t.Ejemplo to=0.x]=ode23(`edif'.
a menos que una sea un escalar. F u n c i ó n e s any. y ceros donde ambas tienen elementos cero. end 5.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 . 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. "ó" y "no" El resultado de C = A & B es una matriz cuyos elementos son unos donde A y B sean ambos distintos de cero. a menos que una de ellas sea un escalar. Por ejemplo: if all(A <.Ejemplo: if n< maxn .condiciones lógicas find . siempre reduce la matriz a una condición escalar.5) . 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. La función 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. El resultado de B = ~A es una matriz cuyos elementos son uno donde A tiene un elemento cero. y ceros donde A ó B sean cero. respectiv a m e n t e . all La función any(x) devuelve 1 si cualquiera de los elementos de x es diferente de cero.. any(any(A)). if n>=0.condiciones lógicas all . A y B deben de ser matrices con las mismas dimensiones.d e t e c t a i n f i n i t o s 42 . y ceros donde A tiene elementos diferentes de cero. de lo contrario devuelve 0. Aplicando la función dos veces.verifica si existen variables isinf . .. Las funciones relacionales y lógicas en MATLAB son: any . end Para argumentos matriciales. | y ~ son los operadores de lógica "y". break. A y B deben de ser matrices con las mismas dimensiones. . Estas funciones se usan en cláusulas i f.3 Operadores lógicos Los operadores &.
Separador de elementos de una matriz. separador de declaraciones % Comentario de funciones y Ejemplos: [6.4 Caracteres especiales Los caracteres especiales de MatLab son: [ ] Se utilizan para formar vectores y ma t r i c e s ( ) Define precedencia en expresiones aritméticas.0 3. end % inicia vector a en 0 43 .finite . a(i)=0. end for i=1:n.4 ] sqrt(2) for i=1:n.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 5. Encierra argumentos de funciones en forma usual .0 9. a(i)=0. Termina filas de una matriz. argumentos declaraciones en líneas con declaraciones múltiples .
. end asigna 0 a los primeros n elementos de x. declaración n. 44 ..5 Control de flujo 5.. Si x no esta definido. ó grupo de instrucciones. .1 Declaración FOR simple Sintaxis for variable=incio:paso:final declar ación 1. end El ciclo FOR permite que una instrucción. end o for i=1:n. end Ejemplo: for i=1:n c(i)=a(i)*b(i).5. for i = 1:n. ó si tiene menos de n elementos. P o r e j e m p l o . el ciclo sigue siendo válido pero MATLAB no ejecuta la instrucción intermedia. c(i)=a(i)*b(i). declaración n.. entonces un espacio adicional es localizado automáticamente a x cada vez que sea necesario. x(i) = 0. end for variable=inicio:final declaración 1. 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 . Si n es menor de 1.5..
5. 1 : 0 y(1)=sin(t1*t2) end i=i+1. en d end Ejemplo y=1 for t1=0:0. declaración n. j) = 1/(i+j.0 . .1:1 for t2=1: .. end end A La "A" al terminar el ciclo muestra en la pantalla el resultado final. 45 . Sintaxis for variable 1 = inicio1:paso1:fin1 for variable2 = inicio2:paso2:fin2 declaración 1.1)..5. end Ejemplo for i = 1:m for j = 1:n A(i. Es importante que para cada for halla un e n d .2 Declaración FOR anidada .
0.0*pi*60. ut=sin(wo*t). bajo el control de una condición lógica. en la precisión finita la de computadora.0+e)>1. while it<=npts. r e p e t i r s e u n número indefinido de veces. no cambie aunque más términos sean añadidos. end Ejemplos e=1.. La idea es sumar todos los términos necesarios hasta producir un resultado que. llamado e x p m ( A ) en MATLAB.t=t+dt.3 Declaración WHILE Sintaxis: while expresion proposición 1. while prod(1:n) < 1.0. ó g r u p o d e i n s t r u c c i o n e s . n = n+1.0e100. Para esto procedemos de la forma siguiente: 46 .5.. . while (1. end n Un cálculo más práctico ilustrando el ciclo while es en el cómputo del exponencial de una matriz. end it=1.0. proposición 2. wo=2.5.. t=0.end El ciclo WHILE permite a una instrucción . El siguiente ciclo while halla el primer entero n para el cual n! es un número de 100 digitos: n = 1.. Una posible definición de la función exponencial es mediante la serie: expm(A) = I + A + A^2/2! + A^3/3! + .0001 e=e/2.
y k es el índice de este término.4 Declaraciones IF. end 47 ... F = A*F/k k = k+1.. ELSE. ELSEIF y BREAK Sintaxis a) if expresió n proposición 1..E = zeros(size(A)). . F = eye(size(A)). . . else proposición 1. 1) > 0 E = E + F. E representa la suma parcial de la serie. F es un término individual en la serie.. end b) if expresión proposición 1. proposición m. end Aqui A es la matriz dada. proposición n.5. proposición n. w h i l e n o r m ( E + F. k = 1..E. 5.
end. proposición m. proposición n.. if n<0. y=1. end sum=0. if n==0 sum=sum+n. while i<=so n=input(`Introduzca n. ..0.. elseif proposición 1. break.. else sum=sum+n/10.. break. end end 48 . end d) if expresión. nmaxe=i.c) if expresión proposición 1. .. else proposición 1. proposición r. end Ejemplos if dv(i) > maxer maxer=dv(i). elseif n<=10 sum=sum+n/2. interrumpe con valor negativo `). .
también se muestra la función input (en este caso es una entrada del teclado). y el enunciado b r e a k. negativo termina. ¿Habrá algún entero para el cual el proceso nunca termine? Aquí se ilustran los enunciados while y i f. while 1 n = input('Entre n. 2) == 0 A = even(n) else A = odd(n) end En el segundo. Veamos: % Problema "3n+1" clásico de la teoria de números. si este es par. si es impar. que provee salidas abruptas de los ciclos. dependiendo del signo ó paridad de un entero n: if n < 0 A = negative(n) else if rem(n.A continuación se muestra como un cálculo se puede dividir en tres casos. '). end while n > 1 if rem(n. if n <= 0. 2) == 0 n = n/2 else n = 3*n+1 end end end 49 . partiendo de un entero positivo n. se divide entre dos. break. se multiplica por tres y se le suma uno.
2)+A(2.3 Modificación individual de elementos Ejemplos >> A=[1 2.1)=A(1.5. 7 8 9] A= 1 2 3 4 5 6 7 8 9 5. 2 5 8 11. 4 5 6.2.1) A = 5 2 3 4 50 .6. columnas) Ejemplo >> A=[1 4 7 10.6.6 Algebra Matricial 5. 3 4] A= 1 2 3 4 >> A(1.6.2 Cambio del orden de una matriz: reshape Sintaxis: matriz_modificada = reshape(matriz_origin al. 3 6 9 12] A= 1 4 7 10 2 5 8 11 3 6 9 12 >> B=reshape(A. filas.1 Creación de una matriz Ejemplo >> A=[1 2 3.6) B= 1 3 5 7 9 11 2 4 6 8 10 12 5.
>> A(1. 5 6 ] A= 1 2 3 4 5 6 >> b=A(:) b= 1 3 5 2 4 6 51 .2)=10 A= 5 3 3 10 5.6. 3 4.2)=A(2. 3 4. 5 6 ] A= 1 2 3 4 5 6 Conversión de una matriz en un vector >> A=[1 2.4 Modificaciones adicionales de una matriz Ejemplo >> A=[1 2.1) A= 5 3 3 4 >> A(2.
25:1 x = 0 0.1 : 1 x = 5 4 3 2 1 >> x=0:0.1:2) primeras de A remplaza la cuarta y sexta columnas de A con las dos 52 . 5:9) matriz de 3x4 que tiene los tres primeros filas y las columnas de 5 a 9 de A A(:.[4 6])=B(:.Modificación de los elementos >> A(:)=10:15 A= 10 13 11 14 12 15 Generación de vectores: Ejemplos >> x=1:5 x = 1 2 3 4 5 >> x=5:. entonces: A(1:3.5) quinta columna de A A(1:5.7500 1.0000 Acceso a submatrices contiguas y no contigua s Ejemplos Si la matriz original A es de 10*10.2500 0.5000 0.:) primeras cinco filas de A A(:.5) de A matriz de 3x1 que tiene los tres primeros elementos de la columna 5 A(1:3.
2:3.0383 Columns 15 through 16 2.6000 1.6000 0.1610 0.5])=[ ] borra columnas 3 y 5 de A A([3.:)=[ ] borra filas 3 y 5 de A Declaración de matrices complejas A=[1 2.0000 + 8.4000 0.x).0:0.Matrices vacias La declaración x = [ ] asigna una matriz de dimensión 0x0 a x Para la matriz A considerada previamente A(:.8000 3. 3 4] + i*[5 6 .8000 1.2000 0.4000 2.1231 0.0000 1.3096 0.2610 0.1627 0.0000i Generación de tablas >> x=(0.2018 0.0000i 4. 3+7i 4+8i] A = 1.0000 0. >> [x.y] ans = Columns 1 through 7 0 0.6000 0.0204 0.0000i 3.5 ]. > > y = e x p ( .0896 0.2000 2.0000 + 6.2000 0 0.0000 + 7.3099 0.0000 2.*sin(x). 7 8] o A=[1 2. 3 4] + i*[5 6 . 7 8] o A=[1+5i 2+6i.0000i 2.8000 2.3223 0.0613 0.4000 1.0).0070 53 .0000 + 5.[3.2807 C ol um ns 8 thr ough 14 1.2430 0.
valores característicos 54 .Vectores característicos d . 1 0 0. 7 8 9] A= 1 2 3 4 5 6 7 8 9 >> det(A) ans =0 D i a g o n a l d e A: diag(A) >> diag(A) ans = 1 5 9 Valores y vectores característicos: e i g ( A ) >> A=[0 7 . 0 0 0 0 2.D e t e r m i n a n t e d e A: det(A) >> A=[1 2 3.0 1 0] A= 0 7 -6 1 0 0 0 1 0 >> eig(A) ans = -3 .0000 1.4 5 6.6.0000 v .
9435 -0. 3 5 1 0 .5774 d= -3 . 4 3 6 4 0 .2686 5.0000 0 1.0.8729 0.2541 11.8007 2.2182 0. 8 0 4 4 0.0000 0 0 0 7. 3 1 4 5 .6.0000 0 0 0 1.Factori z a c i ó n L U d e A : l u ( A ) >> [L U]=lu(A) L= 0 1. 0 0 0 0 0 0 0 2.0000 .0757 .5774 -0 .1 3 .0 .1429 1.1048 -0.6.0000 U = 1.E x p o n e n c i a l d e u n a m a t r i z: e x p m ( A ) >> A=[0 7 .2541 .8571 55 .0 1 0] A= 0 7 -6 1 0 0 0 1 0 >> expm(A) ans = 5. 1 0 0. 6 1 1 5 2. 5 7 7 4 0.2686 .0000 .0000 0 0 0 0.>> [v d]=eig(A) v= 0.0000 0 0 0.4 .
0000 0.0000 0 0 0 1.0000 -0 .0000 .0000 56 .. 1 6 6 7 0 1 .0000 6.I n v e r s a d e A: inv(A) >> inv(A) ans = 0 1.0000 . 1 6 6 7 .Raices de la ecuación característica : roots(p) >> r=roots(p) r = -3 .0000 1.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.7. 0 0 0 0 2.
'r') fid = -1. lectura/escritura normal [fid.7.registros.1 Declaración fopen Sintaxis id = fopen(`nombre. error 0.5.dat'.2 Declaración fclose Sintaxis status = fclose(fid) o status = fclose (`all') . mensaje = fopen(`archivo.dat'.3 Declaración fread Lee un archivo abierto con una precisión indicada Sintaxis fread(fid.cierra todos los archivos abiertos 5.7.'precision') registros `char' o `uchar' `short' o `long' `float' o `double' 57 .7 Archivos de E/S 5.7.'r ' ) 5. `permiso') donde p e r m i s o puede ser: `r' Abre archivo para lectura `r+ Abre archivo para lectura y escritura `w' Borra el contenido del archivo existente o crea un nuevo archivo y lo abre para escritura `w+' Idem que `w' únicamente que el archivo se abre para lectura y escritura `a ' Crea y abre un nuevo archivo o abre un archivo ` a + ' I d e m que `a' únicamente que el archivo es abierto para lectura y escritura Ejemplo fid = fopen(`archivo.dat'.
y). . . Forma to %s . f p r i n t f ( f i d .7.02 [t.ka*x(1)*x(2).x) global ka..01 kb=0.5 Declaración fprintf Salida con formato Ejemplos: fprintf(fid. global ka..'float') 5. ' % f % 1 2 .[1:1]). Sintaxis: global variable1.0.Ejemplo: A = fread(fid..8 Variables globales Son variables.formato g 5.c a d e n a d e c i m a l %d .kb ka=0.punto flotante % g .x]=ode23('ccdifs'. 7 f\ n'..7. de las cuales una sola copia es compartida por el programa principal y sus funciones. .x(2)+kb*x(1)*x(2)].A..'short') 5.kb x p = [ x ( 1 ). variable_N Ejemplo function x=ccdifs(t.10. 58 .4 Declaración fwrite Sintaxis fwrite(fid.'titulo \ n').número decimal % f .10.
9 Vectorización de algoritmos y estructuras (for. end Si no pre -asignamos el vector "y". el interpretador de MATLAB irá aumentando el tamaño de "y" por uno cada vez que se itera en el ciclo. i= i+1. V e c t o r e s P r e.5. for i = 1:100 y(i) = det(X^i). wo=2*pi*fo. Permite incrementar la velocidad de proceso de MATLAB Sintaxis variable=inicio:incremento:final Ejemplo i=1. 59 . y = sin(t). for t=0:dt:per f(i)=sin(wo*t). el primer ejemplo tomó 15 segundos. for t = 0:. Esto es. fi=sin(wo*t). debemos convertir los ciclos for y while a operaciones de vectores ó de matrices. y(i) = sin(t). Por ejemplo. un modo de calcular la función "sin" para 1001 números entre 1 y 10 es: i = 0. end Una versión vectorizada del mismo código es t = 0:. while) Para que los programas en MATLAB ejecuten más rá p i d o .100). d e b e m o s v e c t o r i z a r estos siempre que sea posible.01:10 i = i + 1.6 segundos.A s i g n a d o s Si no podemos vectorizar un pedazo de código. Veamos un ejemplo: y = zeros (1.01:10. end ó t=0:dt:per. En una computadora lenta. podemos hacer que los ciclos for vayan más rápido pre -asignando cualquier vector en el cual el resultado de salida sea guardado. mientras que el segundo tomó 0.
y) c) plot(x.10. xn.a ñade texto a la gráfica utilizando el ratón grid .a ñ a d e t í t u l o a l a g r á f i c a xlabel .10 Gráficas en Dos Dimensiones 5. loglog . Puedes añadir títulos.y.añade una cadena de texto en una localización específica g t e x t . Si especifica dos vectores como argumentos. s e m i l o g y . plot(x.c r e a u n a g r á f i c a u t i l i z a n d o u n a e s c a l a l o g a r í t m i c a p a r a a m b o s e j e s .2 Creando una gráfica Comando Sintaxis: a) plot(y) b) plot(x.1 Funciones elementales para graficar p l o t .crea una gráfica utilizando una escala logarítmica para el eje-x y u n a escala lineal para el eje-y . p l o t ( y ) p r o d u c e u n a g r á f i c a l i n e a l d e l o s e l e m e n t o s d e y v e r s u s el índice de estos.x2.'tipo_línea') d) plot(x1.'tipo_línea_n') Si y es un vector.y2. y) produce una gráfica de y versus x.crea líneas entrecortadas 5. . .crea una gráfica utilizando una escala logarítmica para el eje -y y u n a escala lineal para el eje-x .5.añade encabezamiento al eje-y text . líneas entre cortadas y texto a tus gráficas utilizando: tittle . Plot Símbolo Color y amarillo m magenta c cyan (azul claro) r rojo g verde 60 .añade encabezamiento al eje-x ylabel ..'tipo_línea_1'.crea una gráfica de vectores ó columnas de matrices. encabezamien tos de ejes. semi l o g x .yn.10.'tipo_línea_2'..y1.
. plot(x.y) grafica cada fila ó columna de X versus el vector y. Y1. Los pares diferentes pueden ser de dimensiones diferentes. plot(X.5).'g--'). plot(x. si X y Y son ambas matrices del mismo tamaño..b azul w blanco k negro Símbolo Estilo de línea . donde m es el número de filas en Y. Y2.. . Y) grafica las columnas de X versus las columnas de Y.sólido : punteado -. title('Angulo difuso').x. .10. 1:m..Y) grafica las filas ó columnas de Y versus el vector x.3 Graficando Matrices plot(Y) .y1=sin(t+0.0). Si plot es usado con dos argumentos y si X ó Y tienen más de una fila ó columna. s e g m e n t o p u n t o -. entonces: si Y es una matriz. También puedes matriciales: usar la función plot con múltiples pares de argumentos plot (X1. plot(X. xlabel('x=sin(t)').y1.) Cada par X -Y es graficado. E l e j e -x es encabezado por el vector índice de fila. si X es una matriz y y es un vector. ylabel('y=sin(t+)') 5.d i b u j a u n a l í n e a p a r a c a d a c o l u m n a d e Y .y2. generando líneas múltiples.'r-'. punto o circulo x marca + mas * asterisco . X2.x=sin(t).y2=sin(t+1. 61 .s e g m e n t o Ejemplo t=0:pi/200:2*pi. y x es un vector.
m. Podemos gráficarla como sigue: x = (0:1/2000:1)'. function y = fofx(x) y = cos(tan(pi*x)). El siguiente archivo -M de tipo función define la función anterior como fofx.5. 5. 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. Ahora la instrucción fplot('fofx'. 0 x 1.5 Graficando Funciones Matemáticas Hay diferen tes formas de graficar funciones y = f(x).10. cos(tan(pi*x))) Para hacer esto más eficiente podemos usar la función fplot la cual concentra su evaluación sobre las regiones donde la rapidez de cambio de la función es más grande. P a r a e v a l u a r u n a f u n c i ó n . La siguiente función oscila infinitamente rápido en el intervalo. Este archivo se guarda con el nombre de f o f x . [0 1]) prod u c e l a g r á f i c a : 62 .4 Importando Datos Puede importar y graficar datos generados fuera de MATLAB utilizando el comando load. Una de estas formas es evaluar la función en miles de puntos en el intervalo de interés.10. p lot(x.
y) b) loglog(x..'-.'tipo_línea') c)loglog(x1'. semilog(y) Sintaxis a) semilogx(x. loglog(x.y1'.Aquí.6 Comandos gráficos h o l d Permite añadir líneas al dibujo previo o n Activa hold off Desactiva h o ld Ejemplo plot(x).y) b) semilogy(x.10.b.10.1. semilogy(x.yn. fplot usa menos puntos para evaluar la misma función a intervalos más cerrados en la región donde la rapidez de cambio es mayor. hold on.b exponentes de los límites.y) Ejemplo x=0:. 5. plot(y'. b ) logspace(a. 10^a y 10^b semilog(x).^x) 63 ..plot(yz.'tipo_línea_n') Ejemplo x = l o g s p a c e (.1:20. Es decir.':').exp(x)) donde l o g s p a c e tiene las formas: l o g s pa c e ( a . xn.n) a..'tipo_línea_1'..3).') loglog Sintaxis a) loglog(x.y.
3) plot(rang) subplot(2. c) [xb. de izquierda a derecha.2) plot(it) suplot(2.yn.n. it=smvars(:.2.5:2*pi. x=sin(t).fill Dibuja el area interior de una curva en determinado color Sinta x i s: a) fill(x.1).y.5:2*pi.xn.y).'r') subplot Dibuja la pantalla en mxn subdivisioens.1).'c') b) fill(x1.y). x=sin(t).. numeradas por el parámetro p.yb]=bar(y).4) plot(ikd) bar Crea una gráfica de ba r r a s Sintaxis: a) bar(y).p) Ejemplo: vt=smvars(:. fill(t.yb) 64 .. => plot(xb.y1. subplot(2. fill(y. => plot(xb. plot(vt) subplot(2.2)..cn) Ejemplo t=0:0. 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. ikd=smvars(:. y=cos(t)..2.2.yb) d) [xb.'b') t=0:0.3).yb]=bar(x.x. b) bar(x.'c1'.x.4). rang=smvars(:.2.
6 0 .x.y) n .*x) Nota: Los valores de x deben estar igualmente espaciados stairs Igual que b a r.01:2*pi.número de puntos á n gulo .final]) b) fplot(`función'. e x p (. polar(t.[ -2 2 ] ) function y=func(x) y=200*sin(x(:)). [inicio.2:2.final]. [inicio. únicamente sin líneas in ternas fplot Dibuja la gráfica de una función Sintaxis: a) fplot(`función'.8 b a r ( x .n) c) fplot(`función'.Ejemplo x= .[0.radio) b) polar(ángulo./x(:).[. [inicio.ángulo entre segmentos sucesivos de la función Ejemplo fplot(`sin'.final]) => plot(x. [inicio.2.3 0 3 0 ] .pi]) fplot(`tanh'.final].8:0. `tipo_línea') Ejemplo t=0:0. 2 ) polar Dibujo en coordenadas polares Sintaxis: a) polar(ángulo.n.ángulo) d) [x.sin(5*t)) 65 .y]=fplot(`función'. fplot(`func'. radio.
y. contour3 Genera dibujos compuestos de líneas de valores de datos constantes obtenidos de una matriz de entrada S i n ta x i s: a) contour(z) b) contour(z.zn...y.255 fill(y...z. x .05:10*pi. y ) => sombreado vertical 5.x) => sombreado horizontal f i l l ( y . .x..y1.colormap Colorea con sombreado el interior de una curva o polígono Sintaxis colormap(colorbase) donde colorbase es: gray hot cool copper pink Ejemplo t=0:0.. plot3(sin(t).'tipo_línea) d) plot3(x1.yn. y=cos(t).t) contour.z) b) plot3(x.'tipo_línea'. colormap(hot(130)).05:2*pi.11 Gráficos en 3 dimensiones plot3 Dibuja líneas y puntos en 3 dimensiones Sintaxis: a) plot3(x.n) 66 .z1.cos(t).xn.z) c) plot3(x.y.'tipo_línea') Ejemplo t=0:0. x=sin(t). Nota: 130 es opcional el rango 0.
z=sin(R). y=x.y)..x ^ 2 -y^2).8.n) Ejemplo contour(peeks) contour(peeks.. * e x p (.n) c) contour3(x.30) contour3 Igual función de contour en 3 dimensiones Sintaxis: a) contour3(z) b) contour3(z.001.c) contour(x.n) E j e mplo contour3(peaks. Y ] = meshgrid(-2 : 2 : 2 ) .y.y.y.Y] = meshgrid(x) => meshgrid(x.. z = x . [x..z.5...y]=meshgrid(x.Y] = meshgrid(x. mesh(Z) x= .y) b) [X.^2)+0.y) Ejemplo. -2 < = y < = 2 [ X . Evalue y dibuje la funcion z=x*exp( -x^2 -y^2) sobre el rango -2 < = x < = 2 . R=sqrt(x.z) d) contour3(x.z) d) contour(x.^2+y./R. .8:0..y..30) meshgrid Genera arreglos X y Y para dibujos en 3 dimensiones Sintaxis: a) [X.z. mesh(z) 67 .
.y.y.y] = meshgrid(-3:2:3).) => misma S i n t a x i s que surf 68 .z) c) surf(x..z.y.z. meshc y meshz Dibujan una superficie de malla tridimensional.y.c) f) mesh(z) g) meshc(.c) d) surf(x..y.y.y..y.z) e) mesh(z.z) surf.z) c) mesh(x.z) [x.y. sobre y bajo el plano de referencia.y). meshc(x. crando una perspectiva del dibujo.z. z=peaks(x. Sintaxis: a) mesh(x.c) d) mesh(x.y] = meshgrid(-3:2:3).mesh. surfc Crean superficies sombreadas en 3 dimensiones Sintaxis: a) surf(x. meshz(x.) => mismo que mesh h) meshc(.c) b) surf(x.y).z..) => mismo que mesh meshc Añade un plano de contorno debajo del dibujo 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 Ejemplo: [x.c) f) surf(z) g) surfc(..y.c) b) mesh(x.z) e) surf(z. z=peaks(x.
z ] = s p h e r e ( n ) .y. surf(x. empleada en procesamiento de señales y análisis numérico Ejemplo (matriz de 4*4) 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 sphere Genera una esfera Sintaxis [x.s) s .z.c). n = 2 ^ k -1 .y).3:. .Ejemplo [x.y.número de meridianos Ejemplo [x.z. [ x .y.y]=meshgrid(. .z) o con : colormap(hot) surfl Superficie sombreada tridimensioanl con efecto de reflexión de luz Sintaxis: a) surfl(z) b) surfl(z.2:3). .s) c) surfl(x. z=peaks(x.y.z] = sphere(n) n . surf(x.dirección de la luz 69 . mesh(x. y .y. c = h a d a m a r d ( 2 ^ k ) .y.z) k = 5 .z]=sphere(20). colormap(hot) 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.y.z) d) surfl(x.
ymax.Ejemplo [x.y. zmin.y]=meshgrid(. xmax. axis Escala y apariencia de los ejes Sintaxis: a) axis([xmin. añadiendo: shading interp y posteriormente: colormap(gray). zmax]) c) axis(`auto') d) axis(`ij') e) axis(`xy') f) axis(`square') g) axis(`equal' ) h) axis(`off') 70 .y). surfl(x. z=peaks(x. ymin.z) shading Establece las propiedades de sombreado con color Sintaxis shading faceted shading interp shading flat shading flat . ymax]) b) axis([xmin.3:0.el color en cada segmento varia linealmente e interpolo los valores extremos o esquinas shading faceted superpuestas utiliza sombreado "flat" con líneas de malla negras Para el ejemplo anterior.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 . xmax. ymin.01:3).
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 .y. rand(3.. rand(20).xn..y1..zn) Ejemplo colormap(hot) fill3(rand(3.n) .m a t r i z d e m x n Ejemplo fill3(rand(20). axis(`xy') regresa la forma de ejes cartesianos que existe por defecto . El eje y es vertical y es numerado de arriba hacia abajo. 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.. rand(3. axis([ . a x i s ( ` i j ' ) dibuja nuevamente la gráfica. rand(3.4).i) axis(`on') donde: axis(`auto') realiza el escalamiento de ejes a su modo de autoescalamiento por defecto.yn.3 3 ...4).z1.3 3 .4)) r a n d matrices y números aleato rios distribuidos uniformemente Sintaxis: a) rand(n) .matriz de nxn b) rnad(m. rand(20)) 71 .'c') b) fill3(x1. rand(20).z. El eje x es horizontal y se numera de izquierda a derecha.4). 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: .8 8]) fill3 colorea polígonos de 3 dimensiones a) fill3(x.
x e y son vectores Ejemplo load clown colormap(map) image(x) brighten hace más brillante o más obscura la imagen Sintaxis: a) brighten(alfa) b) brighten(map. En b) . brighten(0. sonido. datos.alfa) donde: 0<alfa<1 más brillante -1<alfa<0 más obscuro Del ejemplo anterior: .e x t e n s i ó n Ejemplo load clown image crea un objeto imagen y lo presenta Sintaxis: a) image(x) b) image(x.x) c) presenta la matriz c como una imagen d) especifica los límites de los datos de la imagen en los ejes x e y. e x t donde: ext .0 . 6 ) ó brighten(. etc) Sintaxis a) load archivo b) l o a d a r c h i v o ...y. 6 ) 72 .load carga en el area de trabajo un archivo (imagen.
Fs) t=(0:length(y). el sistema operativo devuelve el control a MATLAB.1 Manipulación de Archivos de Disco Algunos comandos utilizados para la manipulación de archivos de disco son dir.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. Si la extención no se especifica. 73 . puedes exportar datos de MATLAB a otros programas.12.1 ) / F s . ! edt darwin.12. delete y c d . type.m.m invoca un editor llamado e d t e n u n a r c h i v o l l a m a d o darwin. Similarmente. 5. L u e g o q u e e s t e programa sea completado.Fs) donde: Fs frecuencia especificada en Hz Ejemplo load train sound(y.m automáticamente. También puedes hacer que tus programas manipulen datos directamente en archivos.12. 5.MAT.3 Importando y Exportando Datos Puedes i n t r o d u c i r d a t o s d e o t r o s p r o g r a m a s a M A T L A B p o r v a r i o s m é t o d o s .12 Archivos de disco 5. El comando diary c r e a un diario de tu sesión de MATLAB en un archivo de disco. Por ejemplo.2 Ejecutando Programas Externos El simbolo "!" le indica a MATLAB que el resto de la línea de entrada es un coma ndo para el sistema operativo. plot(t.y) 5. Para más información utiliza la Guía de Referencia de MATLAB ó el comando help. MATLAB utiliza .
brighten. rot90. ode23. fwrite. d ia g . all. triu. gtext. real. f o p e n . f f t n . tril. size. grid. meshc. ifftn. pascal. semilogy. hold. m e s h . shading (flat interp faceted). for. d et . stairs. title. f cl o s e. f il l 3 . colormap. l o a d . toplitz. bar. reshape. break. if. contour3. while. image. 5. f u n ct io n . subplot. clf. e xp m. sound. 74 . f il l . e i g . reshape. f f t . ylabel. surfc. xlabel. i n v . sphere. polar. semilog. fplot. l u . hadamard. plot3. text. zeros. any. plot. fread. surf. poly. e lse . meshz. peaks. contour. ifft. l o g l o g .el cúal es el formato de archivo utilizado por MATLAB. imag. surfl. rand. Para información acerca de las técnicas utilizadas para importar y exportar datos consulte la sección de Importando y Exportando Datos de la guía de MATLAB ó utilice al comando help de MATLAB. conj. meshgrid.13 INDICE ALFABETICO axis. ode45. e lse i f.
análisis y simulación de una amplia variedad de sistemas físicos y matemáticos. discretos en el tiempo o sistemas híbridos. mientras conserva toda la funcionalidad de propósito g e n e r a l d e M a t L a b . Esto significa que se puede modelar sistemas continuos en el tiempo. La definición del modelo significa construir el modelo a partir de elementos básicos construidos previamente. Después de definir un modelo este puede ser analizado seleccionando una opción desde los menús de Simulink o entrando comandos desde la línea de comandos de MatLab. En esta nueva ventana se colocarán todos los bloques interconectados que formarán el sistema deseado . El análisis del modelo significa realizar la simulación. 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 dinámicos. 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. sino un anexo a él. SIMULINK Simulink es una herramienta para el modelaje. En estas ventanas se puede crear y editar un modelo gráficamente usando el ratón. Simulink usa un ambiente gráfico lo que hace sencillo la creación de los modelos de sistemas. 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. bloques de ganancia o servomotores. linealización y determinar el punto de equilibrio de un modelo previamente definido. Para simplificar la definición del modelo Simulink usa diferentes clases de ventanas llamadas ventanas de diagramas de bloques. La ventana principal de Simulink se activa escribiendo simulink en la línea de comandos de MatLab. Para realizar un sistema debe abrirse una nueva ventana de diagrama de bloques seleccionando la opción file del menú principal del Simulink y allí la opción new. Simulink tiene dos fases de uso: la definición del modelo y el análisis del modelo.6. integradores. 75 . inclusive aquellos con elementos no lineales y aquellos que hacen uso de tiempos continuos y discretos. El ambiente de MatLab está siempre disponible mientras se ejecuta una simulación en Simulink. y se muestra a continuación: Haciendo doble click en cualquiera de las librerías presentes en esta ventana se abrirá otra ventana conteniendo una cantidad de bloques relativos a dicha librería. Como una extensión de MatLab. Simulink adiciona muchas características específicas a los sistemas dinámicos. Mediante una interface gráfica con el usuario se pueden arrastrar los componentes desde una librería de bloques existentes y luego interconectarlos mediante conectores y alambre. tal como.
se puede observar la respuesta al hacer doble click en el osciloscopio. Para ejecutar el programa se usa la opción simulation en el menú de la ventana del archivo . tal como se muestra a continuación: Al ejecutar el programa seno. En este submenú está la opción start que permite ejecutar el programa. 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. al generador seno se le puede modificar su amplitud. Por ejemplo.m creado mediante simulink. Existen numerosos bloques y funciones incorporados en las librerías de simulink que pueden ser empleados para simular cualquier sistema. ambos se unieron mediante un conector usando el ratón. También está la opción parameters que activa el panel de control de Simulink en donde se definen los métodos y parámetros usados para la simulación. A continuación se muestra el bloque PID: 76 . Al osciloscopio se le definen las escalas horizontal y vertical. frecuencia y fase. Haciendo doble click so bre cada elemento del sistema se pueden ver y modificar sus características.m. Este sistema se almacena como un archivo . Por ejemplo.m creado.Como ejemplo se ha tomado un generador de ondas seno de la librería de fuentes "sources" y un osciloscopio de la librería "sinks". El contenido de dicho bloque se obtiene haciendo doble click sobre él.
Este código es la forma en la que puede usare el Simulink para adquisición de datos. Este puede ser útil para varios propósitos: puede ser usado para control en tiempo real. El código-C es diseñado tal que puede ser ejecutado en tiempo real.1 Acelerador de Simulink Para incrementar la velocidad de Simulink se debe instalar el acelerador "Accelerator". discretos en el tiempo y híbridos. la simulación es ejecutada en la ventada de modelos de Simulink exactamente igual que antes sólo que más rápidamente. PC o microprocesadores. equipos médicos. robótica. se puede invocar el generador de código-C que permite convertir el diagrama de bloques implementado en un código C. Si el programa MatLab posee instalado el "Accelerator" podrá iniciarse la acción aceleradora seleccionando la opción simulation en el menú principal del Simulink y dentro de esta seleccionando la opción Accelerate. El propósito del acelerador es aumentar la velocidad de simulació n . sistemas automotores. 6. El código generado puede correr sobre un amplio rango de hardware ubicado en estaciones de trabajo. etc. simulación en tiempo real o simulación acelerada en tiempo no real. Este pe rmite automáticamente generar una versión mejorada de los modelos los cuales correrán diez veces más rápido que el original. El acelerador puede ser usado sobre modelos continuos.C para un modelo dado. Sus aplicaciones pueden ser control de movimiento. Una vez se completa la compilación. Esta acción es totalmente t r a n s p a r e n te en el sentido de que el incremento de la velocidad se presenta sin ningún otro requerimiento por parte del usuario. El acelerador trabaja generando y compila n d o u n c ó d i g o .2 Generador de código-C en Simulink Una vez se ha creado un modelo dinámico en Simulink. No requiere ser escrito manualmente por un programador pues es creado a nivel de diagramas de bloques en Simulink. 77 .6. control de procesos.
type .Retrieve variables from disk.Execute operating system command.Get environment value. ! . Managing variables and the workspace: who .Save text of MATLAB session. length . COMANDOS DE MATLAB 7.Run demos. Working with files and the operating system: cd .L i s t M-f i l e .1 General purpose commands: M a n a g i n g c o m m a n d s a n d f u n c t i o n s: help . whos . load . getenv .C l e a r variables and functions from memory. d emo .a n d M E X -files.Display matrix or text. long form. path . diary .List current variables. disp . delete . which .7.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 .Size of matrix. MAT .Control MATLAB's search path.Directory listing of M-.List current variables. 78 . size .Keyword search through the HELP entries.On -l i n e d o c u m e n t a t i o n . what . dir .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 .Directory l i s t i n g . unix . pack .Execute operating system command & return result.Change current working directory.Delete file.L o c a t e f u n c t i o n s a n d f i l e s . save . lookfor . clear .Length of vector.
S e t c o m m a n d l i n e e d it/recall facility parameters.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 . I n c .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 . 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 . format . subscribe .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 . ver . hostid . more . home .M A T L A B ./ Array division slash 79 .* Array multiplication arith ^ Matrix power arith .Send cursor home. matlabrc . echo .Information about new features not yet documented.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 .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 . whatsnew . clc . Starting and quitting from MATLAB: quit .Clear command window. S I M U L I N K .^ Array power arith \ Backslash or left division slash / Slash or right division slash .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 .Master startup M-f i l e .Set output format. General information: info .MATLAB server host identificati o n n u m b e r . startup .T e r m i n a t e MATLAB.Minus arith * Matrix multiplication arith .
80 .True for sparse matrix. any .True for global variables.T r u e f o r N o t. Parent directory punct . Decimal point p u n c t .F i n d i n d i c e s o f n o n . a l l .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 . isnan . Comma punct . isglobal . isempty ..A.T r u e f o r t e x t s t r i n g .Number. 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 .. issparse . finite .True if all elements of vector are true.zero elements. isstr .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 . isinf . Continuation punct .T r u e f o r e m p t y m a t r i x .True for infinite elements..T r u e f o r f i n i t e e l e m e n t s . f i n d .kron Kronecker tensor product kron : Colon colon ( ) Parentheses paren [ ] Brackets paren .
G e n e r a t e A . augstate . residue . pade . destim . 81 . c2dm .Form continuous state estimator from gain matrix. estim .Continuous to discrete. d2cm . feedback . dreg .Form discrete controller/estimator from gain matrices. C . conv .F e e d b a c k s y s t e m c o n n e c t i o n .S e r i e s s y s t e m c o n n e c t i o n .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 .time conversion w i t h m e t h o d . ord2 . c2dt .P a r a l l e l s y s t e m c o n n e c t i o n .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 .Delete inputs.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 .Generate random continuous mod e l . or states from model. reg . outputs.A u g m e n t s t a t e s a s o u t p u t s . poly . drmodel . B . d2c .Roots to polynomial conversion.Continuous to discrete .Discrete to continuous.Pade approximation to time delay. connect .Select subsystem from larger system. Model conversions>: c2d . ssdelete . cloop . series . parallel .Convolution of two polynomials. D f o r a s e c o n d-order system. b l k b u i l d .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 .Generate random discrete model.Append system dynamics.C l o s e l o o p s o f s y s t e m .Build state -space system from block diagram.D i s c r e t e t o c o n t i n u o u s.Block diagram modeling. ssselect .time conversion.time conversion with method. rmodel .t i m e c o n v e r s i o n .P a r t i a l f r a c t i o n e x p a n s i o n .
modred . damp . dbalreal . tf2zp .Transfer function to state.S t a t e .Z e r o.Eigenvalues and eigenvectors.pole to transfer function conversion.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.Damping factors and natural frequencies.s p a c e c o n v e r s i o n . zp2ss . dmodred .C.Discrete balanced realization.s p a c e c o n v e r s i o n . M o d e l r e a l i z a t i o n s: canon .Controllability staircase form.space to transfer function conversion.ss2tf . zp2tf .) gain.space to zero -pole conversion.Transfer function to zero -p o l e c o n v e r s i o n .Discrete steady state (D.Model order reducti o n . ddcgain .Continuous steady state (D.Discrete controllability and observability gramians. Model properties: covar .Continuous covariance response to white noise.pole to state. dcgain . ddamp . esort . minreal . eig . tf2ss .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 .Discrete covariance response to white noise.Observability staircase form.C.Discrete model order reduction.Z e r o.Apply similarity transform.State . dgram .) gain.zero cancellation. 82 .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 .Sort continuous eigenvalues by real part.C a n o n i c a l f o r m . ctrbf . dcovar . dsort .C o n t r o l l a b i l ity matrix. ss2ss . ctrb .Balanced realization. ss2zp . Model reduction: balreal . obsvf .
gram . freqs .C o n t i n u o u s s i m u l ation to arbitrary inputs.Step response. ltitr .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 . impulse . dnyquist . filter . roots . initial . o b sv . dnichols .Controllability and observability gramians.Discrete initial condition response. tzero2 .P o l y n o m i a l r o o t s .Observability matrix.Gain and phase margins.Discrete simulation to arbitrary inputs.T r a n s m i s s i o n z e r o s . fbode . lsim .Nichols plot.Display system in formatted form. dlsim .Discrete Bode plot (frequency response).Low level frequency response f u n c t i o n .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 .Z. step .S t e p f u n c t i o n . dstep .Discrete Nichols plo t.transform frequency response. dbode .Laplace .transform simulation. tzero .Discrete singular value frequency plot. margin . ltifr .Continuous initial condition response.Impulse response. Time response: dimpulse .Low level time response function. printsys .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 .Bode plot (frequency response). 83 . Frequency response: bode . freqz .Discrete step response. dinitial . nichols .S I S O z . stepfun . dsigma .Discrete unit sample response.Discrete Nyquist plot.
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 .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 .Discrete estimator design from continuous cost function.Singular value frequency plot.Nyquist plot. dlyap .zero map. dlqe .Linear quadratic regulator design using Schur method. rlocus . z g r i d . 84 .Interactive root locus gain determina tion.E v a n s r o o t-locus. sgrid .Lyapunov equa tion solution using diagonalization. lqr2 . zgrid .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 .ngrid . nyquist . Gain selection: acker . lqr .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 . rlocfind . lqed . R o o t l o c u s: pzmap .Algebraic Riccati equation solution.D r a w g r i d l i n e s f o r N i c h o l s p l o t .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 . dlqry .quadratic regulator design.L i n e a r-quadratic estimator design.General discrete linear quad ratic estimator design.L i n e a r.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 .Discrete Lyapunov equation solution. sigma . d l q e w . lqrd .Linear quadratic estimator design using Schur method.D r a w d i s c r e t e r o o t l o c u s w n . lqe . lqry . lyap2 . place .Discrete regulator design from continuous cost function. lyap . dlqr . Equation solution: are .G e n e r a l l i n e a r-quadratic estimator design. l q e w .P o l e.SISO pole placement. z g r i d . lqe2 .P o l e p l a c e m e n t .
B.d) num = 0 0 1. con Sin taxis idéntica a la utilizada con el comando step: Si se define el sistema en MatLab por los polinomios denominador de la función de transferencia tenemos: » y=[1 5 4]. » u=[1 6 11 6]. Se deben especificar los vectores para almacenar los coeficientes del polinomio numerador y del denominador.d) Para obtener la respuesta en el tiempo para una entrada impulso unitario se usa el comando impulse.D) Ejemplo >>step(a.6 1 0 0 0 1 0 88 .Se puede hacer la conversión de una ecuación de estado a su equivalente función de transferencia.C.b.b.0000 P a r a o b t e n e r l a respuesta escalón de un sistema a partir de las ecuaciones de estado se usa el comando step con la Sintaxis: step(A.u) A= -6 .1 1 .0000 den = 1.den]=ss2tf(a. Su Sintaxis e s : [num.b.c.B.u) del numerador y Si por el contrario el sistema se defin e en MatLab por las ecuaciones de estado: » [A.0000 0.2500 1.C. mediante el comando ss2tf.d) Ejemplo >>[num.c. » impulse(y.c.D]=tf2ss(y.den]=ss2tf(a.
B.B= 1 0 0 C= 1 5 4 D = 0 » impulse(A.D) En ambos casos. MatLab presenta la respuesta en el tiempo en la ventana de figuras: 89 .C.
En la variable Y se almacena la salida del sistema en función del tiempo T. >>[Y.U.T. >>NUM=[1].25 1].DEN. donde u se define como una función del tiempo. 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. El comando plot permite presentar en la ventana de figuras la variable Y (salida) y la entra da U (rampa) en función del tiempo. también obtener respuesta para otras entradas tal como rampas o sinusoides.T) usando las matrices de estado o lsim(NUM.Y.D. se define U de la siguiente forma: >>T=0:0.T).U) Al hacer U=T se está definiendo la función rampa.DEN. >>PLOT(T.X]=lsim(NUM. obteniéndose: 90 .B.MatLab permite. >>DEN=[1 0.1:10 >>U=T.U. El comando lsim permite obtener la respuesta en el tiempo para un sistema con una entrada u. La Sintaxis de este comando es: lsim(A. Para obtener la respuesta en el tiempo para una función rampa. T es el vector de tiempo variando desde 0 hasta 10 s e g . además de obtener la respuesta en el tiempo para una entrada escalón o impulso.U.C.T) usando la función de transferencia.
>>bode(y.25 1]. >>u=[1 0. de Nyquist y de Nichols. se definen dos vectores cuyos elementos son los coeficientes de los polinomios del numerador y del denominador en potencias decrecientes de S.2 Respuesta en el dominio de la frecuencia Para el estudio de un sistema en el dominio de la frecuencia existen tres herramientas disponibles en MatLab como son: los diagramas de Bode. Estos vectores son usados en el comando b o d e c o n l a s i g u i e n t e Sintaxis: bode(num. Se define la función de transferencia: Ejemplo >>y=[1].8.u) MatLab presenta el diagrama de bode en la ventana de figuras: 91 .den). Para obtener el diagrama de Bode de una función de transferencia.
W) Este comando muestra el diagrama de Bode entre 0 y 100 rad/s. es a través de las ecuaciones de estado representadas por las matrices de estado (A. Por ejemplo: >>W=0:0.u) MatLab presenta en la ventana de figuras el diagrama de Nichols: 92 . se emplea un vector de frecuencias en el que se especifica la frecuencia inicial.04 1 0].D). >>bode(y. den.W) si se emplean las matrices de estado o nichols(num. Su Sintaxis e s : bode(A.1:100. Para especificar un rango deseado de frecuencias en las cuales se desea obtener el diagrama de Bode. >>u=[0.C.B.D).C.Otro formato mediante el cual el comando bode presenta el diagrama de bode.B. el incremento y la frecuencia final. Si se define y como el vector de los coeficientes del polinomio del numerador y u como el deldenominador: >>y=[0 0 100].C. cuya Sintaxis es idéntica a la del comando bode: nichols(A.D. Para obtener el diagrama de Nichols se utiliza el comando nichols.B. Otra herramienta de análisis 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.u. >>nichols(y.W) si se emplea la función de transferencia.
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 .W) si se emplea la función de transferencia.B. Para obtenerlo se utiliza el comando nyquist.D.den.W) si se emplean las matrices de estado o nyquist(num. >>u=[1 6 5].Otra herramienta de análisis en el dominio en la frecuencia que ofrece MatLab es el diagrama de Nyquist. cuya Sintaxis es idéntica a la del comando bode y nichols: nyquist(A.C. Si se define y como el vector de los coeficientes del polinomio del numerador y u como el del denominador: >>y=[1]. >>nyquist(y.
Wcg.25 1].den) 94 . [Gm.3114 >>margin(num. >>[Gm. C . [Gm.7487 Wcg = NaN Wcp = 3. Las diferentes formas de utilizar este comando son: [Gm.Wcp] =margin(num. fase y frecuencia del diagrama de Bode. D ) dibuja el diagrama de Bode y muestra con líneas 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 .Wcg. la frecuencia de cruce de ganancia y la frecuencia de cruce de fase MatLab dispone del comando margin.B. >>num=10.W) toma los vectores de magnitud.Wcp] = MARGIN(MAG.Wcg.D). margen de fase (Pm).D) retorna los valores de margen de ganancia (Gm).Pm.den) Gm = Inf Pm = 4. M A R G I N ( A . >>den=[1 0.C. B . frecuencia de cruce de ganancia (Wcg) y la frecuencia de cruce de fase (Wcp) cuando se trabaja con las matrices de estado (A.Para obtener el margen de ganancia.Pm.Pm.Pm. el margen de fase.Wcg.B.Wcp] = MA R G I N ( N U M .PHASE.Wcp] = MARGIN(A. D E N ) cuando se trabaja con la función de transferencia.C.
DEN. 95 . MatLab g enerará automáticamente un conjunto de valores de la ganancia K.DEN) no dibuja el lugar de las raíces pero almacena en la matriz R.C.K]=rlocus(A.K] = rlocus(NUM.B.D) son equivalentes a las Sintaxis anteriores pero empleando las matrices de estado para hallar el lugar de las raíces.C. estas pueden además ser complejas.D).B.B.3 Lugar de las raíces Para obtener el lugar de las raíces de un sistema como el mostrado en el siguiente diagrama: Se debe determinar su ecuación característica.D. rlocus(A. MatLab dispone del comando rlocus. rlocus(NUM. D E N ) c a l c u l a y dibuja el lugar de las raíces cuando se trabaja con la función 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 función de transferencia G(S).C. la cual es de la forma: Para obtener el lugar de las raíces. o [R. la localización de las raíces.8.DEN. Las diferentes Sintaxis para utilizar este comando son: r l o c u s ( N U M .K) o [R. de longitud igual al número de elementos de K. R=rlocus(A.K): calcula y dibuja el lugar de las raíces cuando se trabaja con la función de transferencia y ha sido previamente definido el rango de valores de K. R tendrá tantas columnas como raíces existan. Por ejemplo de 0 a 100 co n incrementos de 10: k=0:10:100 R = rlocus(NUM.K).
0 .0]. 7 7 7 3 i Para seleccionar el punto en el cual calcular los polos del lugar de las raíces sin usar el cu rsor se agrega un parámetro al comando rlocfind.p o l e s ] = r l o c f i n d ( n u m . B .2.P) P debe definirse previamente indicando la parte real e imaginaria del mismo.POLES] = rlocfind(num. P O L E S ] = r l o c f i n d ( A . La nueva Sintaxis es: [K. Este debe ser el punto o los puntos en donde se desea tomar el valor de k. >>rlocus(num. las Sintaxis para el comando rlocfind es: [ K .B.D.POLES] = rlocfind(A. MatLab activa la ventana de figuras en espera de que el usuario seleccione un punto del lugar de las raíces mediante el cursor. » [k. 0 1 3 2 e n l a p a r t e i m a g i n a r i a .Para la siguiente forma modificada de la ecuación característica de un sistema se desea hallar el lugar de las raíces mediante MatLab: >>num=[0. 0 1 3 2 i k = 1.C. cuando se trabaja con la función de transferencia. 4 6 2 5 -0 . Por ejemplo: P=3+0i o P=1 -0 .3.0.POLES] = rlocfind(num. 4 6 2 3 .P) o [K.6655 poles = -2 . 5 5 5 i .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. En este caso el punto seleccionado fue 2. Por medio del curso en el lugar de las raíces se selecciona una localización.den) MatLab dispone del comando rlocfind que permite determinar los polos del sistema para una valor dete rminado de k.den. 96 . MatLa b retorna el valor de k para esta localización y los polos asociados a esta ganancia. D ) . >>den=[1. 2 6 8 8 .1]. Su Sintaxis e s : [K. d e n ) Select a point in the graphics window selected_point = -2 . 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. Cuando se trabaja con las matrices de estado.0 .0.4623 en la parte real y . 7 7 7 3 i -0 .0 . 2 6 8 8 + 0 . C .
Los coeficientes decrec i e n t e s en potencias de S de estos polinomio pueden ser almacenados en vectores en MatLab.4 Controladores PID Para implementar los diferentes tipos de controladores (P. Si se multiplica el controlador C(S) por la función de transferencia del proceso o planta G(S) se formará la función de transferencia de lazo abierto. 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 relación ente dos polinomios. Para el caso del controlador proporcional. El controlador PID es C(S)=Kp + Ki/S + Kd S que se representa como: que es de nuevo una relación entre dos polinomios. Si dicho sistema es de la forma: donde G(S) es la función de transferencia de la planta o proceso. mientras que C(S) es la función de transferencia del controlador. PID) en MatLab se hace uso de la función de transferencia propia del sistema a objeto de estudio . que es una constante o valor es c a l a r .8. Por ejemplo un G(S) puede ser: 97 . PD. PI. C(S)=Kp.
>>num=[Kd Kp Ki].numd]=cloop(conv(num1. >>Ki=1. Para el ejemplo anterior.sign) El signo de la realimentación viene dado por sign.num2). >>num1=[Kd Kp Ki]. > > [numc. >>Ki=1. . >>step(num. el cual genera los polinomios del numerador (numc) y denominador (denc) de la función de transferencia de lazo cerrado con realimentación unitaria a partir de los polinomios de la función de transferencia de l a z o a b i e r t o ( n u m y d e n ) . tenemos: >>Kp=500.den) Para obtener la respuesta de lazo cerrado en el tiempo para una entra da escalón unitario se emplea el comando cloop.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.conv(den1. >>den2=[1 10 20 0]. >>step(numc. >>den1=[1 0]. >>num2=1.1).den. La salida obtenida mediante el comando s t e p se muestra a continuación: 98 . >>den=[1 10 20 0 0]. S u Sintaxis es: [numc.Para obtener la respuesta en lazo abierto ante una entrada escalón unitario tenemos: >>Kp=50. >>Kd=100.den2).denc]=cloop(num. >>Kd=10.
m Para cotejar sus diagramas de Bode: >>bode(num.". 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. C u a n d o e s c r i b i m o s un dígito pegado al punto como "2.9.^2.^2 (notar el espacio después del primer 2) y no >>A.den) donde n u m y d e n son vectores que contienen los coeficientes del numerador y denominador de H(s) en orden de potencias descendentes de s. 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 . Entonces si queremos calcular A2B2. el interpretador cree que es el número "2.'Visible'. 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. Escribimos >>bode([158.'off') o simplemente >>axis off 99 .*B.elemento).[1 5 0]) Precaución: El punto ". 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 .^2 Para remover ejes de la gráfica: >>set(gca.*B.811]. Ejemplo: Para ." puede significar operación elemento -p o r -e l e m e n t o o punto decimal. debemos escribir >>A. TRUCOS EN MATLAB® Paper semilogarítmico gratis: papelbod.0".^2 .11 15.
Para establecer propiedades de la gráfica. Por ejemplo. para graficar con una línea gruesa.y.3) (En el momento de creación) >>set(get(gca.3) ( D e s p u é s d e c r e a d a ) 100 .'children').'linewidth'.'linewidth'. >>plot(x.Para cambiar el color de trasfondo de la gráfica: >> whitebg('c') donde c es el código del color descrito en help plot. es más fácil hacerlo al crearla que después.

References: resolución 
 resolución 
 Resolución 
 Resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 Resolución