Source: https://www.scribd.com/doc/54153197/Tutorial-Matlab
Timestamp: 2017-09-25 01:14:18+00:00

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

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