You are on page 1of 70

Curso para estudiantes avanzados CONTENIDO

1. SISTEMA MATLAB
Introducción a MATLAB/SIMULINK 1.1. Introducción
agosto-setiembre de 2009 1.2. Apertura y cierre de MATLAB
1.3 Ayuda y demostraciones
1.3.1. Ayudas (Help)
Objetivos del curso 1.3.2. Demostraciones
1.4. Entorno de trabajo de Matlab
1.4.1. Escritorio de matlab (matlab desktop)
Introducción al uso del sistema MATLAB/SIMULINK Presentación y 1.4.2. Ventana de comandos
aplicación de las funciones básicas de MATLAB, de SIMULINK y de la 1.4.3. Ventanas con el registro histórico
librería de cálculo simbólico. Aplicación para la simulación y análisis de 1.4.4. Directorio actual
1.4.5. Editor de caminos de búsqueda (Path Browser)
problemas sencillos de ingeniería. 1.4.6. Editor de ficheros y depurador de errores (debugger)
1.4.7. Workspace browser: espacio de trabajo de MATLAB
Dictado: Ing. Delia Graciela Colomé 1.4.8. Preferencias: Formatos de salida y de otras opciones
1.4.9. Sensibilidad a minúsculas y mayúsculas
1.4.10. Registro de una sesión de trabajo
Sede: Instituto de Energía Eléctrica FI-UNSJ 1.4.11. Entrada y salida de datos
1.4.12. Lectura y escritura de archivos con formato
1.4.13. Fecha, hora y cálculos de tiempo
Contenido sintético 1.4.14. Conexión con Excel de Microsoft Office.Excel Link.
1. Sistema MATLAB: introducción, descripción, comandos básicos y 1.5. Estructura de datos
1.5.1. Vectores y matrices
programación 1.5.2. Manejo de matrices
2. Sistema SIMULINK: introducción, librerías, creación de modelos y 1.5.3. Matrices especiales
1.5.4. Tipos de datos
simulación. 1.5.5. Funciones de redondeo
1.5.6. Hipermatrices (arrays de más de dos dimensiones)
3. Comandos básicos de MATLAB para el cálculo simbólico. 1.5.7. Estructuras y celdas
1.6. Funciones y operaciones matemáticas
Bibliografía 1.6.1 Operaciones elementales
1.6.2 Funciones matemáticas elementales que operan de modo escalar
La bibliografía del curso es: 1.6.3. Funciones que actúan sobre vectores
1.6.4. Funciones que actúan sobre matrices
1.6.5 Análisis de datos
[1] Mathworks: User's Guide: Using MATLAB, Using SIMULINK 1.6.6 Polinomios
1.7 Graficación
[2] Javier García de Jalón, José Ignacio Rodríguez y Jesús Vidal: 1.7.1 Gráficos en dos dimensiones
Aprenda MATLAB 7.0 como si estuviera en primero. Escuela 1.7.2. Gráficos tridimensionales
Técnica Superior de Ingenieros Industriales. Universidad de 1.8. Programación en MATLAB
1.8.1. Operadores relacionales y lógicos
Politécnica de Madrid, 2005. 1.8.2. Lazos y estructuras condicionales
1.8.2.1. Comando for
1.8.2.2. Comando while
1.8.2.3. Comandos if, else, elseif
-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 1
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

1.8.2.4. Comando switch 1. SISTEMA MATLAB
1.8.2.5. Sentencias try...catch...end
1.8.2.6. Sentencias break, continue, return
1.8.3. Archivos M (M-files)
1.8.3.1. Script files 1.1. Introducción
1.8.3.2. Function files
1.8.3.3. Creando M-files • Sistema interactivo de software para cálculos científicos y de ingeniería.
1.8.4. Cadena de caracteres (Strings de texto)
1.8.5. Utilidades para programar • Con extensos recursos de cálculo numérico y graficación
2. Sistema SIMULINK • Surge del manejo de matrices. Es la abreviatura de “matrix laboratory”.
2.1. Acceso a SIMULINK
2.2. Terminar una sesión de SIMULINK • Ambiente de simulación y cálculo matemático que se puede utilizar
2.3. Ventanas de SIMULINK para modelar y analizar sistemas dinámicos.
2.4. Barra de menú
2.5. Mejoras en la simulación • Es un ambiente abierto en el cual numerosas librerías de funciones han
2.6. Construcción de un modelo sido desarrolladas.
2.7. Manejo de bloques
2.8. Librerías de bloques de Simulink • Desarrollado y comercializado por Mathworks Inc.
2.9. Comandos SIMULINK
2.10. Elección del algoritmo de integración
2.11. Actualización de modelos
Versión utilizada en el dictado del curso MATLAB 7.0 (Release 14)
2.12. Linearización año 2005
2.13. Interpolación de datos
2.14. S-Functions
2.15. Máscaras de subsistemas
La familia de programas MATLAB incluye el programa base y una amplia
2.16. Desarrollo de un modelo propuesto variedad de toolboxes o librerías.
3. CÁLCULO SIMBÓLICO CON MATLAB Las toolboxes son una colección de archivos y/o modelos especiales que
3.1. Comandos básicos
3.2. Comandos de cálculo amplían la funcionalidad del programa base.
3.3. Comandos de álgebra lineal
3.4. Funciones de simplificación
3.5. De cálculo simbólico a cálculo en Matlab
3.6. Graficación 1.2. Apertura y cierre de MATLAB
3.7. Otras funciones de cálculo simbólico
3.8 Herramientas El acceso a MATLAB es a través del icono de acceso directo o desde el
menú Inicio Programas Matlab.

-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 2 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 3
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

Para salir de MATLAB se presiona el botón de cierre x o desde menú File
se elige la opción Exit Matlab o se pueden utilizar los siguientes
comandos.

» exit o » quit

Nº de licencia, versión y fecha
» ver

Ejemplo: Graficación de la función seno de x

Genera arreglo de la variable argumento desde -4 a 4 con un paso de 0.01
>> x=-4:.01:4;

Calcula la función seno y guarda el resultado en el arreglo y
>> y=sin(x);
Escritorio de Matlab con ventanas de comandos de Matlab, de directorio
Abre ventana de figura, grafica la función seno en coordenadas cartesianas
actual y de últimos comandos, menú Desktop desplegado y pestaña de
e incluye grilla y título
ventana de workspace.
>>plot(x,y), grid, title('Función seno(x)')

Botón Start para dar acceso inmediato a ciertas capacidades del programa.
-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 4 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 5
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

D. Desde ventana de ayuda con el botón de ayuda ?: En los archivos del subdirectorio c:\MATLAB704\help\pdf_doc (en Abre una ventana en la que se puede buscar ayuda sobre la función o formato PDF) concepto que se desee.1. 1.1. Para obtener una descripción detallada de una función se puede utilizar el comando See also SLASH.1.mathwoks. Desde pantalla de comandos (help en línea) » help Se puede obtener información sobre comandos de MATLAB en la pantalla (help en línea) utilizando: » help produce una lista de todos los tópicos de MATLAB incluidos en el programa base y las librerías disponibles. CONDEST. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . » help symbolic 1. COND.3. La dirección de la página de Internet es: INV(X) is the inverse of the square matrix X. por ejemplo: Información sobre un comando especifico es obtenida con: » help randperm » help inv con posibilidad de consulta por hipertexto y con acceso directo a Internet. D.1.1.3. www. PINV.com A warning message is printed if X is badly scaled or nearly singular.-Ing. Con la aplicación Adobe Reader Acrobat. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 6 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 7 Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.3. NNLS. LSCOV.-Ing.3.2.1.3 Ayuda y demostraciones 1.3. Ayudas (Help) Amplias posibilidades de ayuda (help): 1. INV Matrix inverse. » doc inv Información sobre las funciones de una toolbox que muestra la información correspondiente al comando inv a través de un navegador de Internet en formato html.

2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. D.-Ing. demo Toolboxes Control System RLC Circuit Response 1.-Ing. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . D. Recorrer estos ejemplos da una idea de las posibilidades del programa.3. » demo -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 8 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 9 Dictado por Dr. Demostraciones MATLAB incluye demostraciones de funciones del módulo básico y para distintas toolboxes.

-Ing. La ventana de comandos (Command Window). -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 10 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 11 Dictado por Dr. El editor de vectores y matrices (Array Editor). entre las que se puede citar: a. orientadas a tareas concretas.1. Al arrancar MATLAB por primera vez o cuando se ejecuta el comando d. Las componentes más importantes del entorno de trabajo de MATLAB 7. 1.0 son: 1.4. D. Entorno de trabajo de Matlab El entorno de trabajo de MATLAB es muy gráfico e intuitivo. El resto de las ventanas o componentes citadas pueden alojarse en la Matlab Desktop o ejecutarse como ventanas independientes. c. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. El editor de ficheros y depurador de errores (Editor&Debugger). h. View/Desktop Layout/ Default. visualizan. El directorio actual (Current Directory). Escritorio de matlab (matlab desktop) El Matlab Desktop es la ventana más general de la aplicación.1. i. La plataforma de lanzamiento (Launch Pad). La ventana histórica de comandos (Command History). D. El espacio de trabajo (Workspace). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .-Ing. similar al de otras aplicaciones profesionales de Windows. f. Los componentes alojados en el Matlab Desktop pueden aparecer como sub-ventanas independientes o como pestañas dentro de una de las sub- ventanas. La ventana de ayuda (Help) Se pueden controlar las componentes visibles y la forma en que se g. El Escritorio de Matlab (Matlab Desktop). 2. Las componentes individuales. b.4. que es la ventana o contenedor de máximo nivel en la que se pueden situar las demás componentes. e. La ventana que permite estudiar cómo se emplea el tiempo de ejecución (Profiler).

ir al comienzo de la línea con la tecla Inicio.4. » línea de comando La sintaxis general de un comando de MATLAB es » [salida1. D.. La configuración adoptada por el usuario se mantendrá la siguiente vez que arranque el programa. » nombre del comando(input1. D.2..).]= nombre del comando(input1.). 1.) » salida1= nombre del comando(input1. configuraciones predefinidas..input2. Es posible recuperar comandos anteriores y moverse por dichos comandos con las teclas flechas ↑↓. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ ..El menú Desktop permite también eliminar del Desktop alguna de las Con los submenús de Desktop Layout se pueden adoptar algunas componentes visibles. Ventana de comandos Ventana en la que se ejecutan interactivamente las instrucciones de MATLAB y en donde se muestran los resultados correspondientes... para su uso posterior.-Ing. Es posible también guardar distintas configuraciones con distintos nombres. Para interrumpir la ejecución de un comando Crtl C -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 12 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 13 Dictado por Dr. El prompt de MATLAB es » en la ventana de comandos de MATLAB.. si es el caso. Es la ventana más importante. Es posible moverse sobre la línea de comando con las flechas Å y Æ..salida2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. este indica la línea de comandos. input2. al final con la tecla Fin y borrar toda la línea con Esc.. como la configuración por defecto (Default) o incluir sólo la Command Window. MATLAB y sus librerías son manejadas con comandos o funciones.-Ing.input2.

Cuando al ejecutar un fichero *.m. extensión *. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Comenzando a teclear el nombre de una función y pulsando la tecla Tab.4. MATLAB mantiene en todo momento un único directorio activo y sobre el se trabaja. MATLAB completa automáticamente el nombre de la función. Esta ventana brinda una visión más general de lo hecho anteriormente y permite seleccionar lo que realmente se desea repetir. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 14 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 15 Dictado por Dr. Para ello activar Por defecto el directorio actual es el work en la carpeta de Matlab. recomienda al usuario trabajar sobre carpetas propias.3.m se pueda ejecutar es necesario que se cumpla una El concepto de directorio activo o directorio actual es muy importante en de las dos condiciones siguientes: MATLAB. trabajar con el botón de examinar desde el escritorio. se la opción Wrap Lines. Las sentencias se pueden volver a ejecutar mediante un doble clic o por medio del menú contextual que se abre con click sobre ellas con el botón Los programas de MATLAB se encuentran en ficheros o archivos con la derecho.-Ing.4. Con click del botón derecho sobre el nombre de una función se accede a la El usuario puede posicionarse en el directorio actual sobre el que va a página del Help sobre dicha función. D. o muestra lista de funciones disponibles que comienzan con las letras tecleadas por el usuario.Se permiten líneas de comandos muy largas automáticamente siguen en la línea siguiente al llegar al margen derecho de la ventana. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .4. 1. Ventanas con el registro histórico La ventana Command History ofrece acceso a las sentencias que se han ejecutado anteriormente en la Command Window. mediante un subrayado se indica el enlace a la línea del fichero fuente en la que se ha producido el error. en el menú File/Preferences/Command Window.-Ing. Directorio actual Para que un fichero *.m se produce un error y se obtiene el correspondiente mensaje en la Command Window. D. 1. También se pueden copiar y volcar sobre la línea de comandos o en el Estos ficheros se ejecutan tecleando su nombre en la línea de comandos editor (sin la extensión).

Desde la ventana “Current directory” puede hacerse la manipulación y administración de archivos con las opciones del menú Edit o con los Con el comando Set Path del menú File aparece el cuadro de diálogo con botones dedicados. . Que esté en el directorio actual.m o .4. Los directorios deben existir. 3. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 16 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 17 Dictado por Dr. Este directorio es el primer sitio en el Supóngase que se utiliza la palabra name1 en un comando.m o . pero los abrir con el Editor/Debugger mediante un doble click. D. 5. El Path Browser es el programa que ayuda a definir la lista de directorios donde MATLAB debe buscar los ficheros de comandos y las funciones.mex.dll). Comprueba si hay un fichero llamado name1 en el directorio actual La ventana Current Directory permite explorar los directorios de la PC en (.mex.-Ing. cualquier parte de la ventana Current Directory se tiene la posibilidad de añadir ese directorio al Path de MATLAB. Comprueba si es una variable ya definida por el usuario 2.5. El Path es una lista ordenada de directorios en los que el programa 2. usuarios también pueden añadir sus propios directorios.-Ing. que se está buscando se detiene la búsqueda y se utiliza el fichero que se nombre. etc. En cuanto se encuentra lo La ventana Current Directory permite ordenarlos por fecha. El camino de Los cambios no son permanentes y dejan de surtir efecto al salir y volver a búsqueda (search path) determina la función a ejecutar.dll). los caminos de búsqueda. Comprueba si name1 es una función de interna o propia de MATLAB.m mostrados en la ventana Current Directory se pueden Muchos de los directorios del Path son propios de MATLAB. ha encontrado. . Editor de caminos de búsqueda (Path Browser) También desde la línea de comandos se puede incluir o eliminar un nuevo directorio. A partir del menú contextual que se abre o con el botón derecho en El orden de la lista es importante pues refleja el orden de búsqueda. 1. Desde esta ventana se pueden agregar o eliminar directorios. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. 4. Los ficheros *. el proceso que que MATLAB busca cuando desde la línea de comandos se le pide sigue el programa para reconocer que es name1 es: que ejecute un comando. Que esté en uno de los directorios indicados en el Path de MATLAB. entrar a MATLAB. Comprueba si name1 es una función del usuario busca los ficheros o las funciones a de ejecutar. forma análoga a la del Explorador u otras aplicaciones de Windows. El search path de MATLAB es una lista de directorios. normalmente al principio o al final de la lista. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Estos pasos se realizan por el orden indicado. allí contenidos. tamaño. Comprueba si hay un fichero llamado name1 en los directorios Cuando se llega al directorio deseado se muestran los archivos y carpetas incluidos en search path (. D. MATLAB puede llamar a una gran variedad de funciones (propias o de usuario) pudiendo existir más de una con igual nombre.1. 1.

6. El poder desde ese carácter hasta el fin de la línea es un comentario.m (M files) de MATLAB contienen conjunto de comandos o definición de funciones. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Editor de ficheros y depurador de errores (debugger) Los ficheros . También se pueden abrir los distintos archivos desde la ventana Current El editor muestra con distintos colores los diferentes tipos o elementos Directory o desde la línea de comandos de MATLAB constitutivos de comandos (verde: comentarios (%). -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 18 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 19 Dictado por Dr. Son archivos de texto en formato ASCII. azul: comando Matlab). D.-Ing. También indica si las comillas y paréntesis abiertos son cerrados.4. Incluye automáticamente sangría que indica bucles o lazos (programación estructurada). D. Con ctrl. las líneas seleccionadas. Matlab dispone de un editor que permite tanto crear y modificar M files. 1. como ejecutarlos paso a paso para depurar errores. T se eliminan las marcas de comentario. el programa supone que todo lo que va uno tras otro todos los comandos contenidos en dicho fichero. » edit filename % para acceder al editor de MATLAB. guardar instrucciones en un fichero permite ahorrar mucho trabajo de Seleccionando varias líneas y ctrl R se comentan con el carácter % todas tipeo. rojo: cadenas de caracteres. El editor se abre con la opción open o new desde el menú File. cuando Al tipear su nombre en la línea de comandos y pulsar Enter se ejecutan aparece en una línea de comandos. El carácter tanto por ciento (%) indica comienzo de comentario. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing.

-Ing.0 dispone de un cuadro de diálogo desde el que se establecen Desde esta ventana se puede editar y modificar el contenido de las casi todas las opciones que el usuario puede determinar por su cuenta. • Cuando el cursor se coloca sobre una variable aparece una pequeña ventana con los valores numéricos de esa variable.4. Preferencias: Formatos de salida y de otras opciones La ventana Workspace brinda esta información en forma gráfica. Este variables. Es también enormemente útil para aprender métodos numéricos y técnicas de programación.La ejecución de los comandos de un M-files se realiza con la función run Los siguientes comandos proveen información sobre las variables en uso del menú debug (MATLAB 6. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. • Single step: avanza un paso sin ingresar en funciones • Continue: continua hasta el siguiente breakpoint • Quit debugging: termina la ejecución del depurador • la flecha verde en el borde izquierdo indica la sentencia en que está detenida la ejecución (antes de ejecutar dicha sentencia). D. MATLAB 7.7. 1. D.-Ing. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 20 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 21 Dictado por Dr. Workspace browser: espacio de trabajo de MATLAB El espacio de trabajo de MATLAB es el conjunto de variables y de funciones de usuario que están definidas en la memoria del programa. • Set/Clear: Coloca/borra un breakpoint si es real o compleja » clear x y z % elimina los datos de las variables x y z del workspace • Clear all: Eliminar todos los breakpoint del M-file » clear % limpia todo el workspace • Step in: avanza un paso ingresando en funciones. y eliminarlas. cuadro de diálogo se abre con el comando Preferentes del menú File.8. cuantos bytes barra de menú y otras facilidades: ocupa. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .4. » who % lista todas las variables en memoria La función de debugger para depuración de errores incluye botones en la » whos % muestra las variables. pues es muy útil para detectar y corregir errores. su tamaño. El Debugger es un programa que hay que conocer muy bien. 1.0 en adelante) o con tecla F5 o desde la línea en el workspace de comandos tipeando el nombre del M-file.

tanto de las letras como del fondo– con la que se escribe en la ventana de comandos de » format long MATLAB. muestra los datos con 15 dígitos en punto fijo. 1. D. MATLAB distingue entre las variables x y X.si es negativo Si se elige la opción format rational el programa trata de expresar los números racionales como cocientes de enteros. letra minúscula.El cuadro de diálogo Command Window/Fonts ofrece la posibilidad de » format % para modificar el formato con que se muestra un dato elegir el tipo de letra –así como el tamaño y el color.-Ing. Es útil cuando números muy pequeños aparecen como 0. Se sugiere que los comandos desarrollados sean grabados con nombres en Es muy importante utilizar tipos de letra de tamaño constante (por ejemplo. Todos los comandos estándares de MATLAB deben ser ingresados en letra minúscula. puede ser cambiado utilizando el comando Preferences del menú File o el » diary filename % abre el registro comando format. Lucida Console o Monospaced). Registro de una sesión de trabajo Todos los cálculos en MATAB son realizados en doble precisión. El formato numérico por defecto tiene 4 dígitos después de la coma.-Ing.9. utiliza el comando diary. Sin Para crear un registro de todas las entradas y salidas en una sesión de embargo los resultados en la pantalla pueden ser presentados en diferentes MATLAB y grabar este registro bajo en nombre con formato ASCII. D. Courier New. . 1.4. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. » format long e muestra los datos con 15 dígitos en punto flotante. Esto No graba los datos sino sólo que se ve en la pantalla.10. se formas. para que las filas de las matrices se alineen bien en la pantalla. » diary off % para cerrar el registro -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 22 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 23 Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Sensibilidad a minúsculas y mayúsculas MATLAB es sensible a mayúsculas o minúsculas.4. Para volver al formato por default se utiliza » format short » format + % imprime el signo: + si el nro es positivo .

etc. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Este comando graba un espacio de trabajo (workspace: variables por nosotros definidas o resultados de operaciones). Se edita con Block de notas. ejecución en forma individual o en conjunto. 1. pantalla cuando se desarrollan nuevas funciones haciendo pruebas desde la Matlab utiliza el punto.MAT (formato binario) y si no se da el nombre Desde la ventana Command History también se puede repetir su como MATLAB. esto permite transferir datos desde MATLAB a otros programas.En cambio: Los resultados de Matlab se pueden exportar a otras aplicaciones como » diary y » diary off Word o Excel o Block de Notas: • con el comando diary (datos de pequeño tamaño) graba el registro bajo un archivo con el nombre “diary”. » save filename Desde Matlab R12 la ventana Command History permite seleccionar y copiar los comandos y después pegarlos en un m-file.11.m con un editor de texto Graba datos en formato ASCII (en 8 dígitos o 16 dígitos). • crear un archivo *.-Ing. Si no se da extensión se graba como *. • con el comando save con la opción -ascii • con funciones de bajo nivel fopen y fwrite » edit filename % para recuperar diary • con comandos copy y paste Este comando es de utilidad para registrar todo lo que se muestra por Debe tenerse cuidado con el símbolo utilizado para separar decimales. el comando load. se copian datos de la aplicación original y se depositan entre corchetes de una matriz o vector en la línea de » save filename x -ascii -double comandos de Matlab. • leer datos de un archivo con las funciones fopen y fread -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 24 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 25 Dictado por Dr. Graba datos en un archivo en formato binario de MATLAB.-Ing. Con este formato sólo • leer un flat file en ASCII (archivo con filas de longitud constante se guardan datos y no otra información como los nombres de arreglos o separadas por Enter y varios datos por filas separados por blancos) con vectores.4. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Comandos save y load También se puede seleccionar y copiar la información de la ventana de comandos y pegarla en un m-file.MAT.) a Matlab se puede utilizar: » save filename x y z » save filename x /ascii /double • con copy y paste. acces. ventana de comandos. Entrada y salida de datos Para realizar una grabación parcial de los datos en uso: La importación de datos de otras aplicaciones (excel.

1). » time=fcia(:.. Para grabar el espacio de trabajo o variables del mismo en un archivo también se puede utilizar la opción “Save Workspace as” del menú File o 1. y = [x.-Ing. 'r+' (lectura y escritura) Ejemplo: ejsavemat. es decir en archivos formateados. » [var1.12. puede utilizar la opción “Import Data” del menú File o el botón load data file de la ventana del Workspace.permission) % abre el archivo especificado con el permiso especificado » load filename % Carga datos desde un archivo al espacio de » fid=fopen('exp. cadena de control: especifica formato para las variables %s cadena de caracteres el archivo ASCII fcia. fprintf(fid..dat % debe indicarse la extensión del archivo ASCII. exp(x)].8f\n'.'wt').2). -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 26 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 27 Dictado por Dr.dat es un archivo de texto con dos columnas. 'a' (escritura a continuación append). ASCII o binario respectivamente.1:1.txt'.-Ing. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. D. 'w'.'w') % abre el archivo exp.] = fscanf(fid.var2.txt para trabajo.y). D. todas las filas tienen el mismo número de elementos.dat debe estar sólo en uno de los siguientes formatos %d para variables enteras de datos: %f para variables punto flotante 1 sólo nro %lf para variables doble precisión 1 vector fila Para escribir/crear un archivo con un formato particular (ejfprint.4.'cadena de control'.Con la opción -append en el comando save la información se guarda a Para cargar datos desde un archivo en el espacio de trabajo también se continuación de lo que hubiera en el archivo. » fid=fopen(filename. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . escritura toda la información se guarda respetando el nombre de cada variable. » fcia=fcia(:. 'r'.'%6. Cuando se fid: identificador del archivo recuperan estos ficheros con load toda la información se guarda en una única matriz con el nombre del fichero.m guarda datos en y carga datos desde archivo binario » fclose(fid) % para cerrar archivos » fclose('all') % cierra todos los archivos Carga datos desde un archivo de texto Las funciones fscanf y fprintf permiten leer y escribir en archivos » load fcia. El comando load admite las opciones -ascii y -mat para leer en formato fid = fopen('SalidaExp.m) 1 vector columna 1 matriz x = 0:. fprintf(fid.'tiempo exp(tiempo)\n')..size) % lee datos El archivo fcia.2f %12. Esto produce un error cuando no size: argumento opcional que indica el tamaño del vector o matriz a leer. fclose(fid).txt'. Lectura y escritura de archivos con formato el botón grabar de la ventana del Workspace con las variables a grabar seleccionadas.

\r. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . o.1). now.1).1). permite detectar los "cuellos de botella" de una aplicación. i. Profiler » profile report -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 28 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 29 Dictado por Dr. x=A\b. toc Ejemplo: ejtime. c. E.W]=weekday('24-Oct-1989') Matlab dispone de funciones para calcular el tiempo empleado en la ejecución de funciones: cputime. realizadas: flops » b=rand(5. x.\f se utilizan para producir linefeed. b=rand(100. x=zeros(100. etime.\t.-Ing.m » profile on –detail mmex Otra función permite calcular el número de operaciones en punto flotante » A=rand(5). Fecha. g. G. time=cputime-time » tic. hora y cálculos de tiempo » profile on » cloc % indica fecha y hora » fix(clock) % fecha y hora en formato fijo » date % retorna la fecha para operar con fechas se utilizan también los comandos datenum. and formfeed Se utiliza para optimizar tiempos de cálculo. » A=rand(100). y s). tiempo=clock-tiempo » time=cputime. X. x=A\b. calendar y weekday. » x=Gauss_cp(A.8 Es una utilidad que permite saber que tiempo de cálculo se ha gastado en cada línea de una función definida. f. » [D.\b. Con este comando es posible controlar Utiliza formatos de lenguaje C (d. tab. D. datevec. D. x=A\b. Se activa con 1. backspace.13. e. Los formatos especiales \n.-Ing. Las funciones fwrite y fread leen o escriben en un archivo binario. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.b).utiliza formato f6.4. la muestra de tiempos.2 y f12. u. » tiempo=clock. tic ops toc. carriage return.m Ejemplo: ejprofile.

) y j o con tilde ExcelLink with Matlab y aceptar. » t=[0:0. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .2. resultado de indeterminaciones son: como 0/0). -sqrt(-1)].5. “:” es un comando muy potente de MATLAB y tiene numerosos usos Su representación es general e incluye vectores reales y complejos y escalares.. D. i (=sqrt(-1)). vectores y matrices de celdas.4. Estructura de datos MATLAB se utiliza el comando: » exist('pi') % da como resultado 0 . Crea el vínculo abre automáticamente Matlab y agrega botones de Otras variables especiales son Inf (infinito. 2 hasta 8 1. incrementos de 0. estructuras y clases y objetos.1. D. Los elementos de una fila pueden separase con espacios o comas y las filas 1. resultado de divisiones por comandos en Excel. entre si se separan con un punto y coma o con un retorno de carro.3] genera un vector fila x con una secuencia de números desde 5 a 1 con » y=[1 2 3] decrementos de 0. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. » x' MLPutMatrix Create or overwrite MATLAB matrix with data from Este es automáticamente asignado a la variable permanente ans. z vectores fila » x=[0:10] » u = x' % con u vector columna -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 30 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 31 Dictado por Dr. Desde Menú Herramientas de Excel opción complementos seleccionar Cantidades muy usadas tiene nombres especiales como pi (=3.5. Vectores y matrices El elemento básico de MATLAB es la matriz compleja de doble precisión. 1 . Los comandos de intercambio de datos más utilizados cero) y NaN (standard para not-a-number.Excel Link.0 se puede trabajar con matrices de más de dos genera un vector fila t con una secuencia de números desde 0 a 10 con dimensiones.14. » z=[1+j.1. y. Excel worksheet.. Conexión con Excel de Microsoft Office.1:10] Desde la versión 5.-Ing.1415. Para verificar si una variable o archivo ya existe en el espacio de trabajo de 1. GetMatrix Write contents of MATLAB matrix in Excel Si no asignamos nombre al resultado worksheet. El paso por defecto es 1 x. » x=[5:-0.2:1] » x=[1. En forma indirecta incluye polinomios y funciones de transferencia.2. 2+pi*i.-Ing.

3) El ingreso de matrices se realiza por filas » A(2. 1 + 2] » t = linspace(n1. el número de puntos n es opcional por defecto es 50.-Ing.n2.3) % da error » A(:.n2.-Ing. puntos. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 32 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 33 Dictado por Dr. D.3) % da el elemento A(2.n). resulta x =[1 2] genera un vector logarítmicamente espaciado desde 10n1 a 10n2 con n Cuando el comando ocupa toda la línea la marca de continuación es .7 8 9]. El número de puntos n es opcional. » x=[2 3].5. resulta B=[1 3 3 1 2 3] genera un vector desde n1 a n2 con largo n.2.1:3) % retorna las filas 1 y 2 y las columnas 1. 2 y 3.2. D.n).3) =12 7 8 9]. 1.Con los comandos linspace y logspace se genera también una secuencia de datos: » B = [1. 1+ 2. la matriz A » length(a) % retorna la longitud del vector a. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . por defecto es 100. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. “.2) % da la 2da columna de A » A = [1 2 3. x(2)=2 » w = logspace(n1. 1 +2.3) =12. o » A = [1 2 3 Si A es de orden 2x2 456 » A(3. 1+2.. » A(1:2. hace crecer la matriz A al orden 3x3 con el elemento A(3. (tres puntos) al final de la línea que se desea continuar Utilizados típicamente para crear el eje de tiempo y el eje de frecuencia » size(A) % retorna el orden (número de filas y columnas) de para los cálculos de respuesta temporal y respuesta en frecuencia. Se debe tener cuidado con los espacios cuando haya un operador entre para anexar elementos a un vector datos de los elementos o cuando se manejen números complejos.. Para interrumpir un comando o función se presionan simultáneamente las teclas CRTL C. MATLAB considera vectores fila por defecto: >> x(1)=1.4 5 6. Estos son de gran utilidad al realizar operaciones entre matrices que requieren satisfacer condiciones de compatibilidad de orden. Manejo de matrices Para examinar los valores de las variables se tipea en nombre de la misma Los elementos de una matriz pueden ser direccionados por: » eps » A(2.” se utiliza para evitar que se muestren los valores asignados por pantalla.

» x=[x,5] 0.8227 0.7599
x= 2 3 5 0.5121 0.3761
» x=[x,5]
Otra matriz especial es la matriz vacia q =[ ]
x= 2 3 5 5
» A = rand(m); A(:,1:3)=[ ]
» x=[5,x] en la matriz A de orden m se le han removido las 3 primeras columnas.
x= 5 2 3 5 5
» diag(v)
» A(: ) retorna una matriz diagonal con los elementos del vector v en la diagonal.

retorna un vector columna formado por todas las columnas de A colocadas Si v es una matriz diag(v) retorna la diagonal de v como un vector.
una debajo de otra.
» triu(v) % retorna el triángulo superior de la matriz v
1.5.3. Matrices especiales
» tril(v) % retorna el triángulo inferior de la matriz v
» A = eye(m) % retorna la matriz identidad de orden m
» A = eye(size(B)) % retorna la matriz identidad del mismo orden que 1.5.4. Tipos de datos
B
» A = eye(m,n) % crea la matriz identidad de mayor orden Por defecto MATLAB trabaja con variables de punto flotante y doble
posible y rellena el resto con 0. precisión (double), guardando cada dato en 8 bytes, con unas 15 cifras
decimales exactas.
Los comandos ones, zeros y rand tienen sintaxis similar.
Con estas variables pueden resolverse casi todos los problemas prácticos y
» A = rand(m) con frecuencia no es necesario declarar variables de tipos distintos, como
retorna una matriz de orden m con elementos uniformemente distribuidos sucede con cualquier otro lenguaje de programación.
entre 0 y 1.
Sin embargo, en algunos casos es conveniente declarar variables de otros
» A = randn(m) tipos porque puede ahorrarse memoria y hacer los cálculos mucho más
retorna una matriz de orden m con elementos normalmente distribuidos rápidamente.
con media 0 y varianza 1.
Variables enteras
Para establecer la semilla en
» rand('seed',25) MATLAB permite crear variables enteras con 1, 2, 4 y 8 bytes (8, 16, 32 y
» rand(2) 64 bits). Estas variables pueden tener signo o no tenerlo.
ans =
-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 34 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 35
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

Los tipos de los enteros con signo son int8, int16, int32 e int64, y sin signo Las variables lógicas surgen como resultado de los operadores relacionales
uint8, uint16, uint32 y uint64. (==, <, <=, >, >=, ~=, ver y de muchas funciones lógicas como any y all
que se aplican a vectores y matrices.
>> i=int32(100); % se crea un entero de 4 bytes con valor 100
Números complejos: función complex
>> j=zeros(100); i=int32(j); % se crea un entero i a partir de j
En muchos cálculos matriciales los datos y/o los resultados no son reales
>> i=zeros(1000,1000,'int32'); % se crea una matriz 1000x1000 de enteros sino complejos, con parte real y parte imaginaria. MATLAB trabaja sin
ninguna dificultad con números complejos.
La función isinteger(i) devuelve 1 si la variable i es entera y 0 en otro
caso. >> a=sqrt(-4)
a = 0 + 2.0000i
La función class(i) devuelve el tipo de variable que es i (int8, int16, ...), >> 3 + 4j
ans =3.0000 + 4.0000i
Variables reales
En la entrada de datos de MATLAB se pueden utilizar indistintamente la i
MATLAB dispone de dos tipos de variables reales o float: single y double, y la j para representar el número imaginario unidad (en la salida siempre
que ocupan respectivamente 4 y 8 bytes. Por defecto se utilizan doubles. aparece la i).

Las funciones single(x) y double(y) permiten realizar conversiones entre Si la i o la j no están definidas como variables, puede intercalarse el signo
ambos tipos de variables. *.
La asignación de valores complejos a vectores y matrices desde teclado
Las funciones realmin y realmax permiten saber los números double más puede hacerse de las dos formas (conviene hacer antes clear i, para que i
pequeño y más grande (en valor absoluto) que admite el computador. Para no esté definida como variable):
simple precisión se utiliza realmin('single') y realmax('single').
>> A = [1+2i 2+3i; -1+i 2-3i]
La función isfloat(x) permite saber si x es una variable real, de simple o A=
doble precisión. Para saber exactamente de qué tipo de variable se trata se 1.0000 + 2.0000i 2.0000 + 3.0000i
pueden utilizar las funciones isa(x, 'single') ó isa(x, 'double'). -1.0000 + 1.0000i 2.0000 - 3.0000i

Variables lógicas >> A = [1 2; -1 2] + [2 3; 1 -3]*I % En este caso el * es necesario
A=
Sólo pueden tomar los valores true (1) y false (0). 1.0000 + 2.0000i 2.0000 + 3.0000i
-1.0000 + 1.0000i 2.0000 - 3.0000i

-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 36 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 37
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

MATLAB dispone asimismo de la función complex, que crea un número tercer subíndice representa la tercera dimensión: la “profundidad” de la
complejo a partir de dos argumentos que representan la parte real e hipermatriz.
imaginaria:
Los elementos de una hipermatriz pueden ser números, caracteres,
>> complex(1,2) estructuras, y vectores o matrices de celdas.
ans =
1.0000 + 2.0000i Definición de hipermatrices
Las siguientes sentencias generan, en dos pasos, una matriz de 2×3×2:
El operador de matriz traspuesta ('), aplicado a matrices complejas,
produce la matriz conjugada y traspuesta. La función conj( ) determina la >> AA(:,:,1)=[1 2 3; 4 5 6] % matriz inicial
matriz conjugada y el operador (.') calcula sólo la matriz traspuesta. AA =
123
1.5.5. Funciones de redondeo 456
>> AA(:,:,2)=[2 3 4; 5 6 7] % se añade una segunda matriz
» x=25.895667; AA(:,:,1) =
» round(x) % redondea al entero más cercano 123
ans = 26 456
AA(:,:,2) =
» fix(x) % redondea hacia cero 234
ans = 25 567

» floor(x) % redondea hacia -inf Funciones que trabajan con hipermatrices
ans = 25
>> BB=randn(2,3,2)
» ceil(x) % redondea hacia +inf
ans = 26 Las siguientes funciones de MATLAB se pueden emplear también con
hipermatrices:
1.5.6. Hipermatrices (arrays de más de dos dimensiones) size() devuelve tres o más valores (el nº de elementos en cada
dimensión)
MATLAB permite trabajar con hipermatrices, matrices de más de dos ndims() devuelve el número de dimensiones
dimensiones. squeeze() elimina las dimensiones que son igual a uno
reshape() distribuye el mismo número de elementos en una matriz
Una posible aplicación es almacenar con un único nombre distintas con distinta forma o con distintas dimensiones
matrices del mismo tamaño (resulta una hipermatriz de 3 dimensiones). El permute(A,v) permuta las dimensiones de A según los índices de v
ipermute(A,v) realiza la permutación inversa
-Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 38 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 39
Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ

etc. La estructura alumno se crea creando un objeto de dicha estructura. D. » alum(10)=struct('nombre'. (').76589) etc. seguidos del valor que se les quiere dar. el resto de los campos se inicializan con una cadena vacía o una matriz vacía.-Ing.5. » alu. Las funciones matriciales propias del Álgebra Lineal (det(). Este valor puede ser la cadena cos(). Una estructura (struct) es una agrupación de datos de tipo diferente bajo un mismo nombre.edad=18. con crea un vector de 10 elementos cada uno de los cuales es una estructura el operador dos puntos (:)).'carnet'. Estructuras y celdas función struct(). inv(). Para poderlas aplicar hay que extraer primero las matrices correspondientes (por ejemplo. Todas las funciones de MATLAB que operan sobre escalares (sin().). alum(i). lazo for con sentencias del tipo: » alum(i).nombre='Noelia'. tipo alumno. 2.s) permite saber si la cadena s es campo de una estructura ST También puede crearse la estructura por medio de la función struct(). Sólo el elemento 10 del vector es inicializado con los argumentos de la 1. se pueden establecer las » al = struct('nombre'.carnet=77524.7.nombre='Miguel' » alu. ejemplo: resultando un array de una dimensión inferior.Respecto al resto de las funciones de MATLAB.s) elimina el campo s de la estructura ST -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 40 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 41 Dictado por Dr.'Ignacio'.) se aplican sobre hipermatrices elemento a elemento (igual vacía ('') o la matriz vacía ([]). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. ejemplo: La siguiente sentencia añade el campo edad a todos los elementos del vector alum. aunque sólo se da valor al campo del elemento 5. uno a uno se crean los distintos campos. la estructura alumno puede contener los campos nombre (una cadena de caracteres) y carnet (un número). etc. Las funciones que operan sobre vectores (sum(). » alu Funciones para operar con estructuras Se accede a los miembros o campos de una estructura por medio del operador punto (. isstruct(ST) permite saber si ST es o no una estructura rmfield(ST.'Ignacio'. 3. Por ejemplo.carnet=75482 » alum(5).) no se pueden aplicar a hipermatrices. max(). que sobre vectores y matrices).76589) siguientes reglas para su aplicación a hipermatrices: Los nombres de los campos se pasan a la función struct() entre apóstrofos 1.) se Pueden crearse vectores y matrices (e hipermatrices) de estructuras.-Ing. D.nombre). MATLAB permite añadir un nuevo campo a una estructura en cualquier momento. Por aplican a matrices e hipermatrices según la primera dimensión. Para dar valor a los campos de los elementos restantes se puede utilizar un Estos datos se llaman miembros (members) o campos (fields).'carnet'. que une el nombre de la estructura y el nombre del fieldnames() devuelve un vector de celdas con cadenas de caracteres campo (por ejemplo: alu. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . que recogen los nombres de los campos de una estructura isfield(ST.

num2cell() convierte un array numérico en un cell array el cuarto una estructura. se obtendría un error).3)} Un vector (matriz o hipermatriz) de celdas es un vector (matriz o Funciones para trabajar con vectores y matrices de celdas hipermatriz) cuyos elementos son cada uno de ellos una variable de tipo cualquiera.{'vector'. Vectores o matrices de celdas (Cell Arrays) vcc = {[1 2 3].3) Artificiales. y también en una sola operación en la forma.2) [1x3 double] 'mi nombre' [3x3 double] ST = vector: [1 2 3] Es importante que el nombre del vector de celdas vc no haya sido utilizado cadena: 'mi nombre' previamente para otra variable (si así fuera.-Ing. etc.3)} vc = » ST=cell2struct(vb. » vb{1}=[1 2 3] » vb{2}='mi nombre' Se utilizan estructuras en las funciones de la librería de Redes Neuronales » vb{3}=rand(3. D.. el segundo una matriz. El tercer argumento (un 2) vc = indica que es la segunda dimensión del cell array (las columnas) la que va [1x3 double] a dar origen a los campos de la estructura. » vc(3)={rand(3. Conversión del cell array vb en una estructura ST cuyos campos se pasan » vc(1)={[1 2 3]} como argumentos a la función cell2struct().s) devuelve el valor del campo especificado. cell2struct() convierte un cell array en una estructura struct2cell() convierte una estructura en un cell array Creación del siguiente vector de celdas. matriz: [3x3 double] Obsérvese que para crear un vector de celdas los valores asignados a cada » vbb = struct2cell(ST)' % hay que transponer para elemento se han definido entre llaves {. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .getfield(ST.n) crea un cell array vacío de m filas y n columnas celldisp(ca) muestra el contenido de todas las celdas de ca En un array ordinario todos sus elementos son números o cadenas de cellplot(ca) muestra una representación gráfica de las distintas celdas caracteres. el tercero una cadena de caracteres. Sin embargo.}.'cadena'. el primer elemento puede iscell(ca) indica si ca es un vector de celdas ser un número.-Ing. rand(3. en un array de celdas. 'mi nombre'.. D. » vc(2)={'mi nombre'} vc = Con posterioridad la estructura ST se convierte en un nuevo cell array [1x3 double] 'mi nombre' llamado vbb. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. cell(m. obtener una fila vbb = [1x3 double] 'mi nombre' [3x3 double] Otras nomenclaturas alternativas y similares: -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 42 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 43 Dictado por Dr.'matriz'}.

% given the admittance matrix and current vector 8. A continuación se enumeran los tipos de funciones más importantes. 2].En ASCII: { es alt 123 y } es alt 125 1.Funciones matemáticas elementales.025 0.Funciones matriciales específicas. 4. -0.*.Funciones para análisis estadístico de datos. El comando dot calcula el producto escalar de dos vectores y el cross el 3.-Ing..15 -0. eig(autovalores).075].145 -0. Ejemplo: Lis3_4.05 -0. % Y is the admittance matrix 9. angle y conj.. D.Integración numérica.m 6.m -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 44 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 45 Dictado por Dr.. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. funciones trigonométricas. inv (inversa). 0. % initialize matrix y and vector I using YV=I form Y = [ 0.. V2 and V3 are \n') trace(traza)..* (realizadas de acuerdo a las reglas del álgebra lineal) tiene trabajando con vectores y matrices. imag .^.6.Funciones para procesamiento de señal. % this programs computes the nodal voltage 7. norm(norma).Funciones para análisis de polinomios. clasificadas según su finalidad: Tipo arreglo: +. funciones trascendentales están incluidas..025. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .Funciones matriciales elementales. .-Ing. ./.. abs. Ejemplo: ex4_1. El inconveniente es que se pierde parte de la eficiencia que MATLAB Tipo matriz: + .. . rank (rango)..* / ^).6.Resolución de ecuaciones no-lineales y optimización.Funciones especiales. real. I = [5..1 0. » B/A % es equivalente a B * inv(A) 1. 1..05.1 -0. % V is vector de tensiones 11. -. -0. Funciones y operaciones matemáticas » A\B % es equivalente a inv(A) * B » inv(A) % MATLAB tiene diversos tipos de funciones. son realizadas elemento a elemento requiere que los argumentos sean de igual dimensión. 2. flipud v = inv(Y)*I y fliplr (halla matriz simétrica respecto a un eje horizontal o vertical). matriz y tipo arreglo (elemento a elemento). producto vectorial.Funciones para la descomposición y/o factorización de matrices. fprintf('Nodal voltages V1. 5. funciones hiperbólicas. Operaciones algebraicas básicas (+ . La norma se calcula con el comando norm.1 Operaciones elementales La gran ventaja de las estructuras y los arrays de celdas es que proporcionan una gran flexibilidad para el almacenamiento de los más MATLAB tiene dos tipos de operaciones y funciones matemáticas: tipo diversos tipos de información. Otras funciones que incluye son: % solve for the voltage det (determinante).Funciones para integración de ecuaciones diferenciales ordinarias. % I is the current matrix vector 10. rot90 (rota k*90º la matriz rectangular).

asin(x) arco seno.1).56 0.y) resto de la división (2 argumentos que no tienen clear que ser enteros).:)*a(3. log10(x) logaritmo decimal.2).6. 0 si =0 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 46 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 47 Dictado por Dr. std(x) desviación x(1)=(a(1. [y.1)/a(1.24 1.a(3. cuando se aplican a una matriz matriz considerada como vector.:)=tempo.:). cumsum(x) pause(2) x(3)=a(3.a(2. acos(x) arco coseno. se aplican de la misma forma a escalares. Funciones que actúan sobre matrices • Funciones trigonométricas: sin(x) seno.1).04 0.a » x=[1+j . ni tempo=a(3.28 0] común múltiplo. lcm(x) mínimo a=[-0. min(x) mínimo elemento de a(3.2 Funciones matemáticas elementales que operan de modo escalar Estas funciones se pueden aplicar también a matrices.:)=a(1.:)=a(2. sum(x) suma de los elementos de un vector. -1-j]. dando como valor de Estas funciones. atan2(x) arco tangente (devuelve un ángulo entre -π y +π).. % se inicializa como vector columna % primer pivoteo (se intercambian las filas 1 y 2) Función angle retorna entre pi y -pi el argumento de un número complejo tempo=a(2. Funciones que actúan sobre vectores a(3.% solución de un sistema de ecuaciones utilizando % eliminación de Gauss y 1 si >0. angle(x)*180/pi pause(5) % Eliminación del elemento debajo del primer pivote a(2.' calcula la traspuesta (sin conjugar) de la matriz A exponencial.a(1.4)-a(1.1)/a(1.1).2). etc. x(2)=(a(2. Algunas de las funciones de este grupo son las siguientes: 1. acoef=a(:.4.a sobre escalares): pause(5) % Eliminación del elemento debajo del segundo pivote • max(x) máximo elemento de un vector.6. devuelve el vector suma acumulativa de los elementos de un vector. exp(x) función B = A.:)*a(3.12 3.4)/a(3.:)=tempo. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . mean(x) valor medio de los elementos de un vector. etc.3).2)/a(2.x % resolución aplicando x=inv(acoef)*b típica.32 1. atan(x) arco Las siguientes funciones exigen que el/los argumento/s sean matrices.0.:)*a(2. D. sinh(x) seno Funciones matriciales elementales: hiperbólico.2:3)*x(2:3))/a(1.-0.:)-a(1. B = A' calcula la traspuesta (conjugada) de la matriz A • log(x) logaritmo natural. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar dichas funciones a la matriz traspuesta. cos(x) coseno. x=[0. 1. sqrt(x) raíz cuadrada.:)-a(2. 1. prod(x) producto de los elementos de un vector.6.04 0.0]'. gcd(x) máximo común divisor. Por tanto. pero en ese caso se aplican por separado a cada columna de la matriz.-Ing. D.i]=sort(x) x=inv(acoef)*b ordenación de menor a mayor de los elementos de un vector x. tan(x) tangente.0.:).a un vector.1:3) b=a(:.4)-a(2. vectores y matrices.24 -0.3.3)*x(3))/a(2.:).:).-Ing.56 -1. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. rem(x.:)-a(1.:)=a(3.4) pause(5) En ángulos MATLAB opera en radianes. actúan sobre cada elemento de la matriz como si se tratase de un escalar. sign(x) devuelve -1 si <0.a(2. tangente (devuelve un ángulo entre -π/2 y +π/2).:)=a(2. que comprenden las funciones matemáticas retorno un vector resultado de aplicar la función a cada columna de la trascendentales y otras funciones básicas.a pause(5) % segundo pivoteo (se intercambian las filas 2 y 3) Las siguientes funciones sólo actúan sobre vectores (no sobre matrices.:)=a(3.

– Funciones basadas en el cálculo de valores y vectores propios: » min(min(A)) % encuentra el menor elemento de la matriz A [X. complejos ordena de acuerdo a la magnitud. D es diagonal m×n (mismo tamaño que A) [m. B = null(A) devuelve una base ortonormal del subespacio nulo de la sort ordena las columnas de una matriz en orden ascendente. Si se aplican a matrices. si es próximo a 0 no lo está. Funciones de factorización y/o descomposición matricial nor = norm(A) calcula la norma-2 de una matriz (el mayor valor singular). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . d = det(A) devuelve el determinante d de la matriz cuadrada A. prod.n] = size(A) devuelve el número de filas m y de columnas n de A y contiene los valores singulares. D. » [sx. columnas de A. » [Mp. mean. Operan con vectores. Si el elementos del vector. matriz. E = rref(A) reducción a forma de escalón 1.D] = eig(A) valores propios (diagonal de D) y vectores propios (columnas de X) de una matriz cuadrada A. Funciones son: c = rcond(A) devuelve una estimación del recíproco de la condición min. median. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 48 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 49 Dictado por Dr.6. resolver un sistema de ecuaciones lineales con dicha B = inv(A) calcula la inversa de A.U] = lu(A) descomposición de Crout (A = LU) de una matriz. max. – Funciones basadas en la factorización triangular (eliminación de Gauss): c = cond(A) condición numérica sub-2 de la matriz A. n = size(A) devuelve el tamaño de una matriz cuadrada A B = pinv(A) calcula la pseudo-inversa de una matriz rectangular A.-Ing.Tp]= max(ystep) Retorna el valor máximo Mp de ystep y el índice del arreglo Tp en que se – Funciones basadas en la descomposición QR: produce.V] = svd(A) descomposición de valor singular de una matriz característico de la matriz cuadrada A rectangular (A=U*D*V').indx]=sort(x) [Q. Para números matriz rectangular A. sx es la entrada ya ordenada Q = orth(A) las columnas de Q son una base ortonormal del espacio de indx son los índices utilizados en el ordenamiento. cumsum y cumprod de los numérica de la matriz A basada en la norma-1.D. son calculados columna a columna y el resultado se presenta como un vector fila. D.v = poly(A) devuelve un vector v con los coeficientes del polinomio [U.y.-Ing. sum.xi) comando de interpolación dada y=f(x) brinda el valor de yi en xi.5 Análisis de datos U = chol(A) descomposición de Cholesky de matriz simétrica y positivo-definida. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. U y V son matrices t = trace(A) devuelve la traza t (suma de los elementos de la diagonal) ortonormales.R] = qr(A) descomposición QR de una matriz rectangular. Son funciones orientadas a columnas. La condición numérica da una idea de los errores que se obtienen al [L. – Funciones basadas en la descomposición de valores singulares » yi=spline(x. resultado es próximo a 1 la matriz A está bien condicionada. r = rank(A) calcula el rango r de una matriz rectangular A. std.

A) calcula el polinomio en sentido matricial plot utiliza ejes lineales plotyy() dibuja dos funciones con dos escalas diferentes para las en cambio con ordenadas.b) Ejemplo: ejspline. » y2=spline(x.-Ing. loglog. Las salidas r son los residuos.6.^(-1).7.7 Graficación característico = det|λI-A| 1.m » [q. py=[p.y). p los polos y k el término directo. y=log10(x). semilogx el eje x es logarítmico (semilogy) y el otro eje es lineal -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 50 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 51 Dictado por Dr.A) el calculo es realizado elemento a elemento loglog ambos ejes son logarítmicos Los polinomios se multiplican y dividen utilizando conv y deconv.-Ing. » raíces=roots(p) Ejemplo: poly_int.r]=deconv(a. Son presentados como vectores conteniendo los coeficientes de l polinomio en orden descendente.5) q es el polinomio resultante (cociente) y r el resto » log10(2. D.d]=residue(r.0] retorna el vectores con los coeficientes de la ecuación Si el argumento de poly es una matriz el comando retorna el polinomio 1.y. » [n. una a la derecha y otra a la izquierda de la figura.k) Dado el polinomio s3+2s2+3s+4 » polyfit(x.k]=residue(num.s) Comandos plot. D. encuentra los coeficientes de un polinomio p(x) de grado n que se ajusta (fits) a los valores dato (x.p.b) » x=[1:5]. » polyval(p2.*[n:-1:1]. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.5) » [r. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . » c=conv(a.2.y.p. semilogx y polar.n) » p=[1 2 3 4].1 Gráficos en dos dimensiones Un polinomio puede ser evaluado en un punto s con » ps=polyval(p.m calcula las raíces de la ecuación s3+2s2+3s+4=0 % Integración del polinomio p » a=poly(raíces) n=length(p).den) 1. » polyvalm(p.6 Polinomios El comando residue realiza la expansión en fracciones parciales.

subplot(211) y subplot(212) son adecuados para las gráficas de Bode. » plot(t1. x2.x3] ) con t.'x2'.5+j*2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .[x1.t2.'x3') % coloca leyendas indicativas a 3 curvas -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 52 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 53 Dictado por Dr.’b+’) % grafico en coordenadas cartesianas » plot(x.x3 ) en este caso las curvas pueden tener diferentes números de puntos. textos y pueden ser modificados .x3] ) con t. Si y es un vector complejo » plot(y) grafica la parte imaginaria vs la parte real . etiquetas.'c+'.imag(s). D.ro.t3.x2.x1. x1. x3 vectores fila » plot(t.y1. » plot(x. ylabel(‘My y-axis label’). los colores y los símbolos utilizados en las gráficas Una vez realizada la gráfica se pueden agregar títulos.polar utiliza coordenadas polares s=3. (Nyquist plot) Se pueden obtener múltiples curvas en la pantalla. El estilo de líneas. D.y) grafica y vs x.[x1.’r*’) % grafico circular plot(real(s).'r--') » title(‘My title’) » xlabel(‘My x-axis label’).-Ing.x2. grilla. x1. x2.x1. La pantalla se puede si se desean gráficas múltiples curvas respecto a un mismo eje dividir en ventanas ordenadas como un arreglo: » plot(t.-Ing. Ambos vectores deben tener la misma longitud. x3 vectores columna » subplot(rcp) todas las curvas deben tener el mismo número de puntos la pantalla es dividida en r por c ventanas y p es la ventana para la presente ventana.x2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.y. % número complejo tita=angle(s) % fase en radianes ro=abs(s) % módulo polar(tita. » legend('x1'.

gtext es para agregar textos posicionandos con el mouse. congela la escala de ejes para nuevas gráficas text escribe el texto especificado en la posición indicada por las » axis coordenadas x e y .m clc limpia la ventana de comandos de Matlab. 'v(t)'). % RL circuit % current i(t) and voltage v(t) are generated gcf número de orden de la figura activa % t is time close .[18]. grid y se vuelve a realizar la gráfica. » axis asume nuevamente que es escala automática.0. Para indicar el font y color de los caracteres del texto y del título » axis (‘square’) % ejemplo circunf.t. plot(t.'mensaje'.'r') crea una caja cuadrada de manera que un círculo se ve circular y no oval. close(n) cierra la ventana de figura activa o la indicada con n t = 0:1E-3:20E-3. 1.[18]. » axis('image') % ventana de acuerdo a proporciones de la imagen figure abre una nueva ventana de gráficos.y. clf limpia la ventana de gráficos. Ejemplo: Ex2_1.m » text(3.-Ing. home coloca el punto en el borde superior de la ventana de comandos.003. » axis » text(x.3 en adelante se pueden realizar con superior izquierda y el eje j en dirección vertical botones dedicados o con las opciones Axes y Figure Properties del menú descendente Edit » axis('equal') % el escalado es igual en ambos ejes shg y figure(gcf) muestran la ventana de gráficos.[18]) » axis('ij') % utiliza ejes de pantalla con el origen en la esquina Estos comandos en las versiones 5.'g') Para retornar al modo normal se utiliza Para cambiar el font de nº en los ejes » axis(‘normal’) » set(gca. y_max)] % o con Axes Properties ylabel('voltage [V] and current[mA]') text(0.’text for annotation’).'color'. y_min.'b-') MATLAB elige automáticamente la escala de sus ejes.'r--'. D.» gtext(‘text for annotation’). v = 10*cos(377*t).'corriente') posible establecer una escala propia con el comando: title('voltage and current of an RL circuit') xlabel('time [sec]') » axis([x_min. x_max. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 54 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 55 Dictado por Dr.'Fontsize'. % angle in radians una nueva gráfica (hold on y hold off). Sin embargo es legend('tensión'. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . El comando hold mantiene la gráfica actual en ejes y escala para agregar a_rad = (60*pi/180). » title('Título'.'color'. i = 5*cos(377*t + a_rad). D.'Fontsize'.8.5. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.'Fontsize'.i.v.-Ing.

similar a plot pero rellenando en ordenadas 0 a y Desde la versión 6. referencias. etc.y]=ginput(n) % lee las coordenadas de n puntos Desde la versión 5. títulos. • barh. • pie.y. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 56 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 57 Dictado por Dr. para gráficos con forma de torta y aspecto 3D • area. diagrama de barras horizontales con aspecto en ·3D • Agregar flechas y líneas. tamaño.-Ing. 'i(t)') grid Cada función plot crea por defecto una nueva ventana. font.’c’) Comando ginput Se utiliza para realizar entrada de puntos con el mouse. se selecciona el coordenadas se pasan como argumentos.3. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Se puede modificar color. para gráficos con forma de torta • Función zoom para ampliar o reducir. de los ejes y del objeto. El comando plot aplicado a vectores complejos representa las partes reales y desprecia las imaginarias. • bar3h. D. Se pueden seleccionar: gráficas. para gráficos de barras atributos que se pueden modificar. permite introducir las coordenadas del punto sobre el que está el cursor en una figura.2. La función fill para polígonos dibuja polígonos planos (definidos por x e y) rellenándolos de un determinado color (c). Matlab presenta desde el menú File opciones de • stairs. • Función de rotación. etc. La barra Otros tipos de gráficos en 2 D de herramientas de la ventana de figuras tiene botones dedicados para: • line() permite dibujar una o más líneas que unen los puntos cuyas • Habilitar le edición de componentes de la gráfica.009.-Ing. • pie3. para gráficos de barras con aspecto en ·3D • Agregar texto.y]=ginput % lee un número indefinido de puntos (uno por click) hasta que se presiona la tecla Enter [x. D.0. textos. para gráficos en escalera (señales muestreadas) manejo de propiedades del gráfico. » fill(x. diagrama de barras horizontales leyendas. elemento y con el botón derecho del mouse se despliega el menú de • bar.text(0. • bar3. [x. Matlab presenta un avance en la graficación.

y=sin(x+j*pi/8).ymin. [xmin.xmax. para graficar espectros de frecuencia figura que se representa en la ventana activa. % reserva memoria para la animación En su forma más simple. histograma de ángulos previamente • quiver. M(:.j)=getframe. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 58 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 59 Dictado por Dr. plot(x. útil cuando se veces que se desee a una razón configurable de imágenes por segundo. La función graficar vectores getframe guarda en un vector la información necesaria para reproducir la • stem. como por ejemplo: end >> ezplot('sin(t)'.'cos(t)'.15) La función ezpolar es similar a ezplot y se utiliza para dibujar en Ejemplo: ejmovie. partiendo de un origen común función Copying Options White background. D. y(t). Dibujo simplificado de funciones: funciones ezplot() y ezpolar() El comando movie permite la representación de la animación el número de La función ezplot es una función de dibujo simplificada. la figura queda en el portapapeles y puede ser pegada en documentos MS-word por ejemplo. D.m coordenadas polares.y)=0 en -2*pi<x<2*pi y -2*pi<y<2*pi % generación y grabado de la animación >> ezplot(f.'cos(t)'). quiere obtener de forma muy rápida la gráfica de una función.b]).y)=0 en a<x<b y a<y<b for j=1:17 >> ezplot(f. % dibuja f(x.ymax]). [t1.10.-Ing. % dibuja para t1<t<t2 movie(M. % donde f es el nombre de una función. dibuja los elementos complejos como un conjunto de vectores El fondo gris se puede cambiar con la opción Preferences del Menú File. [a. dibuja histogramas Matlab permite generar una animación grabada o almacenada en memoria • rose. >> ezplot(f).1:2*pi].t2]). Para exportar gráficos desde Maltab se utiliza la opción Copy Figure del menú Edit. dibuja los elementos complejos como un conjunto de vectores Preparación de películas partiendo de orígenes uniformemente espaciados sobre el eje (absisas) • hist. se puede llamar en la forma: M=moviein(17). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. % dibuja para 0<t<2*pi % muestra de la animación >> ezplot('sin(t)'. x=[-2*pi:0. • feather. dibujo de campos vectoriales como conjunto de vectores Una película se compone de imágenes denominadas frames.-Ing. La función moviein(n) reserva memoria para almacenar n frames. >> ezplot(f). % dibuja f(x.• compass. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .y) La función ezplot puede dibujar también funciones paramétricas x(t).

1. por ejemplo z = sin (sqrt(x²+y²)) shading flat sombreado con color constante en cada faceta shading interp sombreado de los puntos de la faceta inperpolando » x=[-3:.z) aparece ahora una superficie faceteada. rodeando cuadriláteros del color de fondo.fi.y2. D. » surf(z) » surf(x2. colores de los vértices » x2=ones(size(y))*x.y2]=meshgrid(x. Con el comando shading se controla el sombreado Para graficar z = f(x. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. El color depende del valor de z de la función. y=x'. » fi=[0:pi/20:6*pi].-Ing.2. Ejemplo: ejespiral.-Ing.fy]=gradient(z).1:3]. El comando meshgrid es utilizado para crear superficies (dominio-plano xy) para funciones de dos variables. También con botón dedicado. » [x2. con eliminación de líneas ocultas. » figure » quiver(fx.^2 +y2.y).y).y2.plot3(cos(fi). Gráficos tridimensionales esto es lo que el comando meshgrid hace. mesh permite especificar la rotación horizontal (30 grados en sentido antihorario) y el ángulo de elevación en grados (70 grados visto desde arriba). -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 60 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 61 Dictado por Dr.z) » [fx. x2 e y2 son dos matrices de igual orden.^2).y2=y*ones(size(x)).m El comando mesh realiza la graficación de superficies en 3D como una retícula de líneas de colores.sin(fi). » mesh(z.'g') %dibuja una espiral » z=sin(r).m » mesh(x2.fy) Ejemplo: ejmesh.mesh(z). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . » r=sqrt(x2.7.[-30 70]). D. La función plot3 dibuja puntos cuyas coordenadas están contenidas en 3 vectores.

ylabel.-Ing.m deben escribirse de tal forma que admitan vectores de valores como argumentos (vectorizados).[t1. Los ficheros *. trisurf similar a surf. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Otros son: cool. con valores entre 0 y 1. dibuja una superficie 3-D a partir de los valores de una función en una malla de triángulos. En los gráficos en 3D también se utilizan los comandos: axis.'cos(t)'.y. grid. >> ezplot3(x. hot.[t1. que representan la rotación en sentido antihorario.shading faceted sombreado constante con línea negras superpuestas (por Las funciones mesh y surf dibujan funciones tridimensionales en defecto) perspectiva.[0. quiver3 dibuja vectores en el espacio >> ezplot3(x. una función en una malla de triángulos. intensidad de los colores fundamentales. D. etc. dibuja una superficie 3-D a partir de los valores de >> ezplot3(x.'t'. zlabel. y(t) y z(t).y. meshc. diffuse o specular -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 62 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 63 Dictado por Dr. El colormap por defecto es jet.m >> ezplot3('sin(t)'. y. La localización del punto de vista o dirección se puede definir con la función view Para el dibujo de curvas de nivel Matlab dispone de los comandos contour (en el plano).t2].z).y. colorbar añade el mapa de colores activo a la figura sphere dibuja una esfera 3-D.z.t2]).z. Ej_ezplot3.-Ing. gray. contour3 (en el espacio) y contourf (en el plano con relleno). Por defecto se utiliza el intervalo 0 < t < 2*pi. y z pueden ser funciones anónimas o cylinder dibuja una superficie cilíndrica expresiones definidas como cadena de caracteres.'animate'). surfnorm. % dibuja la curva progresivamente trimesh similar a mesh. En las sentencias anteriores x. surfc combinación de surf y contour en z=0 Existen también algunas funciones simplificadas para el dibujo 3-D meshz mesh con plano de referencia en el valor mínimo similares a la función ezplot surfl para controlar la iluminación determinando intensidad y posición del foco de luz La función ezplot3 dibuja lineas paramétricas tridimensionales en la forma light crea un foco de luz x(t). title.'animate'). D.elev) Para los gráficos es posible seleccionar el mapa de colores definido como elev ángulo de elevación respecto al plano x-y y azimut ángulo de una matriz de tres columnas.6*pi]. xlabel. » colormap(hot) % define el colormap seleccionado con mesh y surf los polígonos o facetas por defecto no dejan ver las líneas que están atrás con el comando hidden se activa y desactiva la eliminación Otras funciones gráficas en 3D: de líneas ocultas. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. » view(azimut. pink.

Esta función utiliza la pause(3) figure funcción surf para realizar un dibujo 3-D de una función f(x.-Ing.15) % muestra curvas de nivel en el plano shg Otras funciones simplificadas para dibujo 3-D son ezcontour. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.8. % genera función z mesh(z) % grafica z en 3D con grilla shg % muestra la gráfica pause(5) % realiza una pausa de 5 s surf(z) % muestra superficie facetada shg pause(5) surfl(z) % muestra figura iluminada (zonas de luz y sombra) shg pause(5) shading flat % sombreado plano por faceta shg pause(5) shading interp % sombreado interpolado shg pause(5) colormap(pink) % cambia color de la figura shg pause(5) 1. ezcontourf. espacio -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 64 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 65 Dictado por Dr.Otra función de dibujo 3-D rápido es ezsurf. pause ezmesh. clabel(h) Ejemplo: graf3d. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . clf colormap(jet) contour(z. ezsurfc y ezmeshc.25) % muestra curvas de nivel en el relacionales. 3D y de pause funciones con nros complejos. D. D.y).10). Programación en MATLAB colormap(hot) % cambia color de la figura shg pause(5) MATLAB soporta algunas estructuras básicas de programación para figure permitir comandos condicionales y lazos junto con operadores lógicos y contour3(z.m shg pause % graficacion en tres dimensiones clf figure % abre ventana de figura clf % limpia la figura de la ventana echo on % muestra en pantalla de MATLAB los comandos z=peaks(25).10) % coloca referencias a curvas de nivel En tour (MatlabR11) vemos las demos de visualización en 2D. contour(z.-Ing. h=contour(z.

B): se evalúan siempre ambos operandos. lógicos. 2 y 6 manteniendo Alt pulsada.-Ing. es decir.14 1+i]. y=[0 0. b=[1-i 3. D.1 0] Se pueden comparar un escalar con una matriz. » c=x|y retorna 1 si alguno es distinto de cero c=[0 1. (Nota: ~ es alt 126). Operadores relacionales y lógicos pues el resultado final no puede ser más que true.j 0] Si el resultado de la comparación es verdadero la respuesta es 1 sino 0. El resultado de operadores relacionales es escalar. los otros operadores comparan solo la parte real. pues el resultado final ya no puede ser más que false. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . ambos sean 1 ó ambos sean 0. y el resultado es true sólo si ambos son true Los comandos any y all también producen matrices binarias (0.8.pi 0].La sintaxis y uso de algunas de esas estructuras son similares a las que && and breve: si el primer operando es false ya no se evalúa el segundo. potentes o nuevas funciones que pueden ser incorporadas a MATLAB. podemos encontrar en lenguajes de alto nivel. » a= [1+j pi 2 3. D.B) realiza un "or exclusivo". y el Estos comandos combinados con los ya visto permiten crear programas resultado es false sólo si ambos son false. || or breve: si el primer operando es true ya no se evalúa el segundo.-Ing.14 2 3. en este caso cada elemento de la matriz es comparado con el escalar y el resultado es una matriz con el orden de precedencia de operadores es: aritméticos. 1.1 0] En datos complejos “==” o “∼=” compara parte real e imaginaria. relacionales y unos y ceros.14 1-i].1) -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 66 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 67 Dictado por Dr. elemento a elemento).1. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. » c=x&y retorna 1 si ambos son distintos de cero c=[0 0. » Z= X & Y + X > Y % Z=X & [(Y+X) > Y] » c=a > b Z=[0 1 c=[0 1 0 0 0] 1 0] » c=a >= b » Z= X > Y + X & Y % Z=[X > (Y+X)] & Y c=[1 1 1 1 1] Z=[0 0 Los operadores lógicos disponibles son: 0 0] & operación lógica AND &(A. | operación lógica OR Se evalúan siempre ambos operandos. El carácter (~) se obtiene en los PCs pulsando sucesivamente las teclas 1. ∼ operación lógica NOT Los operadores relacionales permiten la comparación de escalares (o xor(A. devuelve 0 en el caso en que matrices. < menor que <= menor o igual ==igual ∼= no igual > mayor que >= mayor o igual » x=[0 2.

retorna la posición de los elementos no nulos en un vector o matriz. isinf.. Se dispone de tres comandos para escribir lazos.=p(ind(1):length(p))..8. switch y if-else.. isempty retornan 1 cuando encuentran estas matrices e isinf retorna 1 cuando encuentra infinitos. resultando en un vector o una matriz. encuentra la ubicación en la que se encuentra el máximo de x.-Ing. etc. » p=[0 0 1 3 2]. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. lazos condicionales y sentencias condicionales: for. » any(any(A ∼=B)) % retorna 1 si A y B son distintas MATLAB tiene comandos para detección de NaN. D.1.= [1 3 2] sentencias utilizando operaciones con vectores o matrices como ser: sort. » all(all(A==B)) % retorna 1 si A y B son iguales isnan. » ind = find(p∼=0). all. find. matrices vacías. end La expresión es un vector o una matriz. any. 1. Comando for » find(A>4) retorna la posición de los elementos de A mayores que 4 Este comando es utilizado para ejecutar una serie de sentencias en forma iterativa. » all(all(A==A’)) % retorna 1 si A es simétrica 1. o un comando de MATLAB » ind=find(p∼=0). infinitos o string. » all(x) % retorna 1 si todos los elementos del vector x son no nulos. » b=(p~=0) % b=[0 0 1 1 1] Las sentencias son ejecutadas una vez para cada elemento del vector fila o por columnas de la matriz.. Lazos y estructuras condicionales la función isequal(A.-Ing.2. Su sintaxis debe ser Si queremos remover los ceros de un vector (coeficientes nulos de las mayores potencias de un polinomio): » for variable=expresión.= p(ind(1):length(p)) Los lazos tienden a ser lentos por lo que se aconseja tratar de vectorizar p. sentencia.2. Los comandos clock y etime son utilizados para hacer operaciones con el tiempo.8. Estos comandos se suelen utilizar en funciones interactivas. Los comandos son: isnan. p. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Todos los comandos » find(x) deben terminar con un end. isempty.» any(x) % retorna 1 si algún elemento del vector x es no nulo. D. % ind=[3 4 5] » p. sentencia. . while. » nonzer=length(find(x)) encuentra el número de elementos no ceros de un vector o matriz.B) retorna 1 si las matrices son idénticas y cero si no lo son. » peaktime=find(x==max(x)) -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 68 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 69 Dictado por Dr.

01.m e2=etime(clock. eig(a).j+3). for i=1:2:7. e4 = 0. end. » if expression1. cuyas instrucciones son » t1=clock. Los tiempos de cálculo son respectivamente: versión 5. statement. . .m expresiones que conducen a un escalar. e2= 6. se utilizan las capacidades de construcción. e3=etime(clock.8.1960. e4 = 0. statement .end. elseif En el caso de intercambio de elementos entre dos matrices. e2 =4.2 e1= 6.:) =B. .[1:7])=Bm([2:2:8]. ind=[1:10000]. e3 = 0.. Ejemplo: ejinterc. else. a=log(ind). Comandos if. A2(i.0400. statement. statement. a(i)=log(i). La expresión es de la forma X operador Y. for i=ind..2. e4 = 0. e3 = 0. for i=1:10000. ind=[1 :10000]. a=log(ind). . Bm(i. for j=1:7.990. ind=[1:10000]. end. end. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . end. D... .2810.3300. a=randn(2).. ind=[1:10000]. end » A2=Am. . e5 = 0 Ejemplo: encontrar una matriz aleatoria y estable (con autovalores con versión 5. for i=1:7.3 e1= 6. for i=ind. A2([1:2:7]. 1.2. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 70 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 71 Dictado por Dr. el siguiente comando utiliza direccionamiento de matrices y produce el Observar el siguiente ejemplo: mismo resultado » A2=Am. statement. a(i)=log(i).0 e1 =4. statement. elseif expression2. . e4=etime(clock. else statement.430.2600.... donde X e Y son escalares o Ejemplo: ejfortime. 1.t1).-Ing. Am(i.end... ejecutadas dentro del lazo mientras la condición sea verdadera.. e3 = 0. a=zeros(1. » while expresión. D. El operador es usualmente un operador relacional.. end. » t1=clock. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr..j)= Bm(i+1.. e2= 5. » B=[0:2:18]. end.8. » t1=clock.2. por ejemplo Estos comandos son sólo utilizados para la ejecución condicionada de un dadas las matrices A y B: conjunto de sentencias » A=[1:2:13].. e5=etime(clock.10000)..0500 versión 6.10000).t1). end..t1) . Bm=ones(10). e5=0.t1). . » t1=clock.-Ing. Comando while » t1=clock. e5 = parte real negativa): 0.3300.. . . .t1).3.085.. % o randn(2) La reducción de tiempo es significativa cuando se eliminan los lazos for y » while max(real(eig(a))) >= 0. a=zeros(1. for i=1:10. a(i)=log(i). Este comando permite lazos condicionales.[4:10]). . e1=etime(clock. Am=ones(7).:) =A. . de vectorización y de cálculo con matrices.01 » a=rand(2).

5. break pueden producir en tiempo de ejecución elseif lp>lq q=[zeros(1...Si la expresión 1 es verdadera. Ejemplo: Ej_trycatch.lq-lp) p] sentencias1 end catch sentencias2 El comando break termina la ejecución del resto de las sentencias if si la end condición es satisfecha. el control de la ejecución se transfiere a sentencias2. polinomios de distinto orden.. Se evalúa la expresión cuyo resultado debe ser un escalar o una cadena de » for i=1:length(p). Sentencias try. bloque1 La expresión es usualmente un operador relacional. transcurre sin errores sentencias2 no se ejecutará.end permite gestionar los errores que se » if lp==lq. . -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 72 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 73 Dictado por Dr. end..catch.-Ing. if p(1)==0. Este resultado se compara con las expri y se ejecuta el bloque de sentencias que corresponda con ese resultado. Ejemplo: ejif.m » p=[1 2 3 ].. sino las sentencias después de else son ejecutadas.2. el primer conjunto de sentencias es switch expresion ejecutado.elseif concatenados.lp-lq) q] try else p=[zeros(1. Ejemplo: ejswitch.. Comando switch Si durante la ejecución del bloque sentencias1 se produce un error..m 1.. % opción por defecto Ejemplo: remover coeficientes nulos de un polinomio bloque3 end » p=[0 0 0 1 3 0 2 0 0 9]. lq=lengnth(q).-Ing. si hay diferencia el vector con la Si ninguno es igual a expresion se ejecutan las sentencias correspondientes menor dimensión será ampliado con ceros. si la expresión 2 es verdadera el segundo conjunto de sentencias case expr1.. es ejecutado.8. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .catch. D. otherwise.. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.8. La construcción try.2. q=[1 2 3 4 5 6]. 1.. case expr2 bloque2 Los comandos elseif y else son opcionales.4.end » lp=length(p). Si la ejecución Realiza una función análoga a un conjunto if. p=p(2:length(p)).m Comparar la dimensión de dos vectores. se utiliza para sumar a otherwise.. caracteres. end.

sus sentencias. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Condiciones: Muchos de los comandos de MATLAB y todos los de las toolboxes tienen la forma de funciones. Sentencias break. Script files • Las funciones permiten el paso de valores utilizando parámetros (entradas) y [ salidas].8.3. mensaje correspondiente al último error que se ha producido.-Ing. iteración del bucle for o while. Function files MATLAB puede ejecutar programas almacenados en un archivo. script-file y ser ejecutadas. Desde la pantalla de comandos de MATLAB se invoca 1. D. hace que se devuelva inmediatamente el control al programa que Todas las variables referenciadas en el script deben estar disponibles en el realizó la llamada. Largas secuencias de comandos MATLAB pueden ser incluidas en un • Una función puede tener múltiples argumentos de entrada y salida. Los functions files son M-files que extienden la capacidad de MATLAB.2.8. La sentencia continue hace que se pase inmediatamente a la siguiente o con Ctrl A F9 (selecciona y ejecuta).Con la función lasterr Matlab devuelve una cadena de caracteres con el Para ejecutar un script file simplemente se tipea su nombre en el prompt. incluida dentro del código de una función. D. espacio de trabajo o ser definidas dentro del cuerpo del script. saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteración actual. 1.8. Las funciones devuelven el control después de que se ejecute la última de modificando variables del espacio de trabajo. La sentencia return.m" (M-files) % línea de comentario comandos MATLAB Los M-files son creados usualmente utilizando un editor de textos que produce archivos en formato ASCII. Archivos M (M-files) 1.8. También pueden ser matriciales. Sus principales características son: • Las funciones pueden ser utilizadas como cualquier otro comando Hay dos tipos de M-files: MATLAB. continue.3. 1. return » namescriptfile La sentencia break hace que se termine la ejecución del bucle for y/o while más interno de los que comprenden a dicha sentencia.-Ing.3.6. Desde la pantalla del editor se ejecuta con la opción run del menú Tool (MatlabR11) o del menú Debug (MatlabR12) de la barra de herramientas. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.2. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 74 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 75 Dictado por Dr. function [lista de valores de retorno]=filename(lista de argumentos) • El archivo debe tener la extensión ".1. • El programa (como un archivo ASCII) debe residir en un directorio que este en el path de MATLAB. Script opera globalmente con los datos del espacio de trabajo (workspace).

Una vez definidos los polinomios p1 y p2 desde la pantalla de comandos de MATLAB se invoca Ejemplo: cltf. Desde la pantalla de comandos de Matlab se ejecuta En versiones 5.1 Subfunciones con realimentación unitaria.-Ing.n1-n2).ngk).m. D.nk. como argumento es necesario declarar dicha variable como variable nt=ngk.n2=length(p2).dgk. nt.dg. dt • La primera línea del file función debe contener la palabra "function". nc=[zeros(1.dimdgk-dimngk). Existen dos variables definidas if n1==n2 p3=p1+p2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .2.m por cada función debiendo coincidir el nombre de la función con el del archivo. esta función tiene como salida las funciones de transferencia de lazo abierto GK(s) y de la lazo cerrado T(s) En versiones anteriores a 5. dg. dgk=conv(dg.3.• Las funciones utilizan variables locales y no operan globalmente en el espacio de trabajo. D. obteniendo los resultados en ngk. global.dk) adicionales definidas en un mismo fichero . es mostrada cuando es requerido el help.m • La segunda línea que es de comentario (opcional) es utilizada con propósitos de documentación.end función ha sido llamada. dgk. Las ngk = conv(ng.dk) son locales y son destruidas una vez que la ejecución ha terminado.0 era necesario crear un archivo . con nombres diferentes del nombre del fichero y que sólo pueden ser llamadas por las funciones deben haberse definido previamente los polinomios ng.p2) Función "cltf" : dadas las funciones de transferencia G(s) y K(s) en serie y 1.dg.m » p3=poly_add(p1. Contenido del archivo mi-fun.dt]=cltf(ng.-Ing.dk). end automáticamente: nargin y narout que representan el nro de if n1>n2 p3=p1+[zeros(1. % p1. sino los que el usuario desea obtener.nt.nt. con los que la if n1<n2 p3=p2+[zeros(1. Ejemplo: poly_add.x se han introducido las subfunciones.dt]=cltf(ng.nk. nk y dk que contenidas en el fichero.p1].end argumentos y el nro de valores de retorno actuales. tanto en el programa principal como en las distintas funciones que deben acceder a su valor.p2: arreglos de coeficientes de los dos polinomios % p3: arreglo de coeficientes del polinomio suma • No es necesario calcular siempre todos los posibles valores de retorno n1=length(p1).m -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 76 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 77 Dictado por Dr.n2-n1).8.m Ejemplo: cltf. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.dgk. function p3=poly_add(p1.p2) Además la función lookfor busca una determinada palabra en cada % Suma de dos polinomios primera línea de comentario de todas las funciones . que son funciones »[ngk.p2].m. son datos de entrada. Las variables definidas en el cuerpo de la función function [ngk. dimdgk=length(dgk). variables que pasan al espacio de trabajo son sólo aquellas asignadas dimngk=length(ngk). • Para que la función tenga acceso a una variable que no ha sido pasada dt=nc+dgk.nk). como salidas de la función.

3 Variables persistentes y globales Las variables persistentes son variables locales de funciones que conservan » area=quad('prueba'. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .b) y=subfun1(a.5) % con -.p.2. el resultado del » x=-1:.2.01))+((x-. D.1:2.m es un archivo func. x=y+z+2. » plot(x.3.2.-Ing.z) otras funciones.m. Son funciones *.8. la función quad calcula la integral definida de una función entre dos valores 1.x2]) % con x1 y x2 límites del intervalo de % búsqueda -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 78 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 79 Dictado por Dr.-Ing. function y=prueba(x) 1. Ejemplo: cltf.^2+. Se declaran en la función con el comando: quad8 utiliza un método de orden superior (Newton-Cotes) y dblquad realiza integrales dobles.z) En Matlab existen funciones a las que hay que pasar como argumentos function x=subfun2(y.8.8.m » pcode func Cálculo de áreas Estas funciones se ejecutan más rápidamente y permiten ocultar el código de los archivos ASCII de las funciones *.m function x=subfun1(y. global VARIABLE1 function y=mi_fun(a.m precompiladas con la función pcode.1) su valor entre distintas llamadas a la función.5 punto de partida en la búsqueda trabajo./((x-.b). D.-.0.^2+.04)-6.p y=1. persistent VELOCIDAD TIEMPO Ecuaciones no lineales Las variables globales son visibles en todas las funciones y en el espacio fzero calcula un cero o raíz de una función de una variable de trabajo y se declaran como tales con: fmin calcula el mínimo de una función de una variable » global VARIABLE1 VARIABLE2 fmins calcula el mínimo de una función de varias variables deben declararse como tales en la función que la utiliza y en el espacio de » fzero('prueba'.3.2 Funciones *.3.z) 1. comando pcode func.9). function[salida]=func(entradas) » fzero('prueba'.4 Función de funciones x=subfun2(y.prueba(x)) % prueba.[x1.3).

y) % función en espacio de estado del tiro parabólico » x=0:0.-Ing.tol]) % calcula la raíz más próxima a x con una argumento un nombre de una función o de M-file con un cálculo escalar o tolerancia vectorial: Ecuaciones diferenciales fplot('function'. Cadena de caracteres (Strings de texto) » t0=0. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 80 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 81 Dictado por Dr. 'cadena' 'ni "idea"' » [t.8.[-20.-Ing.'g') m=1.xmax.8. D.001.m y(:. % constante » fplot('mifunc'. D.1:2*pi.4.0]'./x.[t0.2)=x.tf].ymin. Este editor deriv(2)=fac*y(2)-g. % condiciones iniciales Los strings son ingresados utilizando " ' " por ej.1)=200*sin(x). documento nuevo o abrir documento para acceder al editor. deriv=zeros(4.^2.20].y]=ode23('tiropar'.limites. permite pasar de la ventana del editor a la de comandos MATLAB en la deriv(3)=y(1).0. y(:.'cadena'.tol) Matlab dispone de varias funciones para integrar ecuaciones diferenciales 'function': nombre de la función ordinarias de primer orden (espacio de estado): limites: vector de 2 o 4 elementos [xmin.x.8.3.m parabólico y representada por 4 ecuaciones de estado: function y=mifunc(x) Ejemplo: ejtiropar.xmax] o ode23 Runge-Kuta de 2º/3º orden [xmin. % tiempo inicial y final » y0=[100*cos(pi/6). 1.y0) » plot(t. tipo de línea ode45 Runge-Kuta de 4º/5º orden tol: tolerancia de error relativo En la función tiropar.m se han escrito las EDOs correspondiente al tiro Ejemplo: mifunc. % masa g=9. function deriv=tiropar(t. Por menú seleccionando New bajo File Menu o utilizando el icono de deriv(1)=fac*y(1). % gravedad 1. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.ymax] 'cadena': para control de color. deriv(4)=y(2).tf=9. La función plot dibuja vectores mientras que la función fplot admite como » fzero('prueba'. % no hace falta para fplot si para plot c=0.3.y(:4)) % gráfica de la altura en función del tiempo Un string de texto puede ser mostrado utilizando el comando disp o Función fplot tipeando su nombre. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .1). Creando M-files fac=-(c/m)*sqrt((y(1)^2+y(2)^2).100*sin(pi/6). etapa de pruebas del programa.

D. Las macros son creadas como un string de texto y son ejecutadas utilizando el comando eval. isspace. » pause(-2) cancela todas las pausas subsiguientes Macros » echo muestra por pantalla el contenido del programa mientras el M-files está Las macros son una pequeña secuencia de comandos MATLAB que se siendo ejecutado.'string de texto´] de Matlab el texto contenido entre las comillas como argumento de la función.-Ing.c2) crea una matriz de caracteres. Ejemplo para el cálculo de factoriales: Es necesario igualar la longitud de distintas cadenas de caracteres para posibilitar la comparación » fct='prod(1:n)'.:) » eval('trystring'.» disp('string de texto') futuras sesiones como parte de otras M-files. Utilidades para programar double(c) convierte en números ASCII cada carácter char(v) convierte el vector de nros v en una cadena de caracteres MATLAB tiene numerosos comandos que permiten hacer interactivos los char(c1. strcmp.5.-Ing.'catchstring') rodilla % s(2.:) Para realizar macros también se utilizan los comandos feval y evalin. findstr y sprintf. cadenas más cortas deblank(c) elimina blancos al final de una cadena de caracteres » pause ischar(c) detecta si una variable es un string detiene un M-file hasta que es apretada una tecla. utilizan frecuentemente en una sesión. Los string de texto pueden utilizarse para títulos o etiquetas en gráficos. eval(fct) » t2='rodilla'. D. strmpi. como: 1. ej_titulo. Puede ser grabada para su uso en » echo on -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 82 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 83 Dictado por Dr. » n=10. útil después de int2str(c) convierte un entero en una cadena de caracteres comandos de graficación. Hay comandos para el manejo de los strings de texto.t2) se puede usar para gestionar errores s= mano % s(1. » t1='mano'. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. La función eval('cadena de caracteres') hace que se evalúe como expresión » a=['este es un '. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .m » pause(n) se detiene n segundos otros: isletter.8. » s=char(t1. Pueden ser asignados a vectores o matrices. completando con blancos las programas y ayudar en la depuración de errores.

-Ing. Tipeando return y apretando la tecla de RETURN o ENTER continua la ejecución del programa. D.'fitdemo ']. K» » exist('item') Se pueden ver y cambiar todas las variables que se desee. Se utiliza para depurar errores.m generación de una secuencia de matrices llamadas Para activarlo en una función en particular mágicas desde M1 a M3: » echo on all for n = 1:3 Para activarlo en todas las funciones eval(['M'. Se utiliza para crear programas interactivos. Ejemplo: ej_error.m x=input('Entre la edad del estudiante'). » keyboard » n = input('Select a demo number: '). ' = magic(n)']) end » echo off para desactivarlo Para correr un script seleccionado » D = ['odedemo '. Ejemplos if x<0 error('edad incorrecta. » r=input('Teclee: ') end Teclee: 2 s=x+10 r= 2 Se diferencia del comando disp en que termina la ejecución. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 84 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 85 Dictado por Dr. muestra un mensaje escrito por el usuario.:)) Este comando detiene el programa y asigna el control al teclado.-Ing. num2str(n). trate nuevamente'). D. El M-file finaliza pudiendo indicar un nuevo comando.Afecta todos los archivos script. Este comando verifica la existencia de una variable en el espacio de trabajo o de un archivo en el path de MATLAB. Comando eval » echo nombre on Ejemplo: ejeval. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. un 2 si el archivo existe y 0 en caso Es de utilidad durante la depuración de programas. » eval(D(n.'quaddemo'. evalúa la expresión ingresada y asigna Este comando hace que un error retorne desde un M-file al teclado y su valor a la variable x. contrario. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Retorna 1 si la variable existe. » x=input('prompt') Comando error Este comando muestra un string de texto como un prompt y espera hasta que el usuario ingresa su respuesta.

botones para aceptar o cancelar. ButtonName=questdlg('What is your wish?'. D. Si la caja de dialogo se cierra sin una selección válida la variable resultado (ButtonName) resulta vacia. Sistema SIMULINK -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 86 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 87 Dictado por Dr. answer=inputdlg(prompt. Ej_cajaInput.').') disp('Ingreso antes de 2005') case 'Money'. disp('Food is delivered'). comando questdlg Crea una caja de consulta con botones para selección de opción. registro=str2num(cell2mat(answer(2))). switch ButtonName.'Advertencia') Caja de consulta. defaultanswer={'Sin dato'. .'Money'). con cajas para los datos y caracteres. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .'Clothing'.m prompt={'Ingrese su nombre y apellido:'. Los botones por defecto son 'Yes'. 'Food'.'Ingrese su Nº de registro:'}..name.'Genie Question'. D. nombre=cell2mat(answer(1)).'Money'.Btn1.defaultanswer).numlines.. else disp('Ingreso despues de 2005') disp('A ton of money falls out the sky.m Ejemplo: ej_consulta.Title.-Ing.Ventana con mensaje de error ErrorString='la edad no puede ser negativa' ERRORDLG(ErrorString. El resultado de la consulta es guardado en arreglos de celdas como cadena de caracteres. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. if registro~=0 case 'Clothing'.'No' y 'Cancel'.'0'}. case 'Food'. name='Entrada datos del estudiante'. Cajas de entrada de datos El resultado de la consulta es guardado en arreglos de celdas o cadena de Crea una ventan para el ingreso de datos. Se pueden definir los datos de entrada por defecto. if registro<10000 disp('The Emperor''s new clothes have arrived. end end % switch end 2.Btn2). numlines=1.-Ing. >> ButtonName=questdlg(Question.

Agrega a MATLAB para agregar títulos y notas al diagrama de bloques. sumideros. open (para abrir un modelo existente). D.-Ing.3. Barra de menú La barra menú incluye los menúes File. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Los menúes Simulation y Tools están específicamente relacionados con SIMULINK. la librería de simulink. Edit y Format usuales en ambiente Windows. 2. propiedades del modelo. señales y sistemas. También incluye funciones de manejo de librerías -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 88 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 89 Dictado por Dr. muchas funciones. lineales. Terminar una sesión de SIMULINK 2.). bloques están disponibles en estas librerías. subsistemas del modelo. paste. D. printer setup. Simulink utiliza ventanas separadas para el modelo.SIMULINK es una extensión de MATLAB que es utilizada para simular La mayoría de los bloques que se precisan para construir un diagrama de sistemas dinámicos. de ingreso de parámetros y graficación (scope). Cada icono corresponde a una librería de bloques. bloques especiales. Acceso a SIMULINK • Cerrando todas las ventanas de SIMULINK Tipeando simulink en el prompt en la ventana de comandos o a través del • Cerrando MATLAB icono de acceso directo. no lineales. print. discretos. undo. etc. 2. los distintos bloques están divididos en También se puede abrir un modelo existente invocándolo desde la línea de categorías (continuos. etc. save as (graba con nuevo nombre).-Ing. pero con algunas funciones propias de Simulink. Ventanas de SIMULINK Además de la ventana de comandos de MATLAB. clear. con doble click. copy model. funciones matemáticas. SIMULINK tiene una interfaz de usuario gráfica que realiza la modelación El bloque de texto no tiene icono y es utilizado en las ventanas de modelo de los sistemas utilizando diagramas de bloques. En el menú Edit: copy. save (grabar con extensión .1. fuentes. exit MATLAB. El menú File tiene funciones: new (para construir un nuevo modelo). cut. comandos por su nombre. update diagram. select all. tablas y funciones. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.4.2. 2. Una vez invocado el programa se despliega una nueva ventana con las librerías de bloques disponibles. etc conexiones.mdl).

rotar bloques y Solver etiquetas. D. o tolerancia para cada paso de integración. el font de los caracteres. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 90 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 91 Dictado por Dr. los pasos máximos y mínimos de integración. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .para por ejemplo poder incluir nuevos bloques. y barra de herramientas ofrece botones dedicados para conducir la establecer una jerarquía en los diagramas de bloque. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. continue y stop. La bloques mostrados en pantalla. pause.-Ing. características del sistema a simular. La simulación es realizada desde el menú de simulación. reduciendo el número de la simulación se incluyen las funciones: start. agregar sombra a los bloques. Desde este menú se seleccionan los parámetros de la simulación (configuración parameters): En el menú Format hay funciones para cambiar el color de la pantalla. etc. el error relativo herramientas para la simulación. También incluye funciones para mostrar que líneas de los diagramas de bloques representan vectores (wide vectors lines y line • Se pueden elegir métodos de integración diferentes. dependiendo de las width). permite agrupar funciones afines. Las funciones de creación Menú de simulación de subsistemas y mask están incluidas en este menú.-Ing. simulación. El menú Tool incluye funciones para la depuración del modelo y otras • Se puede fijar el tiempo de inicio y fin de la simulación. Para el control de Los subsistemas agrupan conjuntos de bloques.

• Utiliza bloques MATLAB Fcn que son llamados en cada paso de • Detección de cruce por cero. variables de estado y salidas. • El modelo utiliza tiempos de muestreo que no son múltiplos entre sí. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 92 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 93 Dictado por Dr.-Ing. línea no conectada. Para mejorar la precisión en la simulación • Se indica la carga de entradas desde un workspace y la grabación en • Disminuir la tolerancia workspace de la variable tiempo. método de integración ode23s). violación de paso mínimo.5. la solución es utilizar bloques Fcn o bloques de funciones • Se puede seleccionar la acción ante estos diagnósticos: nada.Diagnósticos 2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. • Disminuir el paso inicial • También se indica la carga de condiciones iniciales y la grabación de • Si el comportamiento es inestable (el sistema es inestable o utilizar otro los valores finales de las variables de estado. Workspace • El paso máximo de integración es muy pequeño. Mejoras en la simulación • Da una lista de posibles diagnósticos: lazo algebraico. • El modelo tiene lazos algebraicos que son resueltos en cada paso. (advertencia) o error. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . D. • El tiempo de simulación es muy grande. tiempo. D. entrada o salida Una simulación lenta puede tener numerosas causas: de bloques no conectadas.-Ing. warning elementales. Ejemplo de lazo algebraico: U=Z-U Z + U - es preferible utilizar U=(1/2) * Z si no se puede evitar el lazo algebraico se utiliza el bloque memory de la librería de sistemas discretos para retardar un paso de integración la variable U que se realimenta. la solución es convertir la S-function en un subsistema o en un archivo C-MEX. • La tolerancia es muy exigente. • Utiliza S-function que son llamadas en cada paso de tiempo.

D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .-Ing. En el menú File seleccionar New. • Crear (Shift) y mover (posicionar y arrastrar) vértices en segmentos 2. Se construye el modelo dentro de la ventana de trabajo. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. que abrirá una nueva ventana con el titulo "untittle 1". Construcción de un modelo Se muestra un ejemplo para la construcción de un modelo sencillo.-Ing. Los distintos bloques del modelo se seleccionan y arrastran desde las distintas librerías. Manejo de bloques Las funciones de manipulación de bloques incluye entre otras: • Especificación de parámetros (doble click).6. • Redefinición del tamaño • Rotación (90 grados) (Ctrl R) • Cambio de orientación (180 grados) (Ctrl F) • Eliminar bloques (seleccionar y Supr) • Mover (seleccionar y arrastrar) • Mover grupo de bloques • Duplicar (Ctrl seleccionar y arrastrar) • Desconectar bloques (Shift seleccionar y arrastrar) • Asignación de nombre al bloque Las acciones con teclado y mouse para la manipulación de líneas incluyen: • Dibujar líneas entre bloques • Dibujar líneas desde líneas existentes (Ctrl + mouse) • Dibujar segmentos de línea (en vacío) • Dibujar segmentos de líneas diagonales (Shift y dibujar) • Mover segmentos de línea (seleccionar y mover) -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 94 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 95 Dictado por Dr. También con el Botón “Create a new model” de la ventana Simulink Library Browser. Al comenzar la construcción de un modelo es necesario crear un área de trabajo. D.7. 2.

selectores.-Ing. D. • Librería especializadas por temática: Power system blockset. D. Bloques sumidero: para obtener la salida de la simulación. To Workspace Write data to a matrix in the workspace. etc. • Librería de sistemas Continuos: contiene bloques que describen Stop Simulation Stop the simulation when the input is nonzero. realizar operaciones lógicas. Puede ser utilizado sin conectar a un bloque en particular (floating scope). etc. tiempo discreto Scope Display signals generated during a simulation. • Librería de Señales: contiene bloques que permiten multiplexar y demultiplexar. communications blockset.8. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . etc. funciones de Matlab. • Librería de discontinuidades o funciones no lineales: contiene bloques XY Graph Display an X-Y plot of signals using a MATLAB figure que describen funciones no lineales window. • Librerías extras: contiene bloques especiales. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 96 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 97 Dictado por Dr. funciones de transferencia lineales en tiempo continuo To File Write data to a file. switch. • Librería de puertas y subsistemas: tiene que permiten implementar entradas/salidas externas. función: El bloque File pasa los datos a un archivo y lo graba con un nombre dado. • Librería de Fuentes: contiene bloques para generar señales • Librería de Sumideros: contiene bloques para mostrar o escribir salidas Tabla: Bloques de la Librería de Sumideros Nombre del bloque Propósito • Librería Discreta: contiene bloques que describen componentes de Display Show the value of the input. El bloque Scope actúa como un osciloscopio y brinda una gráfica de la señal durante la simulación. como por ejemplo función de transferencia con definición de condiciones iniciales. pasar datos a otra parte del modelo. clikeando una en una línea cualquiera la señal en esa línea es mostrada en el scope. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. etc. Librerías de bloques de Simulink El bloque workspace pasa el vector de salida al espacio de trabajo en SIMULINK organiza sus bloques en librerías de bloques de acuerdo a su MATLAB como una matriz. S-functions.-Ing. • Librerías de funciones y tablas: contiene funciones. 2.

Transfer Fcn Implement a linear transfer function. D. Zero-Pole Implement a transfer function specified in terms of poles From Workspace Read data from a matrix defined in the workspace. Signal Generator Generate various waveforms. Digital Pulse Generator Generate pulses at regular intervals. State-Space Implement a linear state-space system. Delay -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 98 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 99 Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Nombre del bloque Propósito Constant Generate a constant value. From File Read data from a file. Tabla: Bloques de la librería de Fuentes Bloques de sistemas continuos Nombre del Bloque Propósito Band-Limited White Noise Introduce white noise into a continuous system. Generate simulation time at the specified sampling Integrator Integrate a signal. Tabla: Bloques de la librería de sistemas continuos Chirp Signal Generate a sine wave with increasing frequency. and zeros. Pulse Generator Generate pulses at regular intervals.-Ing. Bloques fuente: Utilizados para definir las entradas al sistema.-Ing. Digital Clock interval. Transport Delay Delay the input by a given amount of time. Ramp Generate a constantly increasing or decreasing signal. Random Number Generate normally distributed random numbers. Clock Display Provide the simulation time. Step Generate a step function. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Memory Output the block input from the previous time step. D. Variable Transport Delay the input by a variable amount of time. Sine Wave Generate a sine wave. Uniform Random Number Generate uniformly distributed random numbers. Derivative Output the time derivative of the input. Repeating Sequence Generate a repeatable arbitrary signal.

Bloques no lineales -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 100 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 101 Dictado por Dr. Multiport Switch Choose between block inputs. Discrete-Time Integrator Perform discrete-time integration of a signal.-Ing. D. Dead Zone Provide a region of zero output. Coulomb & Viscous Model discontinuity at zero with linear gain elsewhere. Zero-Order Hold Implement zero-order hold of one sample period. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Discrete State-Space Implement a discrete state-space system. Discrete Transfer Fcn Implement a discrete transfer function. Tabla: Bloques de la Librería Discontinuidades o Nolineal Bloques de sistemas discretos Nombre del Bloque Propósito Tabla: Bloques de la Librería de Discretos Backlash Model the behavior of a system with play. D. Rate Limiter Limit the rate of change of a signal. Quantizer Discretize input at a specified interval. terms of poles and zeros. Switch Switch between two inputs. Relay Switch output between two constants. Nombre del bloque Propósito Friction Discrete Filter Implement IIR and FIR filters. Unit Delay Delay a signal one sample period. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Discrete Zero-Pole Implement a discrete transfer function specified in Manual Switch Switch between two inputs. Saturation Limit the range of a signal.-Ing. First-Order Hold Implement a first-order sample-and-hold.

MinMax Output the minimum or maximum input value. Dot Product Generate the dot product. Abs Output the absolute value of the input. Funciones y tablas Tema: Bloques de la Librería de Funciones y Tablas Nombre del Bloque Propósito Fcn Apply a specified expression to the input. Sum Generate the sum of inputs. Logical Operator Perform the specified logical operation on the input.-Ing. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 102 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 103 Dictado por Dr. Relational Operator Perform the specified relational operation on the input. Look-Up Table (2-D) Perform piecewise linear mapping of two inputs. Slider Gain Vary a scalar gain using a slider. Combinatorial Logic Implement a truth table. Look-Up Table Perform piecewise linear mapping of the input. MATLAB Fcn Apply a MATLAB function or expression to the input. D. Math Function Perform a mathematical function. Señales y sistemas Tema: Bloques de la Librería de Señales y Sistemas Nombre del Bloque Propósito Hit Crossing Detect crossing point. D. Bloques matemáticos Tema: Bloques de la Librería de Math Nombre del Bloque Propósito Gain Multiply block input.-Ing. Rounding Function Perform a rounding function. Data Store Read Read data from a shared data store. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Data Store Memory Define a shared data store. Matrix Gain Multiply the input by a matrix. Product Generate the product or quotient of block inputs. Trigonometric Function Perform a trigonometric function. Algebraic Constraint Constrain the input signal to zero. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. S-Function Access an S-function. Sign Indicate the sign of the input.

Enable Add an enabling port to a subsystem. Simulación desde la línea de comando El bloque from permite utilizar datos del espacio de trabajo de MATLAB Utilizando el nombre de los algoritmos de simulación es posible realizar como entrada en el diagrama de bloques. la otra columna son los vectores de datos. Goto Pass block input to From blocks. se utiliza para ingresar varias entradas en bloques con una sola entrada. % con u=0:1.y]=sim('model'. Outport Create an output port for a subsystem or an external output.x.options. From Accept input from a Goto block.10. Merge Combine several input lines into a scalar line. Demux Separate a vector signal into output signals. Width Output the width of the input vector El bloque Mux toma vectores como entrada y los transfiere a la salida como una matriz. D. Los argumentos de entrada son: el 1ro ('model') corresponde nombre del modelo generado en SIMULINK y el 2do (tf) al tiempo final de simulación.x. D. Terminator Terminate an unconnected output port. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . de un bloque de acuerdo al criterio con el cual se hayan clasificado los bloques y definido las librerías. Subsystem Represent a system within another system. El bloque DeMux realiza la operación inversa de demultiplexer.y]=sim('mod6'.-Ing. Selector Select input elements.u). Inport Create an input port for a subsystem or an external input.9. Comandos SIMULINK para obtener varias salidas de bloques con una sola salida. » [t. IC Set the initial value of a signal.u) Con las diferentes versiones de Simulink puede cambiar la ubicación » [t.[]. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 104 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 105 Dictado por Dr. Trigger Add a trigger port to a subsystem. Los bloques In y Out permiten utilizar señales de entrada y salida externas.Data Store Write Write data to a shared data store. se utiliza 2.time. El resto de los argumentos son opcionales. La primera columna debe ser un las simulaciones directamente desde la ventana de comandos de MATLAB vector en orden creciente (eje de tiempo).-Ing. Goto Tag Visibility Define the scope of a Goto block tag Ground Ground an unconnected input port. Mux Combine several input lines into a vector line.

10) x0 = [ 0 0 0 0] 2. Sin argumento derecho los estados son graficados automáticamente sizes indica el orden del sistema (V5.2 nonstiff) y ode15s (v. El comando de MATLAB utilizando un string o una tabla de valores. la primera columna debe ser el vector Por ejemplo en el modelo mod6. Es el algoritmo recomendado para sistemas stiff 'mod6/controlador Pi/Integrator' (sistemas con dinámicas lentas y rápidas).-Ing. los estados y la salida. 0) Los argumentos de salida son el vector tiempo. sizes es un vector que indica ciertas características del modelo. []. por » [sizes.01 y otro en 1000. orden actual de las variables de estado se determina utilizando el comando: Como string cualquier función válida de MATLAB es permitida. El 3er argumento es el vector de opciones para controlar las funciones de integración.3) o ode45 (v. por ejemplo un sistema con un 'mod6/Transfer Fcn' polo en 0. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.2): sizes = [ 4 0 1 1 0 1 1] »sim(‘mod4’. etc. [].Se pueden simular modelos de funciones de transferencia con condiciones iniciales directamente desde la línea de comandos de MATLAB.-Ing. D.10. Si la entrada es una tabla de valores. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .x0. Este comando da como resultado en xstr las variables de estado del modelo. El orden de las variables de estado depende bloques de la librería de fuentes o directamente desde la ventana de de cómo SIMULINK realice el ensamble del sistema de ecuaciones. Elección del algoritmo de integración xstr resulta en: Limsim (versión 1.x0. » [sizes. D. el error de tolerancia. Como salida se obtienen: el vector de tiempo (t) y las matrices de variables Se puede construir el modelo definiendo como entrada alguno de los de estado (x) y de salida (y).2 stiff) 'mod6/Zero-Pole' Es utilizado para sistemas lineales. El último argumento (u) permite entradas externas para simulación. de las condiciones iniciales.xstr] = mod6([]. xo es el vector El comando sim utiliza distintos métodos de integración. []. etc. tales como el paso. por ejemplo sizes(1) es el número de variables de estado. o en sistemas que contienen pocos 'mod6/Zero-Pole' elementos no lineales. [].mdl de tiempo con valores en orden creciente y las otras columnas son los vectores de entrada.xstr] = modelo([]. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 106 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 107 Dictado por Dr. 0) ejemplo ‘sin’. la función seno es evaluada como función del vector tiempo t y puede ser utilizada como entrada externa.

3) o ode23 (v. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. Por ejemplo en sistemas estables puede dar una respuesta inestable para una mala elección del paso de integración. • ode45 is based on an explicit Runge-Kutta (4.5). No es recomendable para sistemas stiff.1. In general. ode15s is a multistep method solver. it son los métodos de Runge Kuta de 5to y 3er orden. Because it is a one- Método predictor corrector. ode23 is a one-step solver. this solver may be more efficient than Euler (v.2) ode15s at crude tolerances. the Bogacki-Shampine formula. ode113 is a multistep solver. If you suspect that a problem is stiff or if ode45 failed or was very inefficient. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . estabilidad. • ode23t is an implementation of the trapezoidal rule using a “free” interpolant. Estos son adecuados normally needs the solutions at several preceding time points to compute the current solution.1. that is. ode113. Es el método de Euler. it needs only the solution at the immediately preceding time point. Actualización de modelos -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 108 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 109 Dictado por Dr. an implicit Runge-Kutta formula with a first stage that is a trapezoidal rule step and second stage that is a backward differentiation formula of order two.3) o ode1 (v. ode15s. Método predictor corrector. It is suitable apply as a “first try” for most problems. it may be more efficient than ode15s at crude tolerances. the fourth-order Runge-Kutta formula. Es el más simple y el más ampliamente utilizado. El método rk45 es más rápido y • ode15s is a variable order solver based on the numerical differentiation formulas más preciso que el rk23 pero utiliza menos puntos y produce gráficos no (NDFs). • discrete (variable-step) is the solver Simulink chooses when it detects that your Es también el método mas rápido. ode3. By construction. and discrete. D.2) efficient than ode45 at stringent tolerances. también para sistemas mixtos (continuo y discreto). The • ode3 is the fixed-step version of ode23. Variable-step solvers: ode45. recomendable para sistemas discontinuos. ode4. It may be more rk45 (v. in computing y(t n).3) o ode15s (v.3) pair of Bogacki and Shampine.2) numerical damping. Es recomendable para sistemas smooth no step solver.-Ing. the Dormand-Prince pair. It may be more efficient than ode45 at crude tolerances and in the presence of mild stiffness. para sistemas altamente no lineales y para sistemas discontinuos. no lineales y nonstiff. ode23. one-step solver.3) o ode45 (v. BDFs (also known as Gear’s method). that is. Es recomendable para sistemas smooth. Fixed-step solvers: ode5. • ode113 is a variable order Adams-Bashforth-Moulton PECE solver.3) o ode113 (v. Use this solver if the problem is only moderately stiff and you need a solution without adams (v. also knows as the improved Euler formula. Esta particularmente diseñado para sistemas stiff. or dicrete for systems with no states: • ode2 is Heun’s method. No es some kinds of stiff problems for which ode15s is not effective.2) • ode23s is based on a modified Rosenbrock formula of order 2. smooth. It can solve lineales. ode2. ode23s. default is ode45 for systems with states. rk23 (v.-Ing. ode45 is the best solver to • discrete (fixed-step) is a fixed-step solver that performs no integration.13. y(t n-1). D. the same iteration matrix is used in evaluating both stages. the Dormand-Prince formula. These are related to but are more efficient than the backward differentiation formulas. pero tiene problemas de precisión y model has no continuous states. Likes ode23s. • ode23tb is an implementation of TR-BDF2.11. • ode23 is also based on an explicit Runge-Kutta (2. ode1 and discrete: • ode5 is the fixed-step version of ode45. 2. try ode15s. Para la versión 3. Gear (v. for models having no states and for which zero crossing detection and error control are not important.1.0 de Simulink • ode4 is RK4. Like ode113.2). It is a • ode1 is Euler’s method.1.

t ) y = g ( x.iy) » [a. D.Para actualizar a una versión más nueva modelos desarrollados en con x y u se especifica el punto de equilibrio de las variables de estado y versiones anteriores se utiliza el comando slupdate.u.u. si no se los incluyera el comando linmod daría vectores nulos para las matrices de entrada y salida. [nt. En sistemas lineales este comando brinda las ecuaciones en espacio de estado. u. El modelo es el nombre del modelo. las ecuaciones linealizadas están dadas por: Al modelo inicial es necesario agregarle los bloques inport y outport (librería de fuentes y sumideros) para proveer acceso a entradas y salidas δx = [∂f ∂x ]δx + [∂f ∂u ]δu externas. dlinmod .c. el sistema debe estar abierto en Simulink.c.c.u) -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 110 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 111 Dictado por Dr.Extract linear model.y.b.y.u*) utilizando El comando ss2tf transforma un modelo en espacio de estado en función de la expansión en serie de Taylor. u .c.-Ing.b.d) puede ser linealizado alrededor de un punto de equilibrio (x*.iu. » [x. de la entrada de control u. 2. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .-Ing.dt]=ss2tf(a. linmod2 .dx]=trim(‘model’) » [a. D.x. Para el cálculo de puntos de equilibrio se utiliza el comando trim El comando linmod es utilizado para obtener la representación en variable de estado linealizado: » [x. t ) » [a.b.dx]=trim(‘model’.uo. El Jacobiano es calculado en un punto especificado de equilibrio. La forma discreta de este comando es dlinmod que trabaja con sistemas » slupdate('mod6') mixtos (continuos y discretos).d]=linmod(‘mod6’). Linearización Aplicación: Obtención de la función de transferencia de lazo cerrado del El sistema no lineal: sistema anterior.xo.d]=linmod(‘mode6’. advanced method.Extract linear model from discrete-time system.b. dx dt = f ( x. transferencia.d]=linmod(‘mod6’) Este comando trata de encontrar valores de x y de u tales que la derivada de los estados sean nulas (el sistema en estado estacionario). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.12.ix. y = [∂g ∂x ]δx + [∂g ∂u ]δu Otras funciones para linealizar son: con δx = x-x* δu = u-u* y donde ∂f/∂x forma el Jacobiano del vector función f respecto al vector de estado x.yo.

2 x2 + u El comando para crear las S-functions es sfun (sfuntmpl en versión 5 y = x1 +3 x2 Simulink 3. Esto significa que se puede escribir programas a medida para simular un sistema sin acceder desde la ventana gráfica. El problema es encontrar los valores de estado estacionario de las entrada Una S-functions puede también ser convertida en un bloque dentro de de control (u) y de las variables de estado tal que la salida y sea igual a 1. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .iy) contiene los índices de los elementos que se quieren mantener 2. D. Dado otro vector de f: es la fuerza externa aplicada al sistema mecánico abscisas x1 con el comando interp2 se obtiene y1 como interpolación: fe: fuerza electromagnética M: masa del elemento móvil » y1=interp2(x. » [x. Estas funciones son llamadas S-functions y como cualquier función de MATLAB son archivos abiertos a los cuales el usuario puede acceder. Cuando se crea un diagrama de bloques SIMULINK crea un M-files Por ejemplo dado el sistema (función) para ese modelo. table1 y interp2 están disponibles para interpolación.[ ].yo) contiene el punto inicial o valores deseados.uo. x& 1 = -x1-x2 + u x& 2 = x1. Comandos de MATLAB como spline.Con esta sintaxis el primer conjunto de argumentos (xo. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.0). V: tensión de la fuente El vector y ha sido calculado en función del vector x.-Ing.-Ing. En estos casos los datos deben ser interpolados para producir resultados con igual número de puntos. S-Functions fijos.u. D.x1) k: constante del resorte -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 112 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 113 Dictado por Dr. Esto dificulta la comparación de simulaciones realizadas bajo diferentes condiciones.1.[ ]. También se dispone de la Toolbox Spline.iu. 2.y.y.14.m) Dado el sistema electromecánico elemental de la figura. Para utilizar el comando trim es necesario construir el modelo en simulink Las S-functions siguen la filosofía de MATLAB de M-files abiertos al (prueba) y ejecutar desde la ventana de comandos de MATLAB: usuario para agregar funcionalidades al programa. El segundo conjunto de argumentos (ix. SIMULINK (librería de funciones no lineales). Interpolación de datos Los algoritmos de integración de SIMULINK utilizan paso de integración variable que resultan en salidas definidas por puntos no igualmente espaciados.[ ].13.dx]=trim(‘mod9’.1) Ejemplo de s-Function (c:\MATLAB\garcia\P1\s_1.[ ].

Máscaras de subsistemas Esta una característica muy potente de Simulink que permite adaptar al El modelo corresponde a un sistema no lineal para expresar su usuario la caja de diálogo y el ícono de un subsistema. N° entradas.vel 2. %[N] El comportamiento dinámico del sistema mecánico es: % Ecuación de estado (diferencial) sys(1) = vel. 0]. vel. %[m] de los parámetros (de distintos bloques) directamente en la caja de M = 0. De esta manera es posible ingresar el valor function [sys. %[m] La ecuación de las tensiones vel = x(2). 2.m) • Simplificar el uso del modelo reemplazando varias cajas de diálogo en un subsistema con sólo una.15. x0 = [poso. Con la máscara se comportamiento en variable de estado es necesario utilizar una S-function. Pues se define la k = 6.1e-3. L(x)= k/x elseif flag == 3 Fe = -k i²/(2x²) sys=x. D.-Ing. 0 Constant pos . elseif abs(flag) == 0 ef= dλ/dt = d(iL(x))/dt % N° estados continuos.003.flag) poso = 0. %[Hy m]. %[V] f = u(2).-Ing. f] estado estacionario con f y fe nulas. con ef tensión inducida. nombre de los l = 0.x.x0]=s_1(t. 0. S-Function i end. pos = x(1). N° estados discretos. 0]. pos else Step Mux s_1 Demux sys = [].293e-5. 0. D. caja de diálogo con descripción propia del bloque. D = 4. i] % Entradas: [v. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . mod4. % N° salidas. %[Kg] diálogo de la máscara.u.D: coeficiente de amortiguamiento if abs(flag) == 1 El desplazamiento xo es la posición de equilibrio del sistema mecánico en % Estados: [pos. %[Hy] parámetros y textos de ayuda. %[A] v= r i + l di/dt + ef .mdl % Valor inicial % Dimensión de los vectores de entrada y salida sys = [3. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.055. %[m/seg] i = x(3). %[N/m] • Proveer una interfase de usuario más descriptiva y útil. r = 10. F= M d²x/dt² + D dx/dt + k (x-xo) .Fe sys(2) = (f -D*vel -K*(pos-poso) -k*i^2/(2*pos^2))/M. N° raices del sistema. 0. %[ohm] -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 114 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 115 Dictado por Dr. sys(3) = pos*(v -r*i +k*i*vel/(pos^2))/(pos*l+k). v = u(1). ef = -(ki/x²) dx/dt + (k/x) di/dt % N°set to 1 if the system has direct feed-through of % its inputs (used for systems within systems). puede: (s_1. 3. %[N seg /m] K = 2667.

Las facilidades de Mask siguen la filosofía de MATLAB de M-files abiertos al usuario para agregar funcionalidades al programa. Se puede tomar un bloque existente o una S-functions y cambiar sus características utilizando la creación de una Máscara.-Ing. D. para el susbsistema. consistente en una descripción y Se pueden ingresar los valores de m y b en la máscara de la caja de en un texto de ayuda. Máscara de un subsistema simple Crear una máscara para este subsistema involucra las siguientes tareas: Dado un subsistema que modela la ecuación de una recta y=mx+b. abrirá la caja de diálogo.• Definir comandos que calculen variables cuyos valores dependan de los parámetros de los bloques. diálogo. bloques del subsistema. • Especificar los prompts para los parámetros de la caja de diálogo de la Con este ejemplo se verá la creación de una caja de diálogo y de un ícono máscara. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .-Ing. D. • Especificar el nombre de la variable utilizado para almacenar el valor de Después de crear la máscara un doble click en el bloque del subsistema cada parámetro. Simulink hace que estos valores estén disponibles en todos los • Especificar los comandos de graficación para la creación del icono. • Prevenir modificaciones no deseadas del subsistema escondiendo su contenido El usuario puede crear y agregar nuevos tipos de bloques a SIMULINK utilizando la creación de Máscaras. El editor de máscara muestra en su inicialización: -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 116 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 117 Dictado por Dr. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. La complejidad del subsistema es encapsulada por una nueva interface que Creación de la máscara tiene el aspecto de un bloque de Simulink. Se selecciona el bloque del subsistema y se elige del Menú Edit la función Mask Subsystem. • Ingresar la documentación del bloque. • Crear un icono del bloque que describa el propósito del subsistema.

Estos Luego con doble click en el bloque del subsistema se abre la nueva caja de comandos acceden a todas las variables del espacio de trabajo de la diálogo donde se ingresan los valores de los parámetros. Estos valores son almacenados en variables del espacio de trabajo de la máscara. En el • El nombre de la variable a la que será asignado el valor del parámetro. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. D. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 118 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 119 Dictado por Dr. El icono se define en la página de icono: Definición del parámetro "pendiente" asociado a la variable "m" en la máscara: Una vez definidos los parámetros de la máscara se presiona el botón Close.m).-Ing.El editor de máscara habilita la especificación de los siguientes atributos Textos de descripción y ayuda de los parámetros de la máscara: El tipo de la máscara. Esto que indicase la pendiente de la recta: indica que el usuario ingresa valores en los campos de edición.0) a (0. • El control de tipo.-Ing. ejemplo se ha adoptado la palabra Recta pero podría haber sido una figura La pendiente y la ordenada al origen se definen como "edit controls". la descripción del bloque y el texto de ayuda son • El prompt: texto que describe el parámetro definidos en la página de documentación. D. que determina como los valores de los parámetros Creación del icono del bloque son seleccionados e ingresados. Es posible construir un icono adecuado para el bloque con máscara. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Los comandos de dibujo grafican una línea desde (0.

Sat » delta = sym('1/10') mod2. Con nuevos valores de pendiente se actualiza automáticamente la 3. puertas. CÁLCULO SIMBÓLICO CON MATLAB línea graficada.mdl: Fcn mod9.m » pi = sym('pi') mod1.1. Subsistema y como argumento de funciones mod6. PI.16.mdl: F de T. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.mdl: EE. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .mdl: trim » fdet = amplitud*exp(-delta*t)*sin(2*pi*t) % expresión simbólica » ezplot(fdet) % graficación de f(t) » syms x y t -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 120 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 121 Dictado por Dr. Vt(inicial)=0 >> help sym/function Simule su comportamiento dinámico ante un salto escalón de 0.mdl: s-function. EE. Construir en Simulink el modelo del sistema de la figura.-Ing. F de t. TE=4. >> help symbolic % lista todos los comandos de la librería KA=10.-Ing. sólo puertas mod7. las ganancias son KA y K. z = sym('z') » syms x y z t • Se pueden crear también constantes simbólicas.mdl: PI. Facilita cálculos matemáticos y graficaciones. y = sym( 'y'). entradas » syms t % variable simbólica mod8. Comandos básicos • Para trabajar en forma simbólica es necesario definir las variables como variables simbólicas.1 a los 2 >> help sym/ezplot % despliega en pantalla ayuda del comando segundos. D. Td0=2. D. El integrador tiene Para ayuda en pantalla un límite superior = 1. Para ello se emplean los comandos: » x = sym('x'). F de T. Td0 y TE. La toolbox symbolic incorpora el cálculo simbólico de MAPLE dentro del 2. La salida del sistema es Vt. Sat » amplitud = sym('sqrt(2)') mod3.máscara.1. Sat. Desarrollo de un modelo propuesto ambiente numérico de Matlab. XY Graph • Se pueden utilizar las variables y constantes simbólicas en expresiones mod5.mdl: EE. las constantes de tiempo son TA.mdl: F de T. TA=1. Sat. ezplot 3. lo que evita utilizar la aproximación en punto flotante Modelos referenciados en este capítulo Ej_sym_basico.mdl: espacio de estado mod4. Puertas.

y digits(25) • Para mostrar la función simbólica en forma de expresión matemática td = sym(t. » za = sqrt((1/4)*(x^2+y^2)). b 'd' el formato mantiene una cantidad de dígitos definida con el comando findsym(cos(alpha)*b*x + 14*y. Se utiliza un 2do resulta ans = 3. 'r'.-Ing.'e') resulta te = 1/10+eps/40 findsym(alpha+a+b) returns a.999999999999a'*2^(-4) » zf = exp(i*pi*t) tr = sym(t. D. 3. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. » d = findsym(fun) % encuentra las variables simbólicas de la función sym(1+sqrt(5).N) % encuentra N variables simbólicas más cercanas a x 'e' el formato racional es suplementado con un término que estima la ¾ Ejemplos: Ej_sym_basico.1415927 'f' para representación en punto flotante. alpha.'r') resulta ans = 7286977268806824*2^(-51) » d = findsym(fun.2) returns x. captura el valor en punto flotante exactamente pero no es conveniente para manipulación.-Ing.m diferencia entre la expresión racional y el valor en punto flotante real syms a b alpha x y te = sym(t. » f1 = (x-2)/(x^2-4).'d') resulta td = .1000000000000000055511151 » pretty(fun) cos(a) b x + 14 y • Comando vpa precisión aritmética variable • Convertir valores en punto flotante de MATLAB en constantes vpa(pi) simbólicas requiere ciertas consideraciones.y digits findsym(y*(4+3*i) + 6*j) returns y fun = cos(a)*b*x + 14*y % define función digits(15) td = sym(t. Comandos de cálculo 'r' para representación como número racional.5) resulta ans = 3.'f') resulta tf = '1.'r') resulta tr = 1/10 • Comando findsym: para averiguar las variables simbólicas en una Si no encuentra una aproximación a un número racional. vpa(pi. D. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 122 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 123 Dictado por Dr. b.x. tf = sym(t. 'e' or 'd'. » f5 = exp(x-3).1416 vpa(pi.2.1.141592653589793238462643 % digits seteado en 25 argumento opcional en el comando sym : 'f'. t = 0.8) resulta ans = 3. el argumento por defecto es 'r'.100000000000000 findsym(fun) returns a.'d') resulta td = . utiliza una expresión simbólica expresión que reproduce el valor en punto flotante con exactitud.

-Ing.0. diff(za.'right') returns inf -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 124 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 125 Dictado por Dr.a) determina el límite de F cuando la variable int(S) es la integral indefinida de S respecto a su variable independiente resultado de findsym(F) Æ a simbólica más cercana a x limit(F) utiliza a = 0 como punto límite.v. int(S. A = [cos(x*t). int (Integrate).2) returns 1/4 limit((1+2*t/x)^(3*x).2. a menos que otra variable sea especificada como 2do int(4*x*t.a.exp(alpha*t)]) returns [exp(t). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .sin(x*t).x.'left') especifica la dirección del límite v int(S.x. 1/alpha*exp(alpha*t)] ¾ Ejemplos: Ej_sym_calculo.sin(t)) returns 2*sin(t)^2*t-8*t argumento. int(1/(1+x^2)) returns atan(x) • Cálculo de derivadas e integrales int(sin(alpha*u). jacobian (Jacobian matriz).t) returns [sin(x*t)/x.x. dza = diff(za) % realiza la derivada respecto de x [cos(x*t)/x.x. -cos(x*t)/x] za = sqrt((1/4)*(x^2+y^2)).m int(A. D. limit (Limit). symsum (Summation of series).m más cercana a x desde a hasta b syms x a t h.2) % derivada dos veces limit(F.m limit(1/x.y) % realiza la derivada respecto de y limit(F.-sin(x*t).x.x.b) es la integral definida de S respecto a su variable simbólica v desde a hasta b limit(sin(x)/x) returns 1 int(int(f2)) % integra dos veces limit((x-2)/(x^2-4). D.a.a) determina el límite de F cuando x Æ a. int(S.0. sin(x*t)/x] resulta dza = 1/2/(x^2+y^2)^(1/2)*x • Determinación de límite dza = diff(za.v) es la integral indefinida de S respecto a su variable simbólica limit (F.a. taylor (Taylor series).1) returns 1/4 integración (int) se realiza respecto la variable más cercana alfabéticamente a x.a. int([exp(t).-Ing.alpha) returns -cos(alpha*u)/u Si una expresión involucra más de una variable la diferenciación (diff) y la int(x1*log(1+x1).inf) returns exp(6*t) ¾ Ejemplos: Ej_sym_calculo. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.b) es la integral definida de S respecto a su variable simbólica ¾ Ejemplos: Ej_sym_calculo.'right') or limit (F.cos(x*t)].Está preparado para aplicar las funciones de la librería de Symbolic: diff syms x x1 alpha u t. (Differentiate).

0] Inversa = inv(A) % inversa • Determinación del Jacobiano PolinomioCarac = poly(A) % polinomio característico J = jacobian(f. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . investiga diferentes simplificaciones algebraicas y retorna (3x2) la que resulta la representación más corta. inv (Matrix inverse).3.-Ing. triu [ 1.b31 b32] % matriz B (3x2) además de retornar con la forma más corta en R.'left') returns [exp(a).[x y z])resulta ans = [ y*z.1:2) % extracción de 3er columna de la matriz A. u*exp(v)] (Determinant). Funciones de simplificación syms a11 a12 a13 a21 a22 a23 a31 a32 a33 % elementos de la matriz A (3x3) • El comando simple(S) encuentra una forma más simple de la expresión syms b11 b12 b21 b22 b31 b32 % elementos de la matriz B S o matriz S. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. 1. Comandos de álgebra lineal (Characteristic polynomial).0. svd (Singular values and singular vectors). A = [a11 a12 a13. null (Basis for null space). eig (Eigenvalues and eigenvectors). limit(1/x.m 3. Determinante = det(A) % determinante limit(v.-Ing. expm (Matrix exponential). tril (Lower triangle). x*y] H = diag(A) % vector con elementos de la diagonal [ 0. colspace (Basis for column space). exp(-x)].x. D. matriz Calcula el jacobiano de las funciones de f respecto de las variables del 3x2 vector v.v]) resulta ans = [ exp(v). x+z]. x*z. en HOW describe la C = A*B % producto matricial debe ser conformable simplificación -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 126 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 127 Dictado por Dr.a21 a22 a23.HOW] = simple(S) B = [b11 b12. % suma no conformable v = [(1 + a/x)^x.0) returns cos(x) %D = A+B.4.x.'left') returns -inf pretty(C) limit((sin(x+h)-sin(x))/h.h.*B % producto elemento a elemento G = A*A/A % producto por si misma y por la inversa ¾ Ejemplo: Ej_sym_calculo.b21 b22. El elemento J(i. 0.inf.m jacobian([x*y*z. 1] (Upper triangle). det jacobian(u*exp(v). D. rank (Rank).v) E = A(:. y.j) es df(i)/dv(j) F = E.a31 a32 a33] % matriz A [R. ¾ Ejemplos: Ej_sym_matrices. jordan (Jordan canonical (normal) form).[u. poly 3. 0] Otras funciones de álgebra lineal: diag (Create or extract diagonals).

+ ------| • El comando factor(S). realiza la factorización simbólica de cada | 3 2 x + 8| elemento de la matriz simbólica S. » pretty(simplify(f)) 2 3 1/3 (49 x + 8 + 6 x^ + 12 x^ ) ¾ Ejemplos: ------------------------------- -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 128 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 129 Dictado por Dr.-Ing. si S contiene sólo elementos en \ x^ x^ / enteros realiza su factorización en números primos. collect(f.x^2 .+ ------| | 3 2 x + 8| cos(x)^2+sin(x)^2 1 combine(trig) \ x^ x^ / 2*cos(x)^2-sin(x)^2 3*cos(x)^2. 2*log(x)-log(y)] S • El comando collect(S.+ --.v) toma cada elemento de la matriz simbólica S y ¾ Ejemplos: lo reescribe como un polinomio de v.m » pretty(simple(f)) / 1 6 12 \1/3 S R How |--. exponenciales y logarítmicas (x+1)*x*(x-1) x^3-x collect(x) x^3+3*x^2+3*x+1 (x+1)^3 factor ¾ Ejemplos: cos(3*acos(x)) 4*x^3-3*x expand expand((x+1)^3) returns x^3+3*x^2+3*x+1 syms x y positive expand(sin(x+y)) returns sin(x)*cos(y)+cos(x)*sin(y) log(x) + log(y) log(x*y) combine v = [exp(x + y) log(x^2/y)] • El comando simplify(S) simplifica cada elemento de la matriz simbólica expand(v) returns [exp(x)*exp(y).exp(-2*x)) returns (-1/4*x+3/16)*exp(-2*x) / 1 6 12 \1/3 |--. D. cos(x)+(-sin(x)^2)^(1/2) cos(x)+i*sin(x) radsimp Es más utilizada en polinomios pero también realiza la expansión de cos(x)+i*sin(x) exp(i*x) convert(exp) funciones trigonométricas. 1/3 x (x + 8) ¾ Ejemplos: Ej_sym_simp.2*x) returns (y-1)*x^2+(y-2)*x produce ans = (alpha+beta)^(1/2*c) f = -1/4*x*exp(-2*x)+3/16*exp(-2*x) » f=(1/x^3+6/x^2+12/(x+8))^(1/3). simplify • El comando expand(S) escribe cada elemento de la expresión simbólica cos(x)^2-sin(x)^2 cos(2*x) combine(trig) S como el producto de sus factores.+ --.-Ing. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. D. collect(S) utiliza la variable » f = cos(x)^2 + sin(x)^2 determinada con findsym(S). » f = simple(f) resulta 1 » f = simplify(f) resulta 1 ¾ Ejemplos: » simplify(exp(c*log(sqrt(alpha+beta)))) collect(x^2*y + y*x .

{sym('r*cos(phi)'). % define la función fm = vectorize(f). subs(S. sym2poly (Symbolic polynomial to coefficient vector). % evalúa la función en MATLAB fcart = x^2+y^2.OLD. subexpr subs (S) reemplaza las variables de la expresión simbólica S (Rewrite in terms of subexpressions). simple (Search for shortest form). exp(-3*t)] [ exp(-4*t). • El comando subs realiza la substitución simbólica de variables collect (Collect). char (Convert sym object to Expansión escalar simple: string).-2 1]}) produce [ 0. 0] factor(sym('12345678901234567890')) retorna (2)*(3)^2*(5)*(101)*(3803)*(3607)*(27961)*(3541) Otros comandos de simplificación: expand (Expand).sym('r*sin(phi)')}) produce Otras funciones de conversión: double (Convert symbolic matrix to r^2*cos(phi)^2+r^2*sin(phi)^2 double). -1] los rangos. factor (Factor). subs(fcart. pasaje del modo simbólico a modo de cálculo en Matlab 980*t) Ej_sym_vectorize.{[0 1. D. horner (Nested polynomial representation).-magic(2)) produce [ exp(-t).NEW) reemplaza las variables OLD con las nuevas NEW 3.6. ¾ Ejemplo. De cálculo simbólico a cálculo en Matlab ¾ Ejemplos: Ej_sym_subs.{x. exp(-2*t)] 3.4) retorna 4+b.2}) produce [x. poly2sym (Coefficient vector to symbolic polynomial).y}.{x. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ .y] = meshgrid(-5:5). D.factor(x^9-1) retorna (x-1)*(x^2+x+1)*(x^6+x^3+1) [ 2.-Ing. %transforma la función simbólica en Substitución múltiple Matlab subs(cos(a)+sin(b).a.[1 -1.5. el programa lo hace automáticamente. subs(exp(a*t). subs (Symbolic substitution).m Substitución simple syms x y % define las variables subs(a+b. numden (Numerator and denominator).-Ing.b}.-1 0].'a'.{a.m Entrada simple: Una vez obtenidos los cálculos simbólicos se puede pasar a modo MATLAB reescribiendo las funciones con el lenguaje de Matlab o se Suponiendo que a = 980 y C1 = 3 existen en el espacio de trabajo puede emplear el comando vectorize El comando y = dsolve('Dy = -a*y') produce y = exp(-a*t)*C1 El commando subs(y) produce ans = 3*exp(. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 130 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 131 Dictado por Dr. % construye una grilla de datos cos(alpha)+sin(2) fxy = eval(fm). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.{sym('alpha'). f = 2*x^2*y+3*x*y+exp(x)*sin(y). Graficación Expansión escalar múltiple: Graficar una función simbólica es simple porque no es necesario colocar subs(x*y.y}.

. caracteres que especifican las incógnitas » [x.25:2.'eqn2'.7. esta es determinada con FINDSYM.gy. » hold on ezplot(f1) % con f1 = f(x) » surf(x..'var1'..5). 3 (1-x) exp(-x -(y+1) )-.. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ ..gy.[-3... Las eqns son expresiones simbólicas o cadena de caracteres que especifican ecuaciones.'var1. D. Otras funciones de cálculo simbólico -2 -3 • Resolución de ecuaciones algebraicas comando solve -4 -3 -2 -1 0 1 2 3 x SOLVE('eqn1'...'eqn2'.varN') ¾ Ejemplo: a la función zb = x²+y² encontrar el gradiente y dibujar la superficie y su gradiente Ej_sym_grafGrad.. -2 -4 2 2 x 2 2 1 2 2 f ( x..5 -1 -1 -2 2 2 2 2 2 Otras funciones que se pueden emplear para graficar son: ezplot3.'eqnN'.. » hold off ¾ Ejemplo: para graficar en R3 » zb = x^2+y^2..49) 0 0 -0.'var2'..zb.var2.gz. Las vars son variables simbólicas o cadena de » zb = vectorize(zb).'varN') » syms x y z » zb = x^2+y^2.3]. y ) = 3(1 − x) 2 e − x − ( y +1) − 10 ( − x 3 − y 5 ) e − x − y − e − ( x +1) − y -6 1 5 3 0.y] = meshgrid(-2:0.'eqn2'...gx. » ezsurfc(zb) 6 4 2 0 • Ejemplo: graficación de una función de dos variables.y.y.-Ing. ezmeshc. ezcontourf. ezsurf.. » [gx. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. rsums (Riemann sums). ezpolar.-Ing.¾ Ejemplo: para graficar en R2 Ej_sym_graf. solve seeks zeros of the expressions or solutions of the equations. Si no se especifican las incógnitas.2:1)..y.5 1 2 >>ezcontour(f.zb).'eqnN'. ezpolar (Easy to use polar coordinates plotter).zb).m » quiver3(x. f1 = (x-2)/(x^2-4).m SOLVE('eqn1'.0..'eqnN') SOLVE('eqn1'.-1/3 exp(-(x+1) -y ) 4 3 ezcontour... 2 1 0 y -1 3. » zb = eval(zb). ezmesh. D. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 132 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 133 Dictado por Dr.-1:0.gz] = surfnorm(x.

'u .u.2*x .v = 1'.0173272500593065641097297117905 y=34. los resultados son ordenados y asignados a las salidas S = solve('x^2*y^2 .'r') ans = p*sin(x) • Para varias ecuaciones y una salida. [ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))+1] [ 1/2/(a+1)*(-2*a-2*(-a)^(1/2))] La letra D denota diferenciación d/dt. resuelve las tres ecuaciones para a.y] = solve('sin(x+y)-exp(x)*y = 0'.y] = solve('x^2 + x*y + y = 3'.5*a + 6') D2 es d^2/dt^2.4*x + 3 = 0') retorna x= [ 1] Retorna la solución en una estructura de celdas S= x: [8x1 sym] [ 3] y: [8x1 sym] y = [1 ] S = solve('a*u^2 + v^2'. retorna una estructura conteniendo las soluciones • Para varias ecuaciones e igual número de salidas.-Ing. la salida es un vector simbólico con múltiples soluciones de la ecuación. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . D. D.m No puede encontrar solución analítica solve('p*sin(x) = r') selecciona 'x' como incógnita con findsym y retorna ans = asin(r/p) x = -6.v] = solve('a*u^2 + v^2'.'x^2-y = 2') Ej_sym_solve.u.u') [-3/2] Mantiene v como parámetro.v = 1') mantiene 'a' como parámetro y resuelve las dos ecuaciones para 'u' y 'v' y • Resolución simbólica de ecuaciones diferenciales ordinarias dsolve retorna u= [ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))+1] v = [ 1/2/(a+1)*(-2*a+2*(-a)^(1/2))] Por defecto la variable independiente es el tiempo.'a.'u . [a.y^2 .1 = 0') [x. [x.'a^2 . Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr.-Ing. D3y denota derivada tercera de y -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 134 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 135 Dictado por Dr.v] = solve('a*u^2 + v^2 = 0'. resuelve las dos ecuaciones y retorna S.'x^2 . puede modificarse con el último argumento de entrada.'p') ans = r/sin(x) solve('p*sin(x) = r'.v = 1'.208227234306296508646214438330 solve('p*sin(x) = r'.'u . [u.a and S.' u' and 'v'. Si no se encuentra una solución analítica y el número de incógnitas es igual al número de variables dependientes presenta una solución numérica a = [ 2] u = [ 1/3+1/3*i*2^(1/2)] v = [ -2/3+1/3*i*2^(1/2)] [ 2] [ 1/3-1/3*i*2^(1/2)] [ -2/3-1/3*i*2^(1/2)] Tres tipos de salidas son posibles: [ 3] [ 1/4+1/4*i*3^(1/2)] [ -3/4+1/4*i*3^(1/2)] [ 3] [ 1/4-1/4*i*3^(1/2)] [ -3/4-1/4*i*3^(1/2)] • Para una ecuación y una salida.'x^2 .1 = 0'.

-Ing. S = dsolve('Dx = y'. 'x(0) = 0'. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . Dw = -u'.'Dg = -f + g'. etc. C2. finverse (Functional inverse). compose (Functional composition). w(0) = 1') dsolve('Dx = -a*x') returns ans = exp(-a*t)*C1 Si no se encuentra una solución explícita resulta una implícita. Dy(pi/a) = 0') • Ejemplo: encontrar la antitransformada de Laplace de la función de y = dsolve('D2y = sin(y)'). la salida es un vector simbólico con S. 'Dy = -x'.No utilizar variables simbólicas cuyo nombre contenga D • Para varias ecuaciones y una salida.'s') returns x = exp(-a*s) Y = dsolve('Dy = y^2*(1-y)') Warning: Explicit solution could not be found.'y(0) = 0') returns y = [ sin(t)] Y= t+1/y-log(y)+log(-1+y)+C1 = 0 [ -sin(t)] x = dsolve('D2x+3*Dx+2*x=5*ut'.g = -exp(t)*sin(t)+2*exp(t)*cos(t) múltiples soluciones de la ecuación. retorna una estructura conteniendo las soluciones Las condiciones iniciales (CI) son especificadas con ecuaciones como 'y(a) = b' o 'Dy(a) = b' donde y es una variable dependiente y a y b son constantes.'f(0) = 1'. -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 136 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 137 Dictado por Dr.'u(0) = 0. v(0) = 0.'x(0)=0'.f = exp(t)*cos(t)+2*exp(t)*sin(t) • Para una ecuación y una salida. si no encuentra ambas emite una advertencia x = dsolve('Dx = -a*x'. C1.'g(0) = 2') Si el número de CI es menor al número de variables dependientes la solución se obtiene con constantes arbitrarias. D.-Ing. Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. pretty(y) transferencia 5 F (s) = 2 s ( s + 3s + 2) • Para varias ecuaciones e igual número de salidas. Dv = w. implicit solution returned. D. 'y(0) = 1') Ej_sym_dsolve. S = dsolve('Df = f + g'. y = dsolve('(Dy)^2 + y^2 = 1'. dsolve('Df = f + sin(t)'.'Dx(0)=0') retorna Otras funciones de resolución de ecuaciones: solve (Symbolic solution of x = 5/2*ut+5/2*ut*exp(-2*t)-5*ut*exp(-t) algebraic equations). 'f(pi/2) = 0') dsolve('D2y = -a^2*y'. retorna una estructura S con campos Tres tipos de salidas son posibles: S. 'y(0) = 1. los resultados son ordenados y asignados a las salidas » syms s t » ct = ilaplace(5/(s*(s^2+3*s+2))).'x(0) = 1'.m S = dsolve('Du = v.

Taylor Series Approximation 3. Trabaja como una calculadora de bolsillo.-Ing.2*x) g = sin(10*x) y a = 0. ztrans (Z transform).5 exp(-t) + 5/2 exp(-2 t) términos. Otros comandos de transformación: fourier (Fourier transform). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ . iztrans (Inverse Z transform).8 Herramientas 10 Esta toolbox dispone de una calculadora gráfica interactiva que opera y 5 grafica funciones de una variable.» pretty (ct) Abre una ventana de graficación interactiva para graficar una aproximación de la función e x sen ( x ) empleando una serie de Taylor de 7 5/2 .4*pi » taylortool('exp(x*sin(x))') -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 138 -Curso de perfeccionamiento para estudiantes avanzados “Introducción a MATLAB/SIMULINK” 139 Dictado por Dr. laplace Probar con a = 1 y N = 1 para analizar validez de la linealización con el (Laplace transform). Graciela Colomé Instituto de Energía Eléctrica Facultad de Ingeniería UNSJ Dictado por Dr. en una de ellas grafica f(x) TN(x) =1+x2+1/3 x4+1/120 x6 y en la otra g(x). Probar con f = exp(-0. D. ifourier (Inverse Fourier truncamiento de la serie de Taylor. D.-Ing. Se activa con la función funtool 0 » funtool -6 -4 -2 0 2 4 6 Se abren dos ventanas adicionales de gráficos. transform).