Notas
Presentación
Esquema
1
Introducción a MATLAB
  • Presentación
  • Requerimientos
  • Metodología
  • Indicaciones
  • Contenido
  • Fuentes de consulta
2
Presentación
  • Este curso está orientado a quienes han tenido un contacto muy reducido o nulo con MATLAB.
  • Tiene como propósito proporcionar los conocimientos básicos sobre MATLAB, permitiéndole al estudiante su posterior ampliación.
  • En general, los conceptos abordados en el curso son aplicables MATLAB 5.3 o superior.
  • En su mayoría, el material de este curso ha sido adaptado de la documentación oficial del producto que se menciona en la sección Fuentes de Consulta.
3
Requerimientos
  • Para estudiar este curso satisfactoriamente, se necesita lo siguiente:
    • Una computadora personal de prestaciones competentes, con sistema operativo Microsoft Windows 98 o superior, y MATLAB 5.3 o superior.
    • Internet Explorer 5 o superior, para visualizar las dispositivas que conforman el curso.
  • No se requiere de ningún toolbox u otro componente adicional de MATLAB.
4
Metodología
  • El curso se divide en 13 lecciones, de duración variable, no mayor a 2 horas aproximadamente.
  • Cada lección aborda un tópico completo de MATLAB, y puede dividirse en las siguientes partes:
    • Exposición
    • Demostración
    • Práctica
5
Metodología
  • La exposición tiene como propósito introducir conceptos y características de MATLAB.
  • La demostración contiene ejemplos de aplicación de los conceptos vertidos en la exposición de la lección.
  • La práctica es un conjunto de ejercicios de aplicación que deben realizarse en MATLAB, para constatar que los conceptos han sido asimilados.
6
Indicaciones
  • Estudie las lecciones del curso en el orden en el que han sido presentadas, según su número correlativo (lección 1, lección 2, etc.).
  • Recorra en orden las dispositivas de cada lección, comenzando siempre con la parte de exposición, continuando con la de demostración y finalizando con la de práctica (de estar presentes).
7
Indicaciones
  • En las secciones de exposición y demostración, cuando aparece el logo de MATLAB en el margen izquierdo de la diapositiva (como el que se muestra aquí), se indica que se debe utilizar MATLAB en ese momento para comprobar u observar lo que se menciona en ese párrafo.
  • Los ejercicios contenidos en la sección práctica de las lecciones deben ser implementados en MATLAB antes de avanzar a la lección siguiente.
8
Contenido
  • Lección 1: ¿Qué es MATLAB?
  • Lección 2: Matrices
  • Lección 3: Expresiones
  • Lección 4: Trabajando con matrices
  • Lección 5: La ventana de comandos
  • Lección 6: Gráficos
  • Lección 7: Ayuda y documentación en línea
  • Lección 8: El entorno de MATLAB
  • Lección 9: Operaciones con matrices y arreglos
  • Lección 10: Control de flujo
  • Lección 11: Otras estructuras de datos
  • Lección 12: Guiones y funciones
  • Lección 13: Manejador de gráficos
9
Fuentes de consulta
  • Documentación oficial en línea de los productos de MathWorks:
  • http://www.mathworks.com/access/helpdesk/help/techdoc/matlab.html
10
Introducción a MATLAB
  • Lección 1
  • ¿Qué es MATLAB?
11
Lección 1: ¿Qué es MATLAB?
  • Exposición
12
Exposición: ¿Qué es MATLAB?
  • Generalidades
  • Historia de MATLAB
  • El Sistema MATLAB
  • Documentación de MATLAB
  • La familia de productos de MATLAB
  • Campos de aplicación de MATLAB
13
Generalidades sobre MATLAB
  • MATLAB = MATrix LABoratory (laboratorio matricial)
  • Lenguaje de altas prestaciones para el cálculo técnico
  • Incluye cálculo, visualización y programación
  • Entorno de fácil uso
  • Notación matemática familiar
14
Generalidades sobre MATLAB
  • Usos típicos incluyen:
    • Matemáticas y cómputo
    • Desarrollo de algoritmos
    • Modelado, simulación y desarrollo de prototipos
    • Análisis, exploración y visualización de datos
    • Gráficos científicos y de ingeniería
    • Desarrollo de aplicaciones, incluyendo GUI’s
15
Generalidades sobre MATLAB
  • Su elemento básico de datos es el arreglo
  • Los arreglos no requieren dimensionamiento
  • La vectorización implica velocidad de cálculo
16
Historia de MATLAB
  • Cleve Moler escribió el MATLAB original en FORTRAN
  • Los algoritmos matriciales fueron tomados de los proyectos LINPACK y EISPACK
  • El MATLAB actual fue escrito en C por The MathWorks Inc.
17
El Sistema MATLAB
  • Lenguaje de Programación
  • Entorno de Desarrollo
  • Manejador de Gráficos
  • Biblioteca de Funciones Matemáticas
  • Interfaz del Programa de Aplicación (API)
18
Lenguaje de Programación
  • Lenguaje de alto nivel
  • Basado en matrices y arreglos
  • Incluye:
    • Control de flujo
    • Funciones
    • Estructuras de datos
    • Elementos de entrada/salida
    • Programación orientada a objetos
  • Permite programación a pequeña y gran escala
19
Entorno de Desarrollo
  • Conjunto de herramientas que facilitan al usuario y al programador el manejo de MATLAB
  • Permite:
    • Manejo de variables
    • Importación y exportación de datos
    • Desarrollo, manejo, depuración y optimización de archivos M
20
Manejador de Gráficos
  • Conocido como MATLAB Handle Graphics®
  • Incluye comandos de alto nivel para:
    • Visualización de datos en dos y tres dimensiones
    • Procesamiento de imágenes
    • Animaciones
    • Gráficos para presentaciones
  • Incluye comandos de bajo nivel para:
    • Personalización de la apariencia de los gráficos
    • Creación de GUI’s
21
Biblioteca de Funciones Matemáticas
  • Vasta colección de algoritmos computacionales que incluyen:
    • Desde funciones elementales, como suma, seno, coseno, y aritmética compleja,
    • Hasta funciones más sofisticadas, como inversa de una matriz, funciones de Bessel, y transformadas rápidas de Fourier.
22
Interfaz del Programa de Aplicación
  • Conocida como MATLAB Application Program Interface (API)
  • Permite:
    • Interactuar con programas escritos en C y FORTRAN
    • Invocar rutinas desde MATLAB
    • Invocar MATLAB como un motor de cómputo
    • Lectura y escritura de archivos MAT
23
Documentación de MATLAB
  • Disponible en línea y en formato para impresión
  • Se compone de los siguientes títulos:
    • Instalación (MATLAB Installation Guide)
    • Guía rápida (Getting Started with MATLAB)
    • Manual (Using MATLAB)
    • Manual de Gráficos (Using MATLAB Graphics)
    • API de MATLAB (MATLAB Application Program Interface Guide)
    • Nuevas características (MATLAB New Features)
24
La familia de productos de MATLAB
25
La familia de productos de MATLAB
  • MATLAB
  • SIMULINK
26
MATLAB
  • MATLAB System
  • MATLAB Extensions
  • Toolboxes
27
MATLAB System
  • Es el fundamento para todos los productos de MATLAB. Combina capacidades numéricas de cómputo, gráficos en 2 y 3 dimensiones, y su lenguaje de programación propio, todo en un ambiente integrado de fácil uso.
28
MATLAB Extensions
  • Son herramientas opcionales que soportan la implementación de sistemas desarrollados en MATLAB.
29
Toolboxes
  • Toolbox = Cajas de Herramientas
  • Soluciones para aplicaciones específicas
  • Permiten aprender y aplicar conocimientos tecnológicos especializados
30
Toolboxes
  • Constituyen conjuntos de funciones de MATLAB (archivos M)
  • Son abiertos y extensibles, o sea, se pueden ver los algoritmos y agregar los suyos propios.
  • Amplían las capacidades de MATLAB para resolver tipos de problemas particulares.
  • Muchos de ellos han sido desarrollados por The MathWorks Inc.
31
SIMULINK
  • SIMULINK System
  • SIMULINK Extensions
  • Blocksets
32
SIMULINK System
  • Sistema interactivo para la simulación de sistemas dinámicos no lineales
  • Ambiente gráfico
  • Basado en diagramas de bloque, señales, entradas y salidas
  • Puede trabajar con sistemas lineales, no lineales, de tiempo continuo, de tiempo discreto, de variables múltiples, y de razones de cambio múltiples
33
SIMULINK Extensions
  • Son herramientas opcionales que soportan la implementación de sistemas desarrollados en SIMULINK.
34
Blocksets
  • Son colecciones de bloques de SIMULINK diseñados para ser utilizados en áreas de aplicación específicas.
35
Campos de aplicación de MATLAB (versión 7)
  • Computación técnica
  • Control Automático
  • Procesamiento de Señales y Comunicaciones
  • Procesamiento de Imágenes
  • Mediciones y pruebas
  • Modelado y análisis financiero
36
Computación técnica
  • Computación matemática, análisis, visualización y desarrollo de algoritmos.
  • Orientado para ingenieros, científicos, matemáticos y educadores.
  • Diversos campos de aplicación, desde automovilismo y electrónica hasta equipo industrial y telecomunicaciones.
37
Control Automático
  • Diseño de sistemas de control basado en modelos.
  • Incluye simulación, creación rápida de prototipos y generación de código para sistemas embebidos.
  • Utilizado para el diseño y desarrollo de software utilizado en tecnologías aeroespaciales, de defensa, automovilismo, equipo industrial, control de procesos, etc.
  • Se reducen los costos y tiempo de desarrollo, y se incrementa la calidad.
38
Procesamiento de señal y comunicaciones
  • Diseño de sistemas de procesamiento de señal y de comunicaciones basado en modelado.
  • Incluye simulación, generación de código, y verificación.
  • Aplicable en áreas de electrónica, comunicaciones, tecnologías aeroespaciales y de defensa, medicina y otras industrias.
  • Permite el modelado de algoritmos y modelos, la simulación de sistemas complejos, la generación de código para tiempo real, y verificar la implementación de hardware y software.
39
Procesamiento de imágenes
  • Adquisición de imágenes, análisis, visualización y desarrollo de algoritmos.
  • Orientado a ingenieros, científicos e investigadores.
  • Ambiente intuitivo y flexible para resolver problemas complejos sobre imágenes.
  • Disciplinas de aplicación tales como tecnologías aeroespaciales y de defensa, remote sensing, biotecnología, imágenes médicas y científicas, y ciencias de los materiales.
40
Medición y pruebas
  • Capacidad de conexión con hardware especializado.
  • Análisis de datos para aplicaciones de mediciones y pruebas.
  • Utilizado para pruebas, análisis de datos, modelado, reporte de resultados, todo en un único ambiente.
41
Modelado y análisis financiero
  • Modelado, análisis y desarrollo de aplicaciones financieras.
  • Permite acceder y manipular fácilmente grandes cantidades de datos, desarrollar rápidamente nuevos algoritmos financieros, y crear de forma automática todos los componentes necesarios para integrar nuevos modelos dentro de un sistema ya existente.
42
Introducción a MATLAB
  • Lección 2
  • Matrices
43
Lección 2: Matrices
  • Exposición
  • Demostración
44
Exposición: Matrices
  • Definiciones
  • Creación de matrices
  • Suma, transpuesta y diagonal
  • Punteros
  • El operador dos puntos
  • La función magic
45
Definiciones
  • Matriz: Arreglo rectangular de números.
  • Ejemplo:
46
Definiciones
  • Tamaño de una matriz:
    Número de filas X Número de columnas.
    • Para el ejemplo anterior, la matriz es de tamaño 3x4.
  • Escalar: Matriz de 1x1.
  • Vector: Matriz de sólo 1 fila (vector fila), o sólo 1 columna (vector columna).
47
Definiciones
  • Los lenguajes de programación tradicionales realizan operaciones número por número al trabajar con arreglos.
  • Las operaciones de MATLAB trabajan con matrices completas simultáneamente.
  • Un buen ejemplo de matriz es el cuadrado mágico que se encuentra en el tallado renacentista “Melancolía I” del artista y matemático alemán Albrecht Dürer.
48
Cuadrado
mágico
49
Creación de matrices
  • Existen diversas formas de crear matrices:
    • Digitar una lista explícita de elementos.
    • Cargar las matrices desde un archivo externo.
    • Usando las funciones integradas de MATLAB.
    • Por medio de funciones creadas por el usuario.
50
Creación de matrices
  • Por medio de una lista explícita de elementos:
    • Separar cada elemento por espacios en blanco, o por comas.
    • Usar punto y coma para indicar el final de cada fila.
    • Encerrar el listado de elementos entre corchetes, [].
51
Creación de matrices
  • Ejemplo, la matriz de Dürer:
    • A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
  • MATLAB devuelve:
    • A =
    • 16 3 2 13
    • 5 10 11 8
    • 9 6 7 12
    • 4 15 14 1
52
Creación de matrices
  • Una vez ingresada la matriz, se guarda automáticamente en el espacio de trabajo de MATLAB (MATLAB Workspace).
53
Suma – transpuesta – diagonal
  • La matriz de Dürer es “mágica” porque la suma de 4 de sus elementos en cualquier dirección siempre produce el mismo número.
  • Para sumar las columnas de A:
    • sum(A)
  • MATLAB responde con:
    • ans =
    • 34 34 34 34
54
Suma, transpuesta y diagonal
  • Si no se especifica una variable de salida, MATLAB usa la variable ans (answer, o respuesta), para almacenar el resultado.
  • Las operaciones de MATLAB que trabajan sobre matrices, como sum, para la suma, realizan la operación sobre cada columna, y devuelven un vector fila de resultados.
55
Suma, transpuesta y diagonal
  • Para sumar los elementos de cada fila, con el comando sum, primero se debe trasponer la matriz.
  • Trasposición: Intercambiar las filas de una matriz por sus columnas.
  • Ejemplo:
56
Suma, transpuesta y diagonal
  • La transpuesta, en MATLAB, es la comilla simple (‘).
  • Por lo tanto:
    • A’
  • Produce:
    • ans =
    • 16 5 9 4
    • 3 10 6 15
    • 2 11 7 14
    • 13 8 12 1
57
Suma, transpuesta y diagonal
  • De forma que:
    • sum(A’)’
  • Produce:
    • ans =
      • 34
      • 34
      • 34
      • 34
  • Un vector columna con la suma de cada fila.
58
Suma, transpuesta y diagonal
  • La diagonal de una matriz está formada por todos los elementos ubicados en igual posición de fila y de columna.
59
Suma, transpuesta y diagonal
  • La diagonal se extrae con el comando diag.
    • diag(A)
  • Produce
    • ans =
      • 16
      • 10
      • 7
      • 1
60
Suma, transpuesta y diagonal
  • Para sumar los elementos de la diagonal:
    • sum(diag(A))
  • Lo que produce:
    • ans =
      • 34
61
Suma, transpuesta y diagonal
  • La otra diagonal (conocida como antidiagonal) no es tan importante matemáticamente como la diagonal principal.
  • Por eso no hay un comando de MATLAB que extraiga la antidiagonal.
  • Pero se puede usar la función fliplr para extraer la antidiagonal de una matriz.
62
Suma, transpuesta y diagonal
  • El comando fliplr gira la matriz de derecha a izquierda:
63
Suma, transpuesta y diagonal
  • Por lo tanto, para sumar los elementos de la antidiagonal:
    • sum(diag(fliplr(A)))
  • Lo que produce:
    • ans =
      • 34
64
Punteros
  • Indican la posición de un elemento o conjunto de elementos dentro de una matriz.
  • El menor valor de un puntero es 1.
  • El elemento en la fila i y en la columna j se denota por A ( i , j ).
  • El origen de las filas y columnas de una matriz está en la esquina superior izquierda.
65
Punteros
  • Por ejemplo, A(4,2) es el elemento de la matriz A ubicado en la intersección de la fila 4 con la columna 2.
66
Punteros
  • Por ejemplo, para sumar los elementos de la fila 4:
    • A(4,1) + A(4,2) + A(4,3) + A(4,4)
  • Lo que produce:
    • ans =
      • 34
67
Punteros
  • Puede usarse un único puntero para direccionar los elementos de una matriz, de la forma A(k).
  • Esa es la forma usual de referenciar los elementos de los vectores fila o columna.
  • Este direccionamiento también puede aplicarse a matrices, de la siguiente forma:
68
Punteros
69
Punteros
  • Por ejemplo, A(8) es lo mismo que A(4,2).
  • Si se hace referencia a una posición que no existe en una matriz, ocurre un error. Por ejemplo,
    • t = A(4,5)
  • Devuelve:
    • Index exceeds matrix dimensions.
    • (El puntero excede las dimensiones de la matriz. Recuérdese que A se definió de 4x4).
70
Punteros
  • Pero si se guarda un valor en una posición fuera de la matriz, el tamaño de ésta se incrementa para alojar al nuevo elemento.
  • Por ejemplo,
    • X = A;
    • X(4,5) = 17


    • X =
    • 16 3 2 13 0
    • 5 10 11 8 0
    • 9 6 7 12 0
    • 4 15 14 1 17
71
El operador dos puntos
  • Es uno de los operadores más importantes de MATLAB.
  • Puede usarse de diversas maneras.
  • En general, sirve para crear vectores.
  • Su sintaxis es:
    • variable = inicio:incremento:final
72
El operador dos puntos
  • Por ejemplo:
    • 100:–7:50
  • Devuelve:
    • 100   93   86   79   72   65   58   51
  • También: 4:2:10 à 4  6  8  10
  • Si no se especifica el incremento, se asume la unidad.
  • Por ejemplo: 1:5 devuelve 1  2  3  4  5.
73
El operador dos puntos
  • Los punteros que involucran al operador dos puntos se refieren a una porción de la matriz.
  • Por ejemplo A(1:3,2) se refiere a todos los elementos de A que están en las filas de la 1 a la 3, y además en la columna 2.
74
El operador dos puntos
  • Por lo tanto, para sumar los elementos de la fila 4, de una forma más eficiente:
    • sum(A(1:4,4))
  • Lo que devuelve:
    • ans =
      • 34
  • Si el operador dos puntos aparece él sólo como puntero, se refiere a todos los elementos de una fila o una columna.
75
El operador dos puntos
  • Por ejemplo, A(:,4) se refiere a los elementos de A que están en todas las filas, y en la columna 4, es decir, que se refiere a toda la columna 4.
76
El operador dos puntos
  • La palabra clave end, cuando aparece como puntero, se refiere al último elemento, ya sea de una fila o de una columna.
  • Por ejemplo, A(1,end) se refiere al elemento de A que está en la fila 1, y en la última columna, o sea, al último elemento de la fila 1.
77
El operador dos puntos
  • Por lo tanto, para sumar todos los elementos de la última columna de A,
    • sum(A(:,end))
  • Lo que devuelve, lógicamente,
    • ans =
      • 34
78
La función magic
  • Sirve para crear cuadrados mágicos, de casi cualquier tamaño.
  • Ejemplo:
    • B = magic(4)
    • B =
    •    16     2    3    13
    •      5   11   10     8
    •      9     7     6   12
    •      4   14   15     1
79
La función magic
  • Esta matriz es casi idéntica a la Dürer, excepto porque tiene las dos columnas del centro intercambiadas.
  • Para intercambiar las dos columnas del centro:
    • A = B(:,[1 3 2 4])
  • Eso significa que la matriz A estará formada por los elementos de la matriz B, tales que se encuentren ubicados en todas las filas, pero en las columnas 1, 2, 3 y 4, respectivamente.
80
La función magic
  • Ello devuelve:
    • A =
      • 16      3     2   13
      •   5    10   11     8
      •   9      6     7   12
      •   4    15   14     1
  • ¿Por qué Dürer no empleó el orden que MATLAB ocupa en el algoritmo de la función magic?
  • Tal vez porque quería registrar en la matriz el año en el que hizo el tallado: en 1514. Véase los elementos A(end,2:3).
81
Demostración
  • ¿Cuánto es la suma “mágica” de las diagonales de un cuadrado mágico de 6x6?
    • sum(diag(magic(6)))
    • ans =
      • 111
  • Dada A = magic(10), genere la matriz B, que contenga los elementos de A ubicados en las posiciones pares de fila y de columna.
    • B=A(2:2:end,2:2:end)
82
Demostración
  • Dada la matriz A=[10,0;2,7;9,15], sustituya el número 0 por 1.
    • A(1,2)=1
  • Calcule la suma de la diagonal de A=magic(4), sin utilizar el comando diag.
    Sugerencia: Use punteros.
    • A(1,1)+A(2,2)+A(3,3)+A(4,4)
83
Demostración
  • La transpuesta de una matriz “gira” al arreglo alrededor de la diagonal. Escriba una secuencia de comandos para girar la matriz A al rededor de la antidiagonal.
    • A=fliplr(fliplr(A)’)
  • Escriba una secuencia de comandos para asignar a la matriz B los elementos que se encuentran en las primeras 2 columnas de A. Utilice punteros de fila y de columna.
    • B=A(:,[1,2])
84
Demostración
  • Repita el ejercicio anterior, pero utilizando un único puntero, y considerando que A es de 4x4.
    • B=A(1:8)
  • Dado A=[3,4,5;2,1,6;-1,7,9;0,-2,-3], cree una matriz B, con los elementos de A ubicados dentro del rectángulo formado por las posiciones (1,2) y (4,3).
    • B=A(1:4,2:3)
85
Demostración
  • Repita el ejericcio anterior, pero asignando solamente las esquinas del rectángulo.
    • B=A([1,4],[2,3])
  • Dada una matriz A de 4x4, escriba una secuencia de comandos para “girar” la matriz sobre un eje horizontal.
    • B=A([4,3,2,1],:)
86
Demostración
  • Genere un vector columna con los primeros 10 números impares, en orden descendente, utilizando el operador dos puntos.
    • A=19:-1:1
    • A=A’
87
Introducción a MATLAB
  • Lección 3
  • Expresiones
88
Lección 3: Expresiones
  • Exposición
89
Exposición: Expresiones
  • Variables
  • Números
  • Operadores
  • Funciones matemáticas
  • Ejemplos de expresiones
90
Variables
  • MATLAB no requiere ningún tipo de declaración de nombres de variables, ni de sus dimensiones.
  • Cuando MATLAB encuentra un nuevo nombre de variable, automáticamente crea esa variable y aloja la información con la cantidad apropiada de memoria.
  • Si la variable ya existe, MATLAB reemplaza su contenido, y, si es necesario, cambia las dimensiones de la variable para que sea capaz de alojar la información.
91
Variables
  • Las variables pueden estar formadas por cualquier cantidad de letras, números y caracteres de subrayado.
  • MATLAB ocupa sólo los primeros 31 caracteres de un nombre de variable.
  • MATLAB distingue mayúsculas de minúsculas.
  • Para ver la matriz asignada a una variable, simplemente tecléese el nombre de dicha variable.
92
Números
  • MATLAB utiliza la notación decimal convencional para los números, con punto decimal opcional, y con signo más o menos.
  • La notación científica utiliza la letra e para especificar un factor de escala en una potencia de 10.
  • Los números imaginarios utilizan ya sea el sufijo i o j.
93
Números
  • Ejemplos de números en MATLAB:
    • 3, –99 0.0001, 9.6397238,
    • 1.60210e–20, 6.02252e23, 1i, –3.14159j, 3e5i.
  • Todos los números se almacenan internamente utilizando el formato long, definido por el estándar de punto flotante de IEEE.
94
Números
  • Los números de punto flotante tienen una precisión finita de alrededor de 16 cifras significativas decimales, y un rango finito que abarca aproximadamente desde 10-308 a 10+308.
95
Operadores
  • Las expresiones utilizan los operadores aritméticos y reglas de precedencia comunes.
96
Funciones matemáticas
  • MATLAB cuenta con un gran número de funciones matemáticas elementales, tales como abs, sqrt, exp y sin.
  • Las funciones devuelven un tipo de número adecuado como resultado, dependiendo del argumento con el que se evalúe. Por ejemplo, la raíz cuadrada o el logaritmo de un número negativo no devuelve un error, sino un resultado complejo.
97
Funciones matemáticas
  • También cuenta con funciones matemáticas más avanzadas, como las funciones Bessel y gamma. La mayoría de dichas funciones acepta argumentos complejos.
  • Algunas de las funciones, tales como sin y sqrt, son built-in, o sea, funciones que son parte del núcleo de MATLAB, y que son muy eficientes, pero cuyos algoritmos no pueden ser inspeccionados por el usuario.
98
Funciones matemáticas
  • Otras funciones, tales como gamma, y sinh, están implementadas a través de archivos M. El usuario puede ver el código, e incluso modificarlas.
99
Funciones matemáticas
  • Algunas funciones proporcionan valores de constantes útiles, tales como:
100
Funciones matemáticas
  • Inf se genera al dividir un valor diferente de cero entre cero, o al evaluar una función matemática que sobrepasa realmax.
  • NaN se genera al tratar de evaluar una expresión como 0/0, o Inf-Inf, que no tienen valores matemáticos definidos.
101
Funciones matemáticas
  • Los nombres de las funciones no están reservados.
    • Se pueden reescribir para almacenar cualquier valor, por ejemplo, eps = 1.
    • Para restaurar la función original, basta con borrar la variable; por ejemplo:
      • clear eps
102
Ejemplos de expresiones
  • rho = (1+sqrt(5))/2
    • rho =
      • 1.6180
  • a = abs(3+4i)
    • a =
      • 5
103
Introducción a MATLAB
  • Lección 4
  • Trabajando con matrices
104
Lección 4: Trabajando con matrices
  • Exposición
  • Demostración
105
Exposición:
Trabajando con matrices
  • Funciones que generan matrices.
  • Comando load.
  • Generación de matrices con archivos M.
  • Concatenación de matrices.
  • Borrado de filas y columnas.
106
Funciones que generan matrices
  • zeros: Matriz de ceros.
  • ones: Matriz de unos.
  • rand: Matriz de números aleatorios de distribución uniforme.
  • randn: Matriz de números aleatorios de distribución normal.
107
Funciones que generan matrices
  • Ejemplos:
    • Z = zeros(2,4)
      • Z =
        • 0 0 0 0
        • 0 0 0 0
    • F = 5*ones(3,3)
      • F =
        • 5 5 5
        • 5 5 5
        • 5 5 5
108
Funciones que generan matrices
    • N = fix(10*rand(1,10))
      • N =
        • 4   9   4   4   8   5   2   6   8   0
  • El comando fix devuelve la parte entera de un número fraccionario.
109
Funciones que generan matrices
    • R = randn(4,4)
      • R =
        • 1.0668     0.2944   –0.6918   –1.4410
        • 0.0593   –1.3362     0.8580     0.5711
        • –0.0956   0.7143     1.2540   –0.3999
        • –0.8323   1.6236   –1.5937     0.6900
110
Comando load
  • Lee archivos binarios que contienen matrices generadas por MATLAB, o archivos de texto que contienen datos numéricos.
  • Los archivos de texto deben organizarse como una tabla rectangular de números, separados por espacios (o por tabulaciones), con una fila por línea, e igual número de elementos en cada fila.
111
Generación de matrices con archivos M
  • Los archivos M son archivos de texto que contienen código de programación en el lenguaje de MATLAB.
  • Para generar matrices con archivos M, basta con escribir en dicho archivo todas las sentencias de código que se escribirían en la línea de comandos de MATLAB.
  • Luego se ejecutan los archivos M como cualquier otro comando de MATLAB.
  • Los archivos M deben tener extensión .m.
112
Concatenación de matrices
  • Es el proceso de juntar matrices pequeñas para generar matrices mayores.
  • El operador de concatenación es el par de corchetes, [ ].
  • Para concatenar, las dimensiones de las matrices componentes deben ser coherentes.
113
Concatenación de matrices
  • Por ejemplo, dada A=[1,2;3,4], la sentencia:
    • B=[A,A*2;A+1,A’]
  • Genera:
    • B =
      • 1   2   2   4
      • 3   4   6   8
      • 2   3   1   3
      • 4   5   2   4
114
Concatenación de matrices
  • Si las dimensiones de las submatrices no son coherentes, ocurre un error. Por ejemplo, si A=[1,2,3] y B=[4;5;6], la sentencia [A,B] produce un error, porque:
115
Concatenación de matrices
  • La operación de concatenación puede realizase tantas veces como se desee, de forma simultánea, dentro de la misma matriz.
  • Por ejemplo, dada la matriz A=[1,2] y B=[3,4,5;6,7,8], el resultado de C=[[A;A],B] es:
    • 1   2   3   4   5
    • 1   2   6   7   8
116
Borrado de filas y columnas
  • Se realiza asignando una matriz vacía.
    • Por ejemplo, sea A=magic(4).
    • Para borrar la segunda columna de A:
      • A(:,2)=[ ]
    • Lo cual genera:
      • X =
        • 16       3      13
        •   5     10        8
        •   9       6      12
        •   4      15       1
117
Borrado de filas y columnas
  • Si se borra un único elemento de una matriz, el resultado dejaría de ser matriz; por lo tanto, operaciones tales como A(1,2)=[ ], resultan en error.
  • Sin embargo, si se utiliza un único puntero, se puede borrar un sólo elemento, o una secuencia de elementos, pero antes la matriz se transforma en un vector fila.
118
Borrado de filas y columnas
  • Por ejemplo, si:




  • La sentencia A(2:2:8)=[ ] resulta en:
    • A =
      • 10   0   1   3   -1
119
Demostración
  • Genere una matriz A de 8x8 tal que su parte superior esté conformada por ceros, y su parte inferior esté conformada por unos.
    • Utilizando concatenación:
      • A=[zeros(4,8);ones(4,8)]
    • Utilizando punteros:
      • A=ones(8)
      • A(1:4,1:8)=0
120
Demostración
  • Escriba una matriz en un archivo de texto, y cárguela en MATLAB con el comando load.
    • Escriba una matriz en un archivo de texto en NOTEPAD, por ejemplo:
      • 16.0    3.0    2.0   13.0
      •   5.0   10.0  11.0    8.0
      •   9.0    6.0    7.0   12.0
      •   4.0   15.0  14.0    1.0
    • Separe los números con espacios o tabulaciones, y escriba cada fila en una nueva línea.
    • Guarde el archivo con el nombre datos.txt, en la carpeta indicada por su instructor.
    • Lea el archivo con el comando load datos.txt.
    • Se creará la variable datos, conteniendo la matriz en cuestión.
121
Demostración
  • Escriba un archivo M que genere una caja mágica de 16x16, pero transpuesta.
    • Escriba en NOTEPAD lo siguiente:
      • magic(16)’
    • Guarde el archivo con el nombre magica_16.m, en la carpeta indicada por su instructor.
    • Ejecute el archivo M con la sentencia magica_16.
122
Demostración
  • Dadas las matrices a=ones(3,1), b=[2,1,5], y c=[3,16,–2;5,27,0], intuya el resultado de la ejecución de las siguientes sentencias. Luego compruebe su respuesta en MATLAB.
    • [ a ; b' ]
    • d = c ( : , [ 1 , 3 ] )
    • e = c ( 1 : 2 : 6 )
    • [ a’ ; [ c ( 2 , : ) ; b ] ; zeros ( 1 , 3 ) ]
123
Introducción a MATLAB
  • Lección 5
  • La ventana de comandos
124
Lección 5: La ventana de comandos
  • Exposición
125
Exposición:
La ventana de comandos
  • Definición
  • El comando format
  • Supresión de salida en pantalla
  • Líneas de comando largas
  • Línea de edición de comandos
126
Definición
  • La ventana de comandos (command window) es la interfaz gráfica que aparece al iniciar MATLAB, y donde se teclean todos los comandos y se despliegan los resultados.
  • Se compone de la línea de edición de comandos, y del historial de comandos.
  • La línea de edición de comandos es la región de la ventana que contiene al indicador del sistema (el símbolo >>, o EDU>>, para la versión de estudiante de MATLAB), y es a donde se digitan las sentencias de código que se desean ejecutar.
127
Definición
  • El historial de comandos está dado por el resto del espacio de la ventana de comandos, y es la región en la que quedan registrados los resultados de las sentencias, y donde se puede ver el listado de secuencias de comandos que se han ejecutado.
128
El comando format
  • Controla el formato numérico de los valores que se despliegan en pantalla.
  • Afecta sólo la visualización de los números, pero no la forma en la que MATLAB los representa internamente para almacenamiento y procesamiento.
129
El comando format
  • Ejemplos de formatos:
    Dado el vector x=[4/3,1.2345e–6], se muestran a continuación algunos de los formatos disponibles con este comando.
    • format short
    •      1.3333     0.0000
    • format short e
    •      1.3333e+000     1.2345e–006
    • format short g
    •      1.3333     1.2345e–006
130
El comando format
    • format long
    •      1.33333333333333     0.00000123450000
    • format long e
    •      1.333333333333333e+00      1.234500000000000e–006
    • format long g
    •      1.33333333333333     1.2345e–006
    • format bank
    •      1.33     0.00
    • format rat
    •      4/3     1/810045
    • format hex
    •      3ff5555555555555     3eb4b6231abfd271
131
El comando format
  • Si el elemento más grande de una matriz es mayor que 103, o menor que 10-3, MATLAB aplica un factor de escala común, si se utiliza las opciones short o long.
  • El comando format compact elimina muchas de las líneas en blanco que aparecen cuando MATLAB despliega los resultados.
132
Supresión de salida en pantalla
  • Si al final de una sentencia se presiona ENTER, MATLAB despliega el resultado en pantalla.
  • Pero si la sentencia se finaliza con un signo de punto y coma, MATLAB ejecuta la sentencia, pero no muestra los resultados en pantalla.
  • Esto es particularmente útil cuando se generan matrices muy grandes.
133
Líneas de comando largas
  • Si la sentencia no cabe en una sóla línea, o si es demasiado larga, se colocan tres puntos (…) seguidos de un ENTER, para indicar que la sentencia continúa en la siguiente línea.
  • Por ejemplo:
    • s = 1 –1/2 + 1/3 –1/4 + 1/5 – 1/6 + 1/7 ...
    • – 1/8 + 1/9 – 1/10 + 1/11 – 1/12;
  • Los espacios en blanco alrededor de los símbolos =, + y – son opcionales, pero ayudan a mejorar la legibilidad de las expresiones.
134
Línea de edición de comandos
  • Se cuenta con varias combinaciones de teclas que permiten reescribir, editar, y reutilizar las sentencias que han sido digitadas recientemente.
  • A continuación se muestra un listado de las combinaciones de teclas para la línea de comandos, y su función.
135
 
136
Introducción a MATLAB
  • Lección 6
  • Gráficos
137
Lección 6: Gráficos
  • Exposición
  • Demostración
  • Práctica
138
Exposición: Gráficos
  • Creación de una gráfica
  • Ventanas de figuras
  • Añadiendo gráficas a un gráfico existente
  • Sub-regiones de graficación
  • Datos imaginarios y complejos
  • Control de ejes
  • Etiquetas de ejes y títulos
  • Gráficos de malla y de superficie
  • Visualización de funciones de dos variables
139
Creación de una gráfica
  • El comando más común para graficar es plot.
  • Si el argumento es un vector, produce una gráfica en dos dimensiones.
    • En el eje vertical se coloca el valor de cada elemento del vector de entrada.
    • En el eje horizontal se coloca la posición de cada elemento del vector de entrada.
    • MATLAB genera automáticamente líneas entre los pares ordenados graficados.
140
Creación de una gráfica
  • Ejemplo:
    • y=[5,-1,10,4,7,0];
    • plot(y)
141
Creación de una gráfica
  • Si se especifican dos argumentos, y ambos son vectores, se produce una gráfica del segundo de ellos, versus el primero.
    • En el eje vertical se colocan los valores de los elementos del segundo vector de entrada.
    • En el eje horizontal se colocan los valores del primer vector de entrada.
142
Creación de una gráfica
  • Ejemplo:
    • t = 0:pi/100:2*pi;
    • y = sin(t);
    • plot(t,y)
143
Creación de una gráfica
  • Se pueden crear múltiples gráficos de pares de vectores, con una sola llamada al comando plot.
  • MATLAB le asigna automáticamente un color diferente a cada gráfica, para poderlas distinguir.
  • La lista de colores puede ser alterada por el usuario.
144
Creación de una gráfica
  • Ejemplo:
    • y2 = sin(t–.25);
    • y3 = sin(t–.5);
    • plot(t,y,t,y2,t,y3)
145
Creación de una gráfica
  • Se puede especificar el color y el tipo de línea y de marcadores, con la sintaxis:
    • plot(x,y,'color_estilo_marcador')
  • Los marcadores son los símbolos con los que MATLAB representa los pares ordenados graficados.
146
Creación de una gráfica
  • El argumento 'color_estilo_marcador' es una cadena de texto de 1, 2 ó 3 caracteres.
  • Las cadenas de caracteres deben encerrarse entre comillas simples ( ' ).
  • Cada carácter del argumento 'color_estilo_marcador' representa un color, un estilo de línea, o un tipo de marcador.
147
Creación de una gráfica
  • Ejemplos de colores:
148
Creación de una gráfica
  • Ejemplos de estilos de línea:
149
Creación de una gráfica
  • Ejemplos de tipos de marcadores:
150
Creación de una gráfica
  • Ejemplo:
    • plot(y,'r:o')
151
Creación de una gráfica
  • Si no se especifica un estilo de línea, pero sí se especifica un tipo de marcador, MATLAB dibuja sólo el marcador.
152
Ventana de figuras
  • El comando plot abre una nueva ventana de figuras automáticamente si no hay ventanas ya abiertas.
  • Si ya hay una ventana de figuras, plot utiliza esa ventana (opción por defecto).
  • Para abrir una nueva ventana de figuras, y convertirla en la ventana activa, se usa el comando figure.
153
Ventana de figuras
  • La ventana activa es la última que tuvo el foco del teclado, o a la última a la que se hizo click con el mouse.
  • Los siguientes gráficos que se generen se graficarán en la ventana de figuras activa.
154
Ventana de figuras
  • Para volver activa una ventana de figuras ya existente:
    • figure(n)
  • Aquí, n es el número de la ventana de figura, el cual aparece en la barra de título de la misma.
155
Añadiendo gráficas a un gráfico existente
  • El comando hold sirve para activar o desactivar el borrado de la ventana de figuras, antes de graficar una nueva figura en la misma ventana.
  • hold on hace que MATLAB grafique la nueva figura "encima" de la que ya se encontraba en esa ventana.
  • Si es necesario, MATLAB reescala el gráfico.
156
Sub-regiones de graficación
  • El comando subplot permite mostrar varias figuras en la misma ventana, pero en diferentes regiones de la misma.
  • Sintaxis:
    • subplot(m,n,p)
157
Sub-regiones de graficación
  • Ejemplo:
    • subplot(2,3,1)
  • Esta secuencia crea una ventana de figuras con seis regiones para graficar, distribuidas en dos filas, y tres columnas. Además, vuelve activa la región 1, de manera que cualquier comando de graficación que se ejecute a continuación dibujará la gráfica en la región 1.
158
Sub-regiones de graficación
159
Datos imaginarios y complejos
  • Si se usa plot con dos argumentos de entrada, y si estos vectores son complejos, la parte imaginaria se ignora.
  • Si se usa plot con sólo un argumento, y si es complejo, se grafica la parte imaginaria versus la parte real del argumento de entrada.
  • Por ejemplo, si Z es un vector complejo, plot(Z) es equivalente a plot(real(Z),imag(Z)).
160
Datos imaginarios y complejos
  • Ejemplo:
    • t = 0:pi/10:2*pi;
    • plot(exp(i*t),'–o')
161
Control de ejes
  • Para controlar las escalas, la orientación y la relación de aspecto de los ejes del gráfico se utiliza el comando axis.
  • Normalmente, MATLAB encuentra el máximo y mínimo de los datos y elige una escala apropiada para mostrar las gráficas.
  • Con el comando axis se pueden establecer escalas personalizadas.
162
Control de ejes
  • Ejemplos de sintaxis del comando axis:
    • axis([xmin xmax ymin ymax])
      • Establece los valores mínimo y máximo de cada eje.
    • axis square
      • Hace que el eje horizontal y vertical tengan la misma longitud.
    • axis equal
      • Hace que la distancia entre dos marcas sucesivas de un eje sea igual que para el otro eje.
163
Control de ejes
    • axis auto
      • Retorna el control de ejes al modo automático.
    • axis on
      • Hace visibles las marcas de los ejes y sus etiquetas.
    • axis off
      • Oculta las marcas de los ejes y sus etiquetas.
    • grid off
      • Oculta la retícula de líneas guía.
    • grid on
      • Hace visible la retícula de líneas guía.
164
Etiquetas de ejes y títulos
  • Etiquetas de los ejes x, y y z: comandos xlabel, ylabel y zlabel.
    • Sintaxis: xlabel( 'etiqueta' )
  • Título del gráfico: comando title.
    • Sintaxis: title( 'título' )
  • Colocación de texto en cualquier parte del gráfico: comando text.
    • Sintaxis: text( coord_x , coord_y , 'texto' )
  • Los comandos de etiquetado, título y texto admiten parcialmente el uso de la notación Tex.
165
Etiquetas de ejes y títulos
  • La notación Tex es un estándar para la representación por computadora de símbolos y expresiones matemáticas.
  • Ejemplo de notación Tex:
166
Etiquetas de ejes y títulos
  • Ejemplo:
    • t = –pi:pi/100:pi;
    • y = sin(t);
    • plot(t,y)
    • axis([–pi pi –1 1])
    • xlabel('–\pi \leq {\itt} \leq \pi')
    • ylabel('sen(t)')
    • title('Gráfica de la función seno')
    • text(1,–1/3,'\it{Simetría impar.}')
167
Etiquetas de ejes y títulos
168
Gráficos de malla y de superficie
  • MATLAB define una superficie a través de coordenadas x, y, y z.
  • El conjunto de coordenadas x e y definen una retícula en el plano x-y.
  • Los valores de z representan la altura de la superficie, para cada punto con coordenadas (x,y).
  • MATLAB conecta los puntos con líneas, para formar una superficie.
169
Gráficos de malla y de superficie
  • Gráficos de malla: función mesh.
    • Produce un enrejado, con líneas que conectan los puntos en direcciones perpendiculares.
  • Gráficos de superficie: función surf.
    • Adicionalmente al enrejado, la función surf colorea la superficie del gráfico, es decir, el espacio que queda entre las líneas del enrejado.
170
 
171
Visualización de funciones de dos variables
  • Una función de dos variables tiene la forma
    • z=f(x,y)
  • Las variables independientes de la función, x e y, son matrices, que contienen las coordenadas de los puntos sobre el plano x-y que forman el dominio de la función.
  • Pueden haber tantos puntos en el plano x-y como se desee.
172
Visualización de funciones de dos variables
  • Por ejemplo, considérese una función que tiene un dominio definido por -5 ≤ x ≤ 5, -3 ≤ y ≤ 3.
  • El dominio de esta función está conformado por una cantidad infinita de puntos en el plano x-y.
  • Sin embargo, MATLAB no puede graficar una cantidad infinita de puntos.
  • Debe especificarse un conjunto finito de puntos para graficar, que pertenezcan al dominio de la función.
173
Visualización de funciones de dos variables
  • A mayor cantidad de puntos especificados, mayor parecido tendrá la gráfica de MATLAB con la gráfica verdadera de la función.
  • Por ejemplo, pueden escogerse todos los puntos del dominio cuyas coordenadas estén separadas una unidad, o sea, x = -5, -4, -3, …, 0, 1, …, 5; así como y = -3, -2, …, 0, 1, …, 3.
174
Visualización de funciones de dos variables
  • En ese caso, el dominio de la función estaría conformado por el siguiente conjunto de puntos:
175
Visualización de funciones de dos variables
  • Por lo tanto, para ejecutar el comando mesh(x,y,z), la matriz x es el conjunto de coordenadas horizontales del enrejado de puntos del plano x-y, mientras que la matriz y es el conjunto de coordenadas verticales.
176
Visualización de funciones de dos variables
  • La matriz z debe poseer un valor por cada posición del enrejado de puntos del plano x-y, el cual representará la altura de la superficie en ese punto.
  • Los elementos de la matriz z se calculan a partir de la función matemática que se quiere graficar, tomando como argumentos a las matrices x e y.
177
Visualización de funciones de dos variables
  • El enrejado de puntos puede construirse fácilmente con el comando meshgrid.
    • [ x , y ] = …
    • meshgrid( x_inicio : x_incremento : x_final ,…
    • y_inicio : y_incremento : y_final )
  • Si sólo se especifica un intervalo, meshgrid asume que el enrejado será cuadrado.
    • [ x , y ] = meshgrid( inicio : incremento : final )
178
Visualización de funciones de dos variables
  • Ejemplo:
    • [X,Y] = meshgrid(–8:.5:8);
    • R = sqrt(X.^2 + …
    •      Y.^2) + eps;
    • Z = sin(R)./R;
    • mesh(X,Y,Z)
179
Demostración
  • Asigne al vector A 100 números aleatorios, cuyo valor oscile entre 0 y 100.
    • A = fix( 100 * rand( 1 , 100 ) ) ;
  • Grafique el vector A del ejercicio anterior.
    • plot( A )
  • Grafique el vector A del ejercicio anterior, pero sin unir con líneas los puntos de la gráfica. Haga la gráfica en una nueva ventana de figuras.
    • figure
    • plot( A , '.' )
180
Demostración
  • Grafique la función tangente, para valores entre –π y π. Haga que los valores del eje horizontal coincidan con los valores de x.
    • x = - pi : 0.1 : pi ;
    • y = tan( x ) ;
    • plot( x , y )
181
Demostración
  • Grafique las funciones seno, coseno y tangente, para el intervalo de –π a π, en la misma ventana de figuras. Utilice sólo una sentencia plot.
    • x = - pi : 0.1 : pi ;
    • y1 = sin( x ) ;
    • y2 = cos( x ) ;
    • y3 = tan( x ) ;
    • plot( x , y1 , x , y2 , x , y3 )
182
Demostración
  • Repita el ejercicio anterior, pero utilizando una sentencia plot por cada gráfica. (Recuerde que las tres gráficas deben estar en la misma ventana de figuras).
    • plot( x , y1 )
    • hold on
    • plot( x , y2 )
    • plot( x , y3 )
183
Demostración
  • Ajuste la gráfica del ejercicio anterior de manera que el rango de visualización del eje horizontal sea de –π a π, y el vertical de 0 a 1.
    • axis( [ - pi , pi , 0 , 1 ] )
  • Repita la gráfica del ejercicio 5, pero especificando colores, estilos de línea y tipos de marcador diferentes para cada gráfica (en la misma ventana de figuras).
    • plot( x , y1 , 'b--+' , x , y2 , 'k:o' , x , y3 , 'g-.x' )
184
Demostración
  • Grafique las funciones del ejercicio 5, y el vector aleatorio del ejercicio 1, en la misma ventana de figuras, pero en diferentes regiones dentro de la ventana, usando dos filas y dos columnas de regiones. Colóquele un título adecuado a cada gráfica.
    • subplot( 2 , 2 , 1 )
    • plot( A )
    • title( 'Vector aleatorio' )
    • subplot( 2 , 2 , 2 )
    • plot( x , y1 )
    • title( 'Función seno' )
    • subplot( 2 , 2 , 3 )
    • plot( x , y2 )
    • title( 'Función coseno' )
    • subplot( 2 , 2 , 4 )
    • plot( x , y3 )
    • title( 'Función tangente' )
185
Demostración
  • Grafique el número complejo 5+4i. Utilice un marcador en forma de círculo pequeño.
    • plot( 5 , 4 , 'o' )
  • Grafique la función
    z = f( x , y ) = sen( x ) + cos( y )  para -π≤x≤π, 2π≤y≤2π. Utilice un gráfico de malla.
    • [ x , y ] = meshgrid( - pi : .1 : pi , - 2 * pi : .1 : 2 * pi ) ;
    • z = sen( x ) + cos( y ) ;
    • mesh( x , y , z )
  • Repita el ejercicio anterior, pero utilizando un gráfico de superficie.
    • surf( x , y , z )
186
Práctica
  • En una ventana de figuras, genere 6 regiones de graficación (2 filas y 3 columnas), y grafique lo que se indica en los numerales 2 al 7.
  • En la región 1, grafique una función lineal de pendiente positiva, de color rojo, y de trazo punteado, pero que los marcadores no se vean sobresaltados en el gráfico. Además, en la misma región, una función lineal, pero de pendiente negativa, de color verde, con trazo de puntos y rayas, y marcadores en forma de cruz. Colóquele una etiqueta a cada gráfica que la identifique.
187
Práctica
  • Considerando que un círculo de radio R y con centro en el origen está formado por puntos con coordenadas x = R*cos(θ), y = R*sen(θ), dibuje, en la región 2 de la ventana de figuras, un círculo de radio 2 con 16 puntos, ubicados equidistantemente cada 45°. Haga los arreglos necesarios con los ejes para que la gráfica no se vea ovalada (se supone que es un círculo).
188
Práctica
  • En la región 3, haga un gráfico de malla de una función de dos variables independientes (diferente de la que se utilizó en la Exposición y Demostración de la lección). Colóquele los nombres a los tres ejes de coordenadas.
  • En la región 4, grafique dos períodos de una función senoidal, y colóqueles dentro del gráfico (y en un lugar apropiado) las etiquetas siguientes: 0, π, 2 π, 3π, 4π.
189
Práctica
  • Deje en blanco la región 5, pero colóquele la retícula, y quítele los ejes vertical y horizontal.
  • En la región 6, dibuje un gráfico de superficie de la función f(x,y)=x+y, para el intervalo de 4≤x≤10, -3≤y≤1. Haga que los valores de los ejes que se visualicen no se salgan de los rangos anteriores.
190
Introducción a MATLAB
  • Lección 7
  • Ayuda y documentación en línea
191
Lección 7: Ayuda y documentación en línea
  • Exposición
192
Exposición: Ayuda y documentación en línea
  • El comando help
  • La ventana de ayuda
  • El comando lookfor
  • El centro de ayuda
  • El comando doc
  • Impresión de la ayuda de MATLAB
  • Vínculo al sitio de MathWorks
193
El comando help
  • Es la forma más común de encontrar información acerca de la sintaxis y el comportamiento de algún comando de MATLAB.
  • Sintaxis: help nombre_de_función
194
El comando help
  • Ejemplo:
    • help magic
  • Produce:
195
El comando help
  • Todo el sistema de ayuda de MATLAB está disponible en inglés y en japonés.
  • En el texto de ayuda, MATLAB utiliza letras mayúsculas para los nombres de funciones y de variables, para resaltarlos del resto del texto. Sin embargo, al usar las funciones, deben usarse letras minúsculas.
196
El comando help
  • Todas las funciones de MATLAB están organizadas en grupos lógicos, y el sistema de directorios de MATLAB está basado en dicha estructura.
  • Se puede obtener un listado de todas las funciones de un directorio de MATLAB, así como una breve descripción de las mismas, con el comando help nombre_del_directorio.
197
El comando help
  • Ejemplo:
    • help matfun
  • Produce:
198
El comando help
  • help, sin argumentos, devuelve un listado de todos los directorios, con la descripción del tipo de funciones que almacena.
199
La ventana de ayuda
  • Proporciona la misma ayuda que la que se encuentra disponible en la ventana de comandos a través del comando help, pero provee vínculos hacia otros temas de ayuda.
  • Se accede desde el menú Help, o tecleando helpwin.
200
La ventana de ayuda
  • Para abrir la ventana de ayuda mostrando información acerca de algún tema en particular: helpwin tema.
  • Ejemplo: helpwin colon operator
201
El comando lookfor
  • Permite buscar la ayuda de los comandos por medio de una palabra clave.
  • La búsqueda se realiza en la primera línea de ayuda de todos los comandos (conocida como H1).
202
El comando lookfor
  • Devuelve todas las líneas H1 de ayuda que contienen la palabra clave solicitada.
  • Ejemplo:
    • MATLAB no tiene un comando que se llame inverse. Por lo tanto,
      • help inverse
    • Devuelve:
      • inverse.m not found.
203
El comando lookfor
    • Sin embargo, lookfor inverse devuelve una serie de comandos cuya línea de ayuda H1 contiene la palabra "inverse".
  • Si al comando se le agrega la opción -all, lookfor busca en todo el texto de ayuda, y no sólo en la línea H1.
    • Ejemplo: lookfor –all inverse
204
El comando lookfor
  • Para detener la búsqueda, se ocupa la combinación de teclas Ctrl+C.
205
El Centro de Ayuda
  • El término en inglés es Help Desk.
  • Proporciona toda una gama de información sobre el uso de MATLAB, a través de documentos HTML que se muestran en el explorador de Internet predeterminado de la PC.
  • Se accede por medio del menú Help, o con el comando helpdesk.
206
El comando doc
  • Sirve para ver la documentación de un comando particular, en formato HTML en el explorador Web predeterminado.
  • Ejemplo: para buscar información acerca de la función eval:
    • doc eval
207
Impresión de la ayuda de MATLAB
  • Toda la documentación de MATLAB disponible con el producto se encuentra además en formato PDF.
208
Vínculo al sitio de MathWorks
  • Con el Help Desk se puede acceder al sitio de MathWorks, y a toda la variedad de recursos e información que se encuentra en ese sitio.
209
Introducción a MATLAB
  • Lección 8
  • El entorno de MATLAB
210
Lección 8: El entorno de MATLAB
  • Exposición
  • Demostración
211
Exposición:
El entorno de MATLAB
  • El espacio de trabajo (Workspace)
  • El comando save
  • La ruta de búsqueda (Search Patch)
  • Manipulación de archivos de disco
  • El comando diary
  • Ejecución de programas externos
212
El espacio de trabajo (Workspace)
  • Es el área de memoria accesible desde la línea de comandos de MATLAB.
  • Todas las variables que se crean están almacenadas en el Workspace.
  • Para conocer las variables que se encuentran en el Workspace, se utilizan los comandos who y whos.
213
El espacio de trabajo (Workspace)
  • El comando who devuelve sólo la lista de variables.
  • El comando whos devuelve además información sobre cada variable, como el tamaño, la cantidad de bytes utilizada para almacenar cada variable, y el tipo o "clase" de variable de que se trata.
214
El espacio de trabajo (Workspace)
  • Si estos comandos no devuelven nada, se debe a que no se ha creado ninguna variable.
  • Para borrar todas las variables del Workspace, se utiliza el comando clear.
  • Para borrar sólo algunas variables, se utiliza la opción clear nombre_de_variable_1, nombre_de_variable_2, … etc.
215
El comando save
  • Sirve para guardar el contenido del Workspace en un archivo de extensión .mat.
  • Los archivos .mat se pueden leer luego con el comando load.
  • Se puede especificar cuáles variables se desea guardar, si se escriben los nombres de las variables a continuación del comando save.
216
El comando save
  • Por omisión, save guarda las variables en un archivo binario (que no puede ser entendido por otras aplicaciones fuera de MATLAB).
  • Si se quiere que los archivos .mat de sesión puedan abrirse desde fuera de MATLAB, se pueden especificar algunas opciones al comando, como las siguientes:
217
El comando save
218
El comando save
  • Cuando se guardan las variables con formato de texto, se debe guardar sólo una variable cada vez.
  • Si se guarda más de una variable simultáneamente, MATLAB generará el archivo .mat, pero no podrá ser cargado de nuevo con el comando load.
219
La ruta de búsqueda (Search Path)
  • Es el conjunto de directorios en los que MATLAB busca, de forma ordenada, los comandos digitados en la línea de comandos.
  • MATLAB ejecuta el primer archivo cuyo nombre coincide con el comando digitado.
  • Este comportamiento por defecto puede ser alterado, utilizando directorios privados y subfunciones.
220
La ruta de búsqueda (Search Path)
  • El comando path muestra la ruta de búsqueda de MATLAB.
  • Se puede agregar o modificar la ruta de búsqueda por medio de la opción Set Path del menú File.
221
Manipulación de archivos de disco
  • A continuación se muestran algunos comandos que sirven para manipular archivos con MATLAB, y su contraparte con comandos de DOS.
222
Manipulación de archivos de disco
  • La mayoría de estos comandos acepta el uso de rutas (URL's de archivos), caracteres comodín, y designadores de unidades de disco de la misma manera como se utilizan en DOS.
223
El comando diary
  • Sirve para crear un archivo de texto que contenga el registro de todo lo que se digitó en la línea de comandos, durante una sesión de MATLAB.
  • Dicho archivo contiene además todos los resultados que MATLAB imprimió en pantalla durante la sesión, exceptuando los gráficos.
224
El comando diary
  • Sintaxis:
    • diary
      • Inicia la grabación en el archivo de texto de nombre diary.
    • diary nombre_de_archivo
      • Permite especificar un nombre diferente de diary para el archivo de registro.
    • diary off
      • Suspende la grabación de sentencias en el archivo de registro.
225
Ejecución de programas externos
  • Para ejecutar programas externos, como si se hiciera desde la línea de comandos de DOS, se utiliza el carácter de cierre de admiración (!)
  • El carácter ! implica que el resto de la sentencia es un comando para que sea ejecutado por el sistema operativo.
226
Ejecución de programas externos
  • El control del programa regresa a MATLAB cuando el programa externo ejecutado termina.
  • Por ejemplo, !notepad
227
Demostración
  • Guarde todo el trabajo posterior que realice en esta demostración en un archivo de texto de nombre hoy.txt, con el comando diary.
    • diary hoy.txt
228
Demostración
  • Limpie el Workspace, y genere cinco variables. Despliegue el listado de las mismas en pantalla, así como alguna información de cada una de ellas.
    • clear
    • a = 1 ;
    • b = [ 1 , 2 ] ;
    • c = 4 + 5i ;
    • d = 20e15 ;
    • e = -1 ;
    • whos
229
Demostración
  • Guarde las variables del ejercicio anterior en un archivo llamado de igual forma que su número de carné. Luego borre el Workspace y cargue las variables de nuevo. Constate que las variables han sido cargadas satisfactoriamente.
    • save LS970081
    • clear
    • load LS970081
230
Demostración
  • Limpie el Workspace y genere una matriz aleatoria de 4 filas y 5 columnas. Luego guárdela en cinco archivos de texto, utilizando para ello cada una de las opciones del comando save que se estudiaron. A continuación, abra los archivos desde fuera de MATLAB con NOTEPAD, y observe las diferencias entre ellos.
    • clear
    • m = rand( 4 , 5 ) ;
    • save -ascii LS970081_1.txt
    • save -ascii -double LS970081_2.txt
    • save -ascii -double -tabs LS970081_3.txt
    • save -v4 LS970081_4.txt
    • save -append LS970081_5.txt
    • (abrir archivos desde fuera de MATLAB y observar diferencias)
231
Demostración
  • Cree una carpeta en C:/ y agréguela al Search Path de MATLAB.
    • (a través del menú)
  • Borre uno de los archivos de sesión que creó en los ejercicios anteriores, utilizando el comando delete.
    • delete LS970081_1.txt
232
Demostración
  • Desactive el comando diary que inició en el ejercicio 1.
    • diary off
  • Utilice el comando type para desplegar en pantalla el contenido del archivo de registro que creó en el ejercicio 1, y que guardó todo lo que realizó en esta Demostración.
    • type hoy.txt
233
Demostración
  • Utilice el comando de escape al sistema operativo para ejecutar NOTEPAD, y abrir el archivo de registro que creó en el ejercicio 1.
    • !notepad.exe "hoy.txt"
234
Introducción a MATLAB
  • Lección 9
  • Operaciones con matrices y arreglos
235
Lección 9: Operaciones con matrices y arreglos
  • Exposición
  • Demostración
  • Práctica
236
Exposición:
Operaciones con matrices y arreglos
  • Álgebra lineal
  • Arreglos
  • Escalares
  • Expresiones lógicas
  • Punteros lógicos
  • La función find
237
Álgebra lineal
  • Definición
  • Matriz cuadrada
  • Matriz simétrica
  • Multiplicación
  • Determinantes
  • Matriz singular
  • Matriz identidad
  • Matriz inversa
238
Definición
  • El conjunto de operaciones matemáticas matriciales forman parte del álgebra lineal.
239
Matriz cuadrada
  • Es una matriz que tiene igual número de filas y de columnas.
  • Por ejemplo:
    • A = ones( 3 )
    • ans =
    •       1     1     1
    •       1     1     1
    •       1     1     1
240
Matriz simétrica
  • Es el resultado de sumar una matriz con su transpuesta.
  • Ejemplo:
    • A = magic( 4 ) ;
    • A + A’
    • ans =
    •       32     8     11     17
    •         8   20     17     23
    •       11   17     14     26
    •       17   23     26       2
241
Multiplicación matricial
  • El número de columnas de la primera matriz debe ser igual al número de filas de la segunda matriz.
  • El resultado tiene el número de filas de la primera matriz, y el número de columnas de la segunda.
  • Por ejemplo, si A es de 2x3, y B es de 3x4, el resultado de A*B es de 2x4.
242
Multiplicación matricial
  • La multiplicación se realiza de la siguiente manera:
243
Multiplicación matricial
  • Se realiza con el operador *
244
Determinantes
  • Se realiza con el comando det.
  • Para obtener el determinante, la matriz debe ser cuadrada.
  • El resultado es un escalar.
  • Ejemplo
    • A = [ 1   -2   3 ; -4   5  -6 ; 7   8   -9 ] ;
    • det( A )
    • ans =
    •        -42
245
Matriz singular
  • Es una matriz cuya determinante es cero.
  • Ejemplo:
    • det( magic( 4 ) )
    • ans =
    •        0
246
Matriz identidad
  • Es una matriz cuadrada cuyos elementos son todos iguales a cero, excepto los que están ubicados en la diagonal principal, que son iguales a 1.
  • Las matrices identidad se generan con el comando eye.
  • Ejemplo:
    • eye( 3 )
    • ans =
    •        1   0   0
    •        0   1   0
    •        0   0   1
247
Matriz inversa
  • Al multiplicar una matriz por su matriz inversa, el resultado es una matriz identidad.
  • Para calcular la inversa de una matriz, ésta debe ser cuadrada.
  • La inversa de una matriz se encuentra con el comando inv.
248
Matriz inversa
  • Ejemplo:
    • A = [ 1   2 ; 4   5 ] ;
    • B = inv( A ) ;
    • A * B
    • ans =
    •        1     0
    •        0     1
249
Arreglos
  • Una matriz es un arreglo numérico de dos dimensiones que representa una transformación lineal.
  • Un arreglo es cualquier conjunto ordenado de objetos (entre ellos, números), de cualquier dimensión.
  • Un arreglo numérico de dos dimensiones es exactamente igual a una matriz, excepto porque las operaciones aritméticas con arreglos se realizan elemento por elemento, en lugar de someterse a las reglas del álgebra lineal.
250
Arreglos
  • Para las operaciones con arreglos, los operandos deben tener las mismas dimensiones.
  • La suma y la resta se realizan de igual forma para los arreglos numéricos bidimensionales y para las matrices.
  • Sin embargo, la multiplicación matricial es diferente que la multiplicación de arreglos.
  • La multiplicación de arreglos se realiza elemento por elemento.
251
Arreglos
  • Ejemplo:
252
Arreglos
  • Para diferenciar las operaciones del álgebra lineal de las operaciones con arreglos, al operador se le coloca un punto a la izquierda.
  • A continuación se muestra un listado de las operaciones comunes con arreglos.
253
Arreglos
254
Arreglos
  • Las operaciones con arreglos son útiles para la generación de tablas.
    • Ejemplo: Dado el vector n = ( 0 : 3 )’, se puede crear una tabla de n2, y de 2n, con la siguiente sentencia:
      • [ n , n.^2 , 2.^n ]
    • Lo cual genera:
      •  0     0     1
      •  1     1     2
      •  2     4     4
      •  3     9     8
255
Arreglos
  • Las funciones matemáticas elementales trabajan con arreglos, aplicando la función elemento por elemento, y devolviendo un arreglo de resultados, de las mismas dimensiones que el arreglo de entrada.
256
Arreglos
  • Ejemplo: Para construir una tabla de logaritmos:
    • format short g
    • x = ( 1 : 0.2 : 2 )’ ;
    • logs = [x , log10(x)]
257
Escalares
  • Un escalar es un arreglo de dimensión 1x1.
  • Las operaciones con arreglos se pueden aplicar a escalares, o a un arreglo con un escalar.
  • Ejemplo: Si A = [ 2 , 4 ; 6 , 8 ], la sentencia
    • A – 2
  • Produce:
    • 0     2
    • 4     6
258
Escalares
  • Se puede reemplazar el contenido de una región rectangular de un arreglo por un escalar.
  • Ejemplo: Si A = ones( 4 ), la sentencia:
    • A( 1 : 2 , 3 : 4 ) = 4
  • Produce:
    •  1     1     4     4
    •  1     1     4     4
    •  1     1     1     1
    •  1     1     1     1
259
Expresiones lógicas
  • Definiciones
  • Operadores
  • Funciones
260
Definiciones
  • Las expresiones lógicas son un conjunto coherente de operadores, funciones y operandos que devuelven un resultado de tipo lógico al ser evaluados.
  • El resultado de las expresiones lógicas puede ser verdadero o falso.
  • El valor de verdadero es cualquier número diferente de cero.
  • El valor de falso es el cero.
261
Operadores
  • Los operadores son símbolos que representan a una operación que se realiza a uno o dos argumentos, llamados operandos.
  • La sintaxis general de los operadores es la siguiente:
    • Para operaciones que aceptan sólo un operando:
      • operador operando
    • Para operaciones que aceptan dos operandos:
      • operando_1 operador operando_2
262
Operadores
  • Los operadores pueden aplicarse entre dos operandos de los siguientes tipos:
    • Dos escalares devuelven un escalar.
    • Dos arreglos del mismo tamaño devuelven un arreglo de resultados. La operación se realiza elemento por elemento.
    • Dos arreglos de diferente tamaño producen un error.
    • Un arreglo y un escalar devuelven un arreglo del mismo tamaño que el arreglo de entrada. La operación se realiza entre cada elemento del arreglo y el escalar.
263
Operadores
  • Los operadores que pueden ser utilizados son de tres tipos:
    • Aritméticos
    • Relacionales
    • Lógicos
264
Operadores aritméticos
265
Operadores relacionales
266
Operadores relacionales
  • Ejemplo:
    • 1 == 2
  • Produce:
    • 0
  • Por otro lado:
    • 1 < 2
  • Produce:
    • 1
267
Operadores relacionales
  • Ejemplo: Si A = [ 1 , 2 ; 3 , 4 ] y
    B = [ 2 , 4 ; 0 , 5 ], entonces la operación:
    • A <= B
  • Produce:
    • 1     1
    • 0     1
268
Operadores relacionales
  • Ejemplo: Si A = [ 1 , 2 ; 3 , 4 ] y B = 2.5, entonces la operación A > B produce:
    • 0     0
    • 1     1
269
Operadores lógicos
270
Operadores lógicos
  • La operación AND devuelve un resultado verdadero (uno) si ambos operandos son verdaderos. De lo contrario, devuelve un resultado falso.
  • La operación OR devuelve un resultado verdadero si al menos uno de los operandos es verdadero. De lo contrario, devuelve un resultado falso.
  • La operación NOT devuelve un resultado contrario al operando. Si el operando es verdadero, devuelve un resultado falso, y viceversa.
271
Operadores lógicos
  • Ejemplo: Si A = [ 1 , 0 ; 3 , 0 ] y B = [ 0 , -2 ; 4 , 0 ], la operación A & B devuelve:
    • 0     0
    • 1     0
  • Por otro lado, la operación A | B devuelve:
    • 1     1
    • 1     0
272
Funciones
  • Las funciones son el conjunto de reglas por las que se asigna un valor de salida, a uno o varios valores de entrada.
  • Los valores de entrada de la función se denominan argumentos.
  • La sintaxis general de las funciones es la siguiente:
    • variable_de_salida = nombre_de_función( argumento_1 , argumento_2 , ... , argumento_n )
273
Funciones
  • El comportamiento de las funciones depende de la cantidad y tipo de argumentos de entrada y de salida para las que han sido diseñadas.
274
Funciones
  • A continuación se resume el comportamiento general para funciones de una entrada y una salida:
    • Si la entrada es escalar, la función se aplica sólo a ese número.
    • Si la entrada es vector, todos sus elementos participan para la generación de la salida de la función.
    • Si la entrada es matriz, se aplica la función a cada vector columna de la misma. Se devuelve un vector fila de resultados.
275
Funciones
  • Para funciones de dos argumentos de entrada, el comportamiento general es el siguiente:
    • Si las entradas son ambas escalares, se aplica la función utilizando ambos argumentos.
    • Si ambas entradas son arreglos, del mismo tamaño, se aplica la función a cada pareja de elementos, tomando un elemento de un arreglo, y un elemento del otro. El resultado se devuelve en un arreglo del mismo tamaño.
    • Si un argumento es escalar y el otro es un arreglo, se aplica la función tomando cada elemento del arreglo con el mismo escalar. El resultado es un arreglo de las mismas dimensiones que el arreglo de entrada.
276
Funciones
  • MATLAB cuenta con los siguientes tipos de funciones:
    • Funciones matemáticas
    • Funciones lógicas
    • Funciones del lenguaje de programación
277
Funciones matemáticas
  • MATLAB cuenta con una gran variedad de funciones matemáticas elementales, especializadas, matriciales, de análisis de datos, de interpolación y polinomios, y de cálculo diferencial e integral.
  • Un listado completo de las funciones matemáticas de MATLAB se puede obtener con el comando help.
278
Funciones matemáticas
279
Funciones lógicas
280
Funciones lógicas
  • Ejemplos:
    • u = [0 1 2 0];
    • all(u)
    • ans =
    •        0
    • A = [0 1 2;3 5 0];
    • all(A)
    • ans =
    •        0 1 0
281
Funciones lógicas
  • Existen más funciones lógicas de MATLAB, cuyo listado puede accederse en el directorio ops de la ayuda (help ops).
282
Funciones del lenguaje de programación
  • Son funciones de MATLAB que realizan una variedad de tareas. Se distinguen los siguientes tipos:
    • Funciones en archivos M: Son archivos de texto en los que se escriben todas las sentencias de código que se desean ejecutar. Son editables, y hay de dos tipos:
      • Funciones de MATLAB (que vienen con el producto)
      • Funciones de usuario
    • Funciones integradas (o built-in): Son archivos binarios no editables, pero que se ejecutan más rápidamente.
283
Punteros lógicos
  • Son matrices que han resultado de la evaluación de una expresión lógica.
  • Están formados solamente por unos y ceros.
  • Son de tipo logical.
  • Ejemplo: Si A = [ 1 , 0 , - 2 ; 4 , 7 , 3 ], la secuencia:
    • A > -1 & A < 4
  • Produce:
    • 1     1     0
    • 0     0     1
284
Punteros lógicos
  • Los punteros sirven para hacer referencia a los elementos de un arreglo (igual que los punteros normales).
  • La diferencia es que el valor de los punteros no es una posición en un arreglo (el valor sólo puede ser 1 ó 0).
  • La posición de los elementos que se quieren referenciar es la misma que la de los punteros verdaderos (con valor de 1).
285
Punteros lógicos
  • Ejemplo: Dado el arreglo:
    • A = [ 1 , 0 , - 2 ; 4 , 7 , 3 ]
    • Si se quiere acceder a los elementos de A comprendidos entre -1 y 4, se puede utilizar la sentencia:
    • A( A > -1 & A < 4 )
    • ans =
    •       1
    •       0
    •       3
286
Punteros lógicos
    • Dichos elementos se pueden borrar, con:
    • A( A > -1 & A < 4 ) = [ ]
    • A =
    •     4     7     -2
    • O se pueden cambiar a otro valor, con:
    • A( A > -1 & A < 4 ) = 100
    • A =
    •    100   100     -2
    •        4      7   100
287
La función find
  • Determina las ubicaciones de los elementos de un arreglo que satisfacen alguna condición lógica especificada.
  • Devuelve un vector columna de punteros de tipo único.
288
La función find
  • Por ejemplo, si:
    • A = [ 1 , 0 , - 2 ; 4 , 7 , 3 ]
    • A =
    •     1     0     -2
    •     4     7      3
    • La secuencia find( A < 2 ) devuelve:
    • ans =
    •      1
    •      3
    •      5
    • Eso indica que en la posición 1, 3 y 5 (en orden de columna) del arreglo A se encuentran elementos que son menores que 2.
289
Demostración
  • Compruebe que la multiplicación de una matriz cuadrada con la transpuesta de sí misma da como resultado una matriz simétrica.
    • A = [ 3 , 5 ; -1 , -2 ] ;
    • A * A’
    • ans =
    •       34   -13
    •      -13      5
290
Demostración
  • Demuestre que la matriz de Dürer es singular.
    • a = magic( 4 ) ;
    • det( a )
    • ans =
    •        0
291
Demostración
  • Dada la matriz a = [ -1 , 4 ; 3 , -2 ], demuestre que la multiplicación de a por su inversa es igual a la matriz identidad.
    • a = [ -1 , 4 ; 3 , -2 ]
    • a * inv( a )
    • ans =
    •        1     0
    •        0     1
292
Demostración
  • Dada la matriz a = [ 1 , 2 , 3 ; 4 , 5 , 6 ] y la matriz b = [ 3 ; -1 ; 0 ], realice la multiplicación matricial siguiendo la definición, utilizando para ello una sola sentencia. Luego realice la multiplicación por medio del operador de MATLAB, y compare los resultados obtenidos.
    • a = [ 1 , 2 , 3 ; 4 , 5 , 6 ] ;
    • b = [ 3 ; -1 ; 0 ] ;
    • c1 = [ a( 1 , 1 ) * b( 1 ) + a( 1 , 2 ) * b( 2 ) + a( 1 , 3 ) * b( 3 ) ; ...
    •      a( 2 , 1 ) * b( 1 ) + a( 2 , 2 ) * b( 2 ) + a( 2 , 3 ) * b( 3 ) ] ;
    • c2 = a * b ;
    • c1 == c2
    • ans =
    •        1
    •        1
293
Demostración
  • Utilice operaciones de arreglos para hacer una tabla que contenga lo siguiente:
    • Una columna de los números pares, desde 2 hasta 20.
    • Una columna con el logaritmo natural de esos números.
    • Una columna con el cuadrado de esos números.
294
Demostración
  • n = ( 2 : 2 : 20 )’ ;
  • tabla = [ n , log( n ) , n.^2 ]
295
Demostración
  • Dada la matriz tabla del ejercicio anterior, genere una matriz tabla2, que sea igual a tabla, excepto por lo siguiente:
    • Reemplace todos los números de la primera columna, ubicados desde la fila 6 a la 10, por el número cero.
      • tabla2 = tabla ;
      • tabla2( 6 : 10 ) = 0
296
Demostración
    • Reemplace por el número -1 todos los elementos de la tabla que sean mayores o iguales que 2 y menores que 2.5.
      • tabla2( find( tabla2 >= 2 & tabla2 < 2.5 ) ) = -1
    • Reemplace por el número -2 todos los elementos de la tabla cuyo cuadrado sea mayor que 1000.
      • tabla2( find( tabla2.^2 > 1000 ) ) = -2
297
Práctica
  • El archivo notas.txt, que le  proporcionará su instructor, contiene un vector columna de las notas de un curso de 40 estudiantes. La posición de fila de cada nota corresponde al número de lista de cada alumno. Con respecto a este archivo, realice lo siguiente:
  • Guarde todo su trabajo de esta práctica en un archivo de texto.
    Sugerencia: Utilice el comando diary.
298
Práctica
  • Cargue el archivo notas.txt a una variable en MATLAB llamada notas.
    Sugerencia: Utilice el comando load.
  • Asigne al vector aprobados todos los elementos del vector notas que sean mayores o iguales a 6.0.
299
Práctica
  • Asigne al vector reprobados todos los elementos del vector notas que sean menores que 6.0.
  • Agregue una columna al vector notas que contenga un 1 si la nota está aprobada, y un 0 si está reprobada.
300
Práctica
  • Utilice operaciones de arreglos para calcular la nota promedio de los alumnos aprobados y de los reprobados.
301
Introducción a MATLAB
  • Lección 10
  • Control de flujo
302
Lección 10: Control de flujo
  • Exposición
  • Demostración
303
Exposición:
Control de flujo
  • MATLAB cuenta con cinco estructuras de control de flujo:
    • Sentencias if
    • Sentencias switch-case
    • Lazos for
    • Lazos while
    • Sentencias break
304
Sentencias if
  • Evalúa una expresión lógica y ejecuta un grupo de sentencias si la expresión es verdadera.
  • Se pueden utilizar las palabras clave opcionales else y elseif, para ejecutar grupos de sentencias alternativas.
  • Se utiliza la palabra clave end al final de la estructura if.
305
Sentencias if
  • Sintaxis:
    • if expresión lógica
    •      sentencias si es verdadera
    • elseif expresión lógica
    •      sentencias si es verdadera
    • else
    •      sentencias si es falsa
    • end
306
Sentencias if
  • Si la expresión lógica de if es una matriz, se dice que el resultado es verdadero si TODOS los elementos de la matriz resultante son verdaderos.
  • Para comprobar si dos variables son iguales es preferible usar el comando isequal, porque si se usa el operador ==, se producirá un error si los arreglos no son del mismo tamaño.
307
Sentencias if
  • Otras funciones útiles para utilizar en conjunción con if son:
    • isempty: Indica si su argumento es un arreglo vacío.
    • all: Devuelve verdadero si todos los elementos de un arreglo son verdaderos.
    • any: Devuelve verdadero si al menos un elemento de un arreglo es verdadero.
308
Sentencias switch y case
  • Sirven para seleccionar un grupo de sentencias que se desea ejecutar, dependiendo del valor de una expresión o variable.
  • Las palabras clave case y otherwise (opcional) delimitan los grupos de sentencias.
  • Al ejecutarse el primer bloque de sentencias cuya expresión devuelva un valor igual que el de la expresión de prueba, se termina la ejecución de switch.
309
Sentencias switch y case
  • Sintaxis:
    • switch expresión
    •      case expresión_1
    •             sentencias
    •      case expresión_2
    •             sentencias
    •      otherwise
    •             sentencias
    • end
310
Sentencias switch y case
  • Se ejecutan las sentencias correspondientes al bloque case cuya expresión devuelve el mismo valor que la expresión que acompaña a switch.
  • Las sentencias del bloque otherwise se ejecutan si ninguno de los bloques case se ejecutó.
  • El uso de otherwise es opcional.
  • Las expresiones usadas con switch y case deben ser escalares o cadenas.
311
Lazos for
  • Repite un conjunto de sentencias un número de veces predeterminado.
  • Sintaxis:
    • for variable = valores
    •       sentencias
    • end
312
Lazos for
  • valores puede ser un vector, o una matriz.
  • Si es un vector, por cada vez que se repita el bucle la variable toma uno de los valores del vector.
    • Por ejemplo, en for i = [ 2 , 4 , -1 , 0 ], el bucle se ejecutará 4 veces, porque el vector tiene cuatro elementos. La primera vez, la variable i valdrá 2; la segunda vez, 4; la tercera vez, -1; y la cuarta vez, 0.
313
Lazos for
  • Generalmente, el vector de valores que tomará la variable se construye con el operador dos puntos, de la siguiente manera:
    • for i = inicio : incremento : final
    • Por ejemplo, for i = 10:-1:2, se ejecutará 9 veces. La primera vez, la variable i valdrá 10, y la última vez valdrá 2. Cada vez que se ejecute el bucle, la variable se decrementará una unidad.
    • Recuérdese que si no se especifica el incremento con el operador dos puntos, se asume la unidad.
314
Lazos for
  • En lugar de un vector de valores, se puede usar una matriz con la sentencia for.
  • El bucle se ejecutará tantas veces como columnas tenga dicha matriz.
  • Cada vez que se ejecute el bucle, la variable tomará el valor de una de las columnas de la matriz.
315
Lazos for
  • Por ejemplo, for i = [ 1 , 2 ; 3 , 4 ; 5 , 6 ], se ejecutará dos veces, porque la matriz tiene dos columnas.
  • La primera vez, la variable i será igual al vector columna [ 1 ; 3 ; 5 ]. La segunda vez, será igual al vector columna [ 2 ; 4 ; 6 ].
316
Lazos while
  • Repite un conjunto de sentencias un número indeterminado de veces, hasta que una condición se deje de cumplir.
  • Sintaxis:
    • while expresión lógica
    •          sentencias
    • end
317
Sentencias break
  • Sirve para terminar prematuramente un bucle for o while.
  • Si hay bucles anidados, break sólo se sale del bucle desde donde se ejecutó.
318
Demostración
  • Escriba las sentencias necesarias para multiplicar dos arreglos, a y b (del mismo tamaño), sin utilizar el operador .* de MATLAB, y utilizando para ello lazos for. Devuelva el resultado en la variable d.
    • [ nfilas , ncolumnas ] = size( a ) ;
    • for f = 1 : nfilas
    •      for c = 1 : ncolumnas
    •           d( f , c ) = a( f , c ) * b( f , c ) ;
    •       end
    • end
319
Demostración
  • Repita el ejercicio anterior, pero utilizando sólo bucles while.
    • [ nfilas , ncolumnas ] = size( a ) ;
    • f = 1 ; c = 1 ;
    • while f <= nfilas
    •          while c <= ncolumnas
    •                   d( f , c ) = a( f , c ) * b( f , c ) ;
    •                   c = c + 1 ;
    •           end
    •           c=1;
    •           f = f + 1 ;
    • end
320
Demostración
  • Utilizando la sentencia if, escriba un programa para ordenar el vector v, de dos elementos, de forma descendente, y guardar el resultado en el vector w. Si los elementos de v son iguales, que se despliegue un mensaje de advertencia en pantalla.
    • if v( 1 ) > v( 2 )
    •    w = v ;
    • elseif v( 1 ) < v( 2 )
    •    w = [ v( 2 ) , v( 1 ) ] ;
    • else
    •    disp('Los elementos del vector son iguales')
    • end
321
Demostración
  • Repita el ejercicio anterior, pero utilizando solamente la instrucción switch.
    • m = max( v( 1 ) , v( 2 ) ) ;
    • switch m
    •             case v( 1 )
    •                      w = v ;
    •             case v( 2 )
    •                      w = [ v( 2 ) , v( 1 ) ] ;
    • end
322
Introducción a MATLAB
  • Lección 11
  • Otras estructuras de datos
323
Lección 11:
Otras estructuras de datos
  • Exposición
  • Demostración
324
Exposición:
Otras estructuras de datos
  • Arreglos multidimensionales
  • Arreglos de celdas
  • Cadenas de caracteres
  • Estructuras
325
Arreglos multidimensionales
  • Son los arreglos con más de dos punteros.
  • Por ejemplo, para arreglos de tres dimensiones, el primer puntero es la posición de fila; el segundo es la posición de columna, y el tercero es la posición de página.
326
Arreglos multidimensionales
327
Arreglos multidimensionales
  • Para acceder a páginas completas de un arreglo tridimensional se puede usar el operador dos puntos.
  • Por ejemplo, para acceder a la tercera página de A:
    • A( : , : , 3 )
328
Arreglos multidimensionales
  • Las funciones de MATLAB que crean arreglos bidimensionales pueden crear arreglos multidimensionales, agregándoles la cantidad de argumentos necesaria.
  • Por ejemplo, para crear un arreglo de ceros, de 3 dimensiones, de tamaño 3x4x2:
    • zeros( 3 , 4 , 2 )
329
Arreglos de celdas
  • Son arreglos formados por celdas.
  • Cada celda puede contener cualquier tipo de dato de MATLAB, por ejemplo, un número, una matriz, un arreglo multidimensional, una cadena de caracteres, otro arreglo de celdas, una estructura, etc.
  • Pueden contener en cada celda elementos de diferente tamaño.
  • Se definen igual que los arreglos numéricos, excepto que se usan llaves { } en lugar de corchetes [ ].
330
Arreglos de celdas
  • Por ejemplo, si A = magic( 4 ), la sentencia:
    • C = { A , sum( A ) , prod( prod( A ) ) }
  • produce un arreglo de celdas de 1x3 (una fila, tres columnas.
    • El primer elemento, ubicado en la posición C{ 1 , 1 }, es la matriz A de 4x4.
    • El segundo elemento, C{ 1 , 2 } (o simplemente C{ 2 } es un vector fila de 4 elementos (la suma de cada columna de A).
    • El tercer elemento, C{ 3 }, es un escalar (el resultado de multiplicar todos los elementos de A).
331
Arreglos de celdas
  • En la ventana de comandos, el arreglo C luce de la siguiente manera:
    • C =
    • [4x4 double] [1x4 double] [20922789888000]
  • Los primeros dos elementos son muy grandes para representarlos en una línea, por lo que se muestra sólo su tamaño.
332
Cadenas de caracteres
  • El texto, en MATLAB, se ingresa encerrándolo entre comillas simples ( ' ). [No confundir con el apóstrofe].
  • Las cadenas de caracteres son arreglos. Cada carácter es una posición del arreglo.
  • Por ejemplo:
    • c = 'hola'
  • es un arreglo de 1 fila y 4 columnas (cuatro letras).
  • Los caracteres se almacenan por medio de su código ASCII.
333
Cadenas de caracteres
  • Para transformar las cadenas en vectores numéricos de códigos ASCII, se utiliza la función double.
  • Por ejemplo, a = double( c ), devuelve:
    • a =
    •    104   111   108    97
  • Lo que significa que el código ASCII de la letra h es 104; el de la o es 111; etc.
334
Cadenas de caracteres
  • Para convertir nuevamente el vector de códigos ASCII a texto, se utiliza la función char.
    • d = char( [ 104 , 111 , 108 , 97 ] )
    • d =
    • hola
335
Cadenas de caracteres
  • Las cadenas, por ser arreglos, se pueden concatenar, y acceder de la forma usual.
    • Por ejemplo, si a = 'hola', y b = 'mundo', se puede generar el texto 'hola_mundo' con la sentencia:
      • c = [ a , '_' , b ]
    • Con la sentencia c ( 5 ) = ' ' (con un espacio en blanco en medio de las comillas simples) se cambia el guión bajo de la cadena en c por un espacio en blanco, resultando en 'hola mundo'.
336
Cadenas de caracteres
  • Se pueden generar arreglos de caracteres, de la siguiente manera:
    • Por concatenación:
      • a = 'hola' ; b = 'Pepe' ; c = [ a ; b ]
      • c =
      • hola
      • Pepe
      • El resultado es un arreglo de dos filas y 4 columnas.
      • Para concatenar, las dimensiones de las cadenas que se concatenan deben ser coherentes. Todas las líneas de texto deben tener la misma cantidad de caracteres.
337
Cadenas de caracteres
    • Por medio de la función char:
      • a = 'hola' ; b = 'Pepe' ; c = char( a , b )
      • c =
      • hola
      • Pepe
      • El comando char se encarga de agregar espacios en blanco al final de la cadena para asegurarse de que todas las filas del arreglo tengan la misma cantidad de caracteres (columnas).
338
Cadenas de caracteres
  • Para evitar agregarle espacios en blanco a las cadenas al formar arreglos de caracteres, se pueden utilizar arreglos de celdas de cadenas, que son arreglos cuyos elementos son todos cadenas.
    • Por ejemplo, C = { 'hola' ; 'mundo' } crea un arreglo de celdas de cadenas de 2x1. El primer elemento es un arreglo de caracteres de 1x4, y el segundo es de 1x5.
    • Con los arreglos de celdas no se necesita agregar espacios en blanco al final de cada fila.
    • La función cellstr convierte arreglos de caracteres en arreglos de celdas de cadenas.
    • La función char puede hacer la conversión inversa.
339
Estructuras
  • Las estructuras están conformadas por campos.
  • Los nombres de campo se separan del nombre de la estructura por medio de un punto.
  • En cada campo se puede almacenar cualquier tipo de dato de MATLAB.
  • Las estructuras se pueden crear de forma explícita, asignando elementos a cada campo de la variable, o por medio del comando struct.
340
Estructuras
  • Por ejemplo, para crear una estructura llamada alumnos, con tres campos: nombre, edad, y notas, se pueden utilizar las siguientes sentencias:
    • Asignando valores a los campos:
      • alumnos.nombre = 'Juan Pérez' ;
      • alumnos.edad = 26 ;
      • alumnos.notas = [ 10 , 8.5 , 7.4 ] ;
    • Por medio del comando struct:
      • alumnos = struct( 'nombre' , 'Juan Pérez' , 'edad' , 26 , 'notas' , [ 10 , 8.5 , 7.4 ]
341
Estructuras
  • Al teclear alumnos en la línea de comandos, resulta:
    • alumnos =
    •     nombre: 'Juan Pérez'
    •          edad: 26
    •         notas: [10 8.5000 7.4000]
342
Estructuras
  • Las estructuras pueden formar arreglos de estructuras. Para ello, simplemente se agregan los elementos del arreglo, utilizando además los nombres de campo.
    • Por ejemplo, para agregar otro registro al arreglo de estructuras alumnos, se podrían utilizar las siguientes sentencias:
      • alumnos(2).nombre = 'Carlos Pineda' ;
      • alumnos(2).edad = 20 ;
      • alumnos(2).notas = [ 5.5 , 7 , 9 ] ;
343
Estructuras
  • Se pueden agregar nuevos registros con el comando struct, por ejemplo, así:
    • alumnos(2) = struct( 'nombre' , 'Carlos Pineda' , 'edad' , 20 , 'notas' , [ 5.5 , 7 , 9 ]
344
Estructuras
  • Como la estructura ya contiene varios registros (dos), en la ventana de comandos sólo se muestra un resumen de la misma:
    • alumnos =
    • 1x2 struct array with fields:
    •     nombre
    •     edad
    •     notas
345
Estructuras
  • Hay varias formas de utilizar el contenido de las estructuras.
  • Una forma es a través de listas.
  • Una lista es un conjunto de elementos, separados por comas.
346
Estructuras
  • Un ejemplo de lista sería:
    • 1 , 2 , 3
  • MATLAB devuelve:
    • ans =
    •      1
    • ans =
    •      2
    • ans =
    •      3
347
Estructuras
  • Al seleccionar todos los elementos de un campo en una estructura, el resultado es una lista.
    • Por ejemplo, la sentencia alumnos.edad produce la lista:
      • ans =
      •     26
      • ans =
      •     20
348
Estructuras
  • Las listas se pueden ocupar para crear otros tipos de datos de MATLAB, o para ser usados por funciones (un listado de argumentos).
  • Por ejemplo, la sentencia:
    • [ alumnos.edad ]
  • Crea el vector [ 26 , 20 ].
  • Por otro lado, la sentencia sum( alumnos.edad ) devuelve:
    • ans =
    • 46
349
Demostración
  • Cree un arreglo multidimensional cuya primera página sea una matriz mágica de 4x4, y cuya segunda página sea una matriz aleatoria de 4x4.
    • c( : , : , 1 ) = magic( 4 ) ;
    • c( : , : , 2 ) = rand( 4 ) ;
350
Demostración
  • Convierta el arreglo multidimensional anterior en un arreglo de celdas de 2x1. Coloque la matriz de la primera página en la primera celda, y la matriz de la segunda página en la segunda celda.
    • d{ 1 , 1 } = c( : , : , 1 ) ;
    • d{ 2 , 1 } = c( : , : , 2 ) ;
351
Demostración
  • Conociendo que los códigos ASCII simplificados correspondientes a los caracteres "imprimibles" están asignados a los enteros del 32 al 127, escriba un archivo M que los imprima en pantalla.
    • c = 32:127 ;
    • char( c )
352
Demostración
  • Dado el arreglo numérico A = [ 1 , 2 ; 3 , 4 ], escriba las sentencias necesarias para formar la estructura B, con los campos fila_1 y fila_2, correspondientes a las filas 1 y dos del arreglo A.
    • B.fila_1 = A( 1 , : ) ;
    • B.fila_2 = A( 2 , : ) ;
353
Introducción a MATLAB
  • Lección 12
  • Guiones y funciones
354
Lección 12:
Guiones y funciones
  • Exposición
  • Demostración
  • Práctica
355
Exposición:
Guiones y funciones
  • Archivos M
  • Guiones
  • Funciones
  • Comandos nargin y nargout
  • Variables globales
  • Dualidad comando/función
  • La función eval
356
Archivos M
  • Son archivos de texto simple en los que se pueden escribir programas en el lenguaje de programación de MATLAB.
  • Se pueden crear con cualquier editor de texto.
  • MATLAB tiene su propio editor, que puede accederse en el menú File / New / M-file.
357
Archivos M
  • Algunas de las ventajas del editor de MATLAB son las siguientes:
    • Uso de diferentes colores para diferentes tipos de código, por ejemplo, para los comentarios, las palabras claves, las cadenas, etc.
    • Espaciado automático en las estructuras de control de flujo.
    • Herramientas para la depuración de los programas.
358
Archivos M
  • Los archivos de texto se pueden imprimir además en la ventana de comandos, con el comando type.
359
Guiones (scripts)
  • Son archivos M que contienen un conjunto de sentencias de MATLAB.
  • Presentan las siguientes características:
    • No aceptan argumentos de entrada, ni devuelven argumentos de salida.
    • Su espacio de trabajo es global.
  • La primera característica significa que no se pueden pasar valores a un guión, para que sean utilizados por las sentencias del mismo. Tampoco puede devolver de forma explícita los resultados de sus cálculos.
360
Guiones
  • La segunda característica significa que las variables que se generen dentro del guión estarán disponibles en la línea de comandos después de finalizada su ejecución.
  • Además, las variables creadas en la línea de comandos antes de la ejecución del guión podrán ser utilizadas por el mismo.
361
Guiones
  • Por lo tanto, si bien no se pueden asignar argumentos de entrada ni salida, se pueden crear variables en el Workspace global antes de ejecutar el guión, y los resultados del mismo se pueden guardar en variables disponibles después de la ejecución del mismo.
362
Guiones
  • Las sentencias de un guión se ejecutarán en el mismo orden en el que se encuentran, como si se digitaran en la línea de comandos una por una.
  • Para ejecutar un guión, simplemente se escribe el nombre del archivo en la línea de comandos (sin extensión) y se presiona “Enter”.
363
Guiones
  • Ejemplo: El siguiente guión, graficar.m, crea un gráfico en pantalla de una función sinusoidal.
364
Funciones
  • Las funciones son archivos M que tienen el mismo propósito que los guiones: ejecutar un conjunto de sentencias de MATLAB.
  • Sin embargo, a diferencia de los guiones, presentan las siguientes características:
    • Pueden aceptar argumentos de entrada, y pueden devolver argumentos de salida.
    • Su espacio de trabajo es local.
365
Funciones
  • La primera característica significa que durante la invocación de la función se pueden incluir argumentos de entrada y de salida.
  • La segunda característica significa que las variables creadas dentro de la función sólo pueden ser usadas por la función. Al finalizar la ejecución, todas las variables se pierden.
  • Por otro lado, las variables del Workspace global (las de la línea de comandos) no pueden ser usadas dentro de la función.
366
Funciones
  • Las partes de una función son las siguientes:
    • Línea de definición de la función.
    • Línea de ayuda H1.
    • Texto de ayuda de la función.
    • Cuerpo de la función
367
Comandos nargin y nargout
  • nargin devuelve el número de argumentos de entrada con los que se invocó una función.
  • Por ejemplo, si una función llamada prueba se invocó con tres argumentos, así:
    • prueba( 10 , -2 , [ 2 , 3 ] )
    • entonces el comando nargin, si se utiliza dentro de la función, devuelve el valor de 3.
368
Comandos nargin y nargout
  • Por otro lado, el comando nargout devuelve el número de argumentos de salida con los que se invocó una función.
369
Línea de definición de la función
  • Su sintaxis es la siguiente:



  • La palabra clave function le indica a MATLAB que el archivo M es una función, y no un guión.
  • var_salida es la variable de salida, que puede tener cualquier nombre.
370
Línea de definición de la función
  • nombre_fun es el nombre de la función, que puede ser cualquier nombre. Sin embargo, debe ser igual que el nombre del archivo M en donde se guarde la función.
  • Los argumentos de entrada arg1, arg2, etc. deben ir separados por comas. Puede haber tantos como se desee.
371
Línea de definición de la función
  • Si la función no devuelve salidas, simplemente se omite la variable de salida en la línea de definición.
  • Si la función no utiliza argumentos de entrada, simplemente se omiten en la línea de definición.
372
Línea de definición de la función
  • Si la función devuelve más de una salida, se colocan entre corchetes, así:
373
Línea de ayuda H1
  • Es la primera línea de texto después de la línea de definición de la función.
  • Consiste en una línea de comentarios que describe de manera general lo que hace la función.
  • Los comentarios en MATLAB se distinguen porque inician con el carácter de porcentaje (%).
374
Línea de ayuda H1
  • La línea H1 (help 1) sirve principalmente para dos cosas:
    • Para mostrar una descripción breve de la función que aparece al solicitar la ayuda de un directorio, con el comando help. Ejemplo: help matfun (la ayuda del directorio matfun).
    • Es en esta línea de ayuda en donde el comando lookfor busca el texto requerido.
375
Línea de ayuda H1
  • La línea H1 es opcional, pero, al igual que el texto de ayuda, se recomienda mucho incluirlo en todas las funciones que se creen.
  • Se acostumbra seguir el siguiente formato para la línea H1, colocando el nombre de la función en mayúsculas, seguida de una breve descripción.
376
Texto de ayuda de la función
  • Es un bloque opcional de comentarios que se coloque después de la línea H1.
  • Sirve para explicar detalladamente la forma en la que debe usarse la función, y qué es lo que hace.
  • Se acostumbra colocar cada sintaxis que soporta la función, con qué tipos de entradas y salidas, y la descripción de lo que se realiza con esa sintaxis.
377
Texto de ayuda de la función
  • Se acostumbra además colocar ejemplos de uso de la función dentro del texto de ayuda, así como los nombres de otras funciones que tengan relación con ésta.
  • La línea H1 y el texto de ayuda se imprimen en pantalla cuando se aplica el comando help a la función.
  • Por ejemplo, vea la ayuda de la función size, e identifique sus partes: help size.
378
Cuerpo de la función
  • Es el conjunto de sentencias que la función debe ejecutar.
  • Debe asegurarse que se asignen valores a los argumentos de salida antes que la función finalice.
  • No se utiliza ninguna palabra clave para finalizar la función.
379
Funciones
  • A continuación se muestra un ejemplo de función, que se encarga de sumar dos números. La función (y el archivo M) se llaman suma.
380
Variables globales
  • Las variables globales se pueden compartir entre dos o más funciones, de forma que las modificaciones hechas por una función afectarán a las demás cuando utilicen esta variable.
  • Para usar variables globales, se deben declarar en cada función en donde se desean utilizar.
381
Variables globales
  • La declaración se realiza con el comando global, utilizando la sintaxis siguiente:


  • También se pueden declarar variables globales en la línea de comandos, para compartirlas con las funciones.
382
Variables globales
  • La declaración de las variables debe hacerse antes de utilizarlas por primera vez dentro de la función.
383
Dualidad comando/función
  • Un comando en MATLAB es una palabra de código que no devuelve salidas de forma explícita, pero que puede aceptar modificadores, o argumentos de entrada.
  • La sintaxis general de un comando es la siguiente:
    • nombre_comando modificador1 modificador2 ...
  • Ejemplos de comandos son help, load y type.
384
Dualidad comando/función
  • Por otro lado, una función puede devolver argumentos de salida, y sus argumentos de entrada se escriben entre paréntesis (como se vio anteriormente).
  • La dualidad consiste en que todo comando puede utilizarse como función, y viceversa.
385
Dualidad comando/función
  • Para utilizar un comando como función, simplemente se escriben sus argumentos entre comillas simples (porque son cadenas). Por ejemplo, el comando help sum puede escribirse como función así: help( 'sum' ).
  • Para escribir una función como comando, se debe tener en cuenta que los argumentos de los comandos son todos cadenas de caracteres.
386
La función eval
  • Ejecuta una cadena como si se hubiera digitado en la línea de comandos.
  • Por ejemplo, eval('help sum') evalúa la sentencia help sum.
  • Si es necesario colocar el carácter de la comilla simple dentro de una cadena de caracteres, se utiliza una comilla simple dos veces, así:
    • eval('a = ''hola''')
387
La función eval
  • La evaluación de cadenas puede ser útil para la ejecución de sentencias repetitivas, en donde sólo cambian algunos valores.
388
Demostración
  • Escriba una función que tome como argumento un vector, y que devuelva una estructura, conteniendo en cada campo cada elemento del vector. Colóquele a los campos nombres de la forma a1, a2, etc. Utilice la función num2str para convertir números en cadenas.
389
Demostración
390
Demostración
  • Escriba una función que devuelva una cadena que indique con cuántos argumentos de entrada se invocó dicha función. La cantidad máxima de argumentos de entrada será 3.
391
Demostración
392
Práctica
  • Escriba una función que acepte tres números como argumentos de entrada, y que devuelva lo siguiente:
    • Si la función se invoca con un argumento de salida, se devuelve la suma de los números.
    • Si se invoca con dos argumentos de salida, se devuelve la suma y el producto de los números.
    • Si se invoca con tres argumentos de salida, se devuelve la suma, el producto, y el promedio de los números.
393
Introducción a MATLAB
  • Lección 13
  • Manejador de gráficos
394
Lección 13:
Manejador de gráficos
  • Exposición
  • Demostración
395
Exposición:
Manejador de gráficos
  • Definición
  • Objetos gráficos
  • Manejadores de objetos
  • Funciones para la creación de objetos
  • Propiedades de los objetos
  • Funciones set y get
  • Interfaces gráficas de usuario
396
Definición
  • El manejador de gráficos (Handle Graphics ®) es el sistema de MATLAB que provee un conjunto de funciones de bajo nivel que permiten la creación y manipulación de líneas, superficies y otros objetos gráficos.
397
Objetos gráficos
  • Los objetos gráficos constituyen el componente fundamental de dibujo del sistema de manejador de gráficos de MATLAB.
  • Los objetos están organizados en una estructura jerárquica de árbol.
  • Por lo tanto, se tienen objetos padres (parents) y objetos hijos (children).
398
Objetos gráficos
  • Existen once tipos de objetos del manejador de gráficos de MATLAB:
    • Root.
    • Figure.
    • Uicontrol.
    • Axes.
    • Uimenu.
    • Image.
    • Line.
    • Patch.
    • Surface.
    • Text.
    • Light.
399
Objeto Root
  • El objeto root (raíz) se encuentra en la cúspide de la jerarquía.
  • Lo constituye la pantalla de la computadora (la ventana de comandos de MATLAB).
  • Se crea automáticamente al iniciar una sesión de MATLAB.
400
Objeto figure (figura)
  • Son cualquier ventana producida por MATLAB diferente de la ventana de comandos.
401
Objeto uicontrol
  • uicontrol = user interface control (control de interfaz de usuario).
  • Son controles de interfaces de usuario que ejecutan una función cuando el usuario los activa.
  • Ejemplos de estos controles son los botones (pushbuttons), botones de radio (radio buttons) y barras de desplazamiento (sliders).
402
Objeto axes (ejes)
  • Son la región de una ventana de figuras en donde se colocan los gráficos.
403
Objeto uimenu
  • uimenu = user interface menu (menú de interfaz de usuario).
  • Son menús de interfaces de usuario que se encuentran en la parte superior de las ventanas de figuras.
404
Objeto image (imagen)
  • Son objetos bidimensionales que MATLAB despliega en pantalla conteniendo imágenes, utilizando los elementos de un arreglo rectangular como índices de un mapa de color.
405
Objeto line (línea)
  • Son los componentes fundamentales de la mayoría de gráficos bidimensionales.
406
Objeto patch (polígono)
  • Son polígonos formados por líneas (los bordes) y colores (el relleno).
407
Objeto surface (superficie)
  • Son representaciones tridimensionales de los datos de una matriz creados al graficar los elementos de la misma como alturas medidas desde el plano x-y.
408
Objeto text (texto)
  • Son cadenas de caracteres.
409
Objeto light (iluminación)
  • Definen fuentes de iluminación que afectan todos los objetos dentro de un objeto axes.
410
Manejadores de objetos
  • Conocidos como object handles.
  • Es un identificador único asignado a cada objeto de un gráfico.
  • MATLAB asigna este identificador cuando se crea el objeto.
  • El handle del objeto root siempre es cero.
  • El handle de un objeto figure es un entero que se muestra en el título de la ventana de figuras.
411
Manejadores de objetos
  • Los handles de los otros objetos gráficos son números de punto flotante que contienen información usada por MATLAB.
  • Por ejemplo, con la sentencia:
    • h = plot( magic( 4 ) )
  • se crea un gráfico de cuatro líneas, una por cada columna de la matriz mágica. Además, se devuelve el vector de handles h, que contiene un handle para cada línea del gráfico.
412
Manejadores de gráficos
  • MATLAB cuenta con algunas funciones que obtienen el handle de algunos objetos comúnmente usados:
    • gcf: get current figure (obtener la figura actual), devuelve el handle de la ventana de figuras activa.
    • gca: get current axes (obtener los ejes actuales), devuelve el handle del objeto axes activo.
    • gco: get current object (obtener el objeto actual), devuelve el handle del objeto gráfico activo.
413
Manejadores de gráficos
  • Estas funciones se pueden usar como argumentos de otras funciones que requieren handles de figuras y ejes.
  • El handle de otros objetos se debe obtener al momento de la creación de los mismos.
  • Todas las funciones de MATLAB que crean objetos devuelven el handle (o vector de handles) del objeto creado.
414
Manejadores de gráficos
  • Para eliminar un objeto se utiliza la función delete.
  • Al borrar un objeto se borran también todos sus objetos hijos.
415
Funciones para la creación de objetos
  • Existe una función para crear cada uno de los objetos gráficos existentes.
  • El nombre de la función es idéntico al nombre del objeto.
  • Por ejemplo, la función figure crea un objeto gráfico tipo figure.
416
Propiedades de los objetos
  • Todos los objetos poseen propiedades que controlan su funcionamiento y apariencia.
  • Existen dos formas de asignar los valores de las propiedades de un objeto:
    • Con la función de creación del objeto.
    • Utilizando la función set, una vez que el objeto se ha creado.
417
Propiedades de los objetos
  • Por ejemplo, las siguientes sentencias crean tres objetos, y sobrescriben los valores por defecto de algunas de sus propiedades.
418
Funciones set y get
  • Sirven para hacer referencia a las propiedades de un objeto, una vez haya sido creado.
  • Para esto se utiliza el handle del objeto en cuestión.
  • La función set sirve para asignarles valores a las propiedades de los objetos. Su sintaxis es la siguiente:
    • set( h , 'Propiedad_1' , valor_1 , 'Propiedad_2' , valor_2 … )
419
Funciones set y get
  • h es el handle del objeto, y 'Propiedad_n', valor_n son parejas de nombres de propiedades (cadenas de caracteres) y valores.
  • Por ejemplo, para cambiar el color y el ancho de la línea del gráfico del ejemplo anterior:
    • set( h , 'Color' , [ 0 , 0.8 , 0.8 ] , 'LineWidth' , 3 )
420
Funciones set y get
  • Para ver un listado de todas las propiedades asignables de un objeto, se utiliza la función set con sólo un argumento (el handle del objeto). Por ejemplo, set( h ).
  • Para ver un listado de todos los valores actuales de las propiedades de un objeto, se utiliza la función get, de la misma manera. Por ejemplo, get( h ).
421
Funciones set y get
  • Para obtener el valor de una propiedad específica, se utiliza get de la siguiente manera:
    • variable = get( handle )
422
Interfaces gráficas de usuario
  • Son las ventanas con las que el usuario puede interactuar con un programa.
  • Pueden crearse de dos formas:
    • Utilizando las funciones de bajo nivel, como uicontrol.
    • Utilizando el editor de interfaces gráficas de usuario (graphical user interface editor, o GUIDE).
423
Interfaces gráficas de usuario
  • A continuación se muestra un ejemplo de construcción de GUI's con funciones de bajo nivel:
424
Interfaces gráficas de usuario
  • Las sentencias anteriores crean un botón en el centro de una ventana de figuras, que tiene como texto la cadena 'Haga click aquí'.
  • Por el momento, al presionar el botón no ocurre nada. Sin embargo, la sentencia:
    • s = 'set(b,''Position'',[.8*rand .9*rand .2 .1])';
425
Interfaces gráficas de usuario
  • La sentencia anterior crea una cadena que contiene un comando que modifica la posición del botón. Al evaluar la cadena con la función eval, el botón se mueve a una posición aleatoria.
    • eval( s )
426
Interfaces gráficas de usuario
  • Para asignar esa cadena de comandos al evento que ocurre al presionar el botón, se utiliza la siguiente sentencia:
    • set(b,'Callback',s)
  • Por lo tanto, cada vez que se presiona el botón, su posición cambia de manera aleatoria.
427
Demostración
  • Cree un guión que coloque un botón en la esquina inferior izquierda de la ventana de figuras activa, con el texto "Borrar gráfica", para borrar la ventana de figuras al presionarlo. Utilice el comando cla (clear axes) para borrar la gráfica.
428
Demostración