Curso Básico de MATLAB para Microsoft Windows (Modulo II)



Documentos relacionados
Tema 7: Programación con Matlab

Introducción a la Programación en MATLAB

Herramientas computacionales para la matemática MATLAB: Funciones definidas por el usuario (parte II)

La ventana de Microsoft Excel

Características básicas de Matlab

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

Centro de Capacitación en Informática

Capítulo 9. Archivos de sintaxis

Tema 4: Empezando a trabajar con ficheros.m

Tema 6: Introducción a los gráficos en 3 dimensiones

Gráficos en Matlab

Guía N 1: Fundamentos básicos(i)

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

CASO PRÁCTICO DISTRIBUCIÓN DE COSTES

Introducción a Matlab.

Operación de Microsoft Excel

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Tutorial Básico de vbscript

Práctica 3: Funciones

MICROSOFT EXCEL Introducción: Qué es y para qué sirve Excel2007? TECNOLOGIA/ INFORMATICA: MS-EXCEL

Modulo 1 El lenguaje Java

10.4 Dibujos sobre dominios mallados en triángulos LECCIÓN V

MATERIAL 2 EXCEL 2007

UNIVERSIDAD TECNOLÓGICA DE PEREIRA Programa de Tecnología Eléctrica

Instructivo de Microsoft Excel 2003

1. Visualización de datos con Octave

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

1. DML. Las subconsultas

1. Dominio, simetría, puntos de corte y periodicidad

Preliminares. Tipos de variables y Expresiones

GENERACIÓN DE TRANSFERENCIAS

Creación y administración de grupos locales

Operaciones básicas, fórmulas, referencias absolutas, relativas y mixtas.

TEMA 2 WINDOWS XP Lección 4 BLOC DE NOTAS

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

PS.Vending Almacén Pocket PC

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Operación de Microsoft Word

E 1 E 2 E 2 E 3 E 4 E 5 2E 4

Conciliación bancaria en CheqPAQ Cargado de estado de cuenta

Herramientas computacionales para la matemática MATLAB: Scripts

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Guía de instrucciones para educadores

Introducción a la Estadística con Excel

Para crear formularios se utiliza la barra de herramientas Formulario, que se activa a través del comando Ver barra de herramientas.

Centro de Capacitación en Informática

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

MACROS. Automatizar tareas a través del uso de las macros.

Capítulo 4. Vectores y matrices. 4.1 Declaración de tablas. 4.2 Declaración estática de tablas

Para crear una lista como la anterior, primero escribe la información, y después selecciona el texto y aplícale el formato de viñetas.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Access Control. Manual de Usuario

Edición de Ofertas Excel Manual de Usuario

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

DOCUMENTOS COMPARTIDOS CON GOOGLE DOCS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

1) Como declarar una matriz o un vector.

TEMA 5. INTRODUCCIÓN AL MANEJO DE ORIGIN 6.1

Formularios. Formularios Diapositiva 1

PRÁCTICAS DE GESTIÓN GANADERA:

GENERACIÓN DE ANTICIPOS DE CRÉDITO

2º ITT SISTEMAS ELECTRÓNICOS 2º ITT SISTEMAS DE TELECOMUNICACIÓN 3º INGENIERÍA DE TELECOMUNICACIÓN AUTÓMATAS Y SISTEMAS DE CONTROL

Manual Gran Hotel. N. Res: Número de Reserva que el programa le ha adjudicado de forma automática

Sistema de Facturación de Ventas WhitePaper Enero de 2007

Roberto Quejido Cañamero

2.1.- EJEMPLO DE UN PROGRAMA FORTRAN

Hoja1!C4. Hoja1!$C$4. Fila

ESTRUCTURA DE DATOS: ARREGLOS

BASES DE DATOS - Microsoft ACCESS 2007-

Empresarial y Financiero NIVEL AVANZADO

PROYECTOS, FORMULACIÓN Y CRITERIOS DE EVALUACIÓN

SOLUCIÓN CASO GESTIÓN DE COMPRAS

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Creación y administración de grupos de dominio

Charla No 3: Fórmulas de mayor uso.

2_trabajar con calc I

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Ejemplos de conversión de reales a enteros

Curso Excel Básico - Intermedio

Formas de Pago y Efectos en Facturas de Venta WhitePaper Febrero de 2007

Herramientas computacionales para la matemática MATLAB: Otros tipos de datos

Curso PHP Módulo 1 R-Luis

Bases de datos en Excel

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

RESUMEN DEL PROGRAMA GNUPLOT

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

MANUAL DE AYUDA MODULO TALLAS Y COLORES

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

TALLER #5 ACCESS CONSULTAS. objeto Consulta en la vista lateral izquierda de la ventana Base de datos. Aparece esta ventana.

El programa Minitab: breve introducción a su funcionamiento. Para mostrar la facilidad con la que se pueden realizar los gráficos y cálculos

LAS SUBCONSULTAS SQL SERVER Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

SOLUCIÓN CASO GESTIÓN DE PERSONAL I

Operación de Microsoft Word

Guía de Aprendizaje No. 1

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Transcripción:

Curso Básico de MATLAB para Microsoft Windows (Modulo II) Introducción La finalidad de este módulo es la de capacitar al participante a desarrollar programas para resolver problemas simples, además de hacerlo competente para enter y modificar programas elaborados por terceros; esto con la finalidad de dar una idea de lo que es posible lograr utilizando programación en MATLAB. Gráficos en 2D Para trazar gráficos en coordenadas rectangulares (X-Y), es más fácil organizar los datos en dos vectores fila, uno para las coordenadas en X y otro para las coordenadas en Y. Primeramente, para crear una ventana de figura, se utiliza el comando h=figure, en donde 'h' es un número entero que representa la ventana creada. Comando Plot >> plot(x,y) creará una figura con los puntos indicados por los vectores x,y unio cada par (x, y) con líneas. Ud puede controlar el aspecto de ésta línea a través de un tercer argumento de tipo string en el comando plot : >> plot(x,y,estilo) donde estilo está creado por caracteres como se indica a continuación: Los caracteres de color son 'c', 'm', 'y', 'r', 'g', 'b', 'w', y 'k'. Éstos corresponden a celeste, fucsia, amarillo, red, verde, azul, blanco y negro, respectivamente. Los caracteres de estilo de línea son '-' para sólida, '--' a trazos, ':' para punteada, '-.' Para ralla-punto, y ninguno si no se desea la línea. Si no es especificado, utilizará '-' como valor por defecto. Los caracteres para el tipo de marcador son '+', 'o', '*', y 'x' y los marcadores rellenos son 's' para cuadrado, 'd' para diamante, y para triángulos rellenos '^' apuntando hacia arriba, 'v' apuntando hacia abajo, '>' apuntando hacia la derecha, '<' apuntando hacia la izquierda, 'p' para un pentágono, 'h' para un hexágono, y ninguno si no se quiere un marcador. Por defecto, no se utilizan marcadores. Ing. Efraín Nava pág 1

Por ejemplo: >> x = [ 1 2 3 4 ]; >> y = [ 1 15 2 25 ]; >> plot(x,y,'g-*'); 25 2 15 1 1 2 3 4 También puede trazar múltiples líneas usando: o >> plot(x1,y1,x2,y2, ); >> plot(x1,y1,estilo1,x2,y2,estilo2, ); Además, le puede asignar un título a la gráfica con la siguiente instrucción: >> title(label) donde 'label' es una cadena de caracteres. Adicionalmente, se le pueden colocar etiquetas a los ejes X e Y con las instrucciones: y >> xlabel(label) >> ylabel(label) Hasta puede añadir una malla con >> grid on O graficar varias curvas en una misma ventana, con la instrucción >> hold on Ing. Efraín Nava pág 2

Comando Fplot A veces, se quiere graficar una función dada, como por ejemplo, graficar f(x)=sen(x); con las funciones hasta ahora explicadas, sería necesario generar un vector fila de valores 'x', luego generar el vector resultado y guardarlo en otro vector 'y' para luego graficarlo con la función 'plot'. Ejemplo: >> x=:.1:2*pi; >> y=sin(x); >> plot(x,y); Sin embargo, existe una función especial de Matlab para graficar funciones llamada 'fplot'. La sintaxis se explica a continuación: >> fplot(f(x),lims); donde 'f(x)' es una cadena de caracteres que representa una función, por ejemplo, 'atan(x^2)' o '3*x^2+2*x+6', por defecto, MATLAB considera como variable indepiente a la variable 'x'; y LIMS es un vector fila que presenta al menos 2 argumentos y hasta 4, estos representan los límites en los ejes en los que se evaluará la función 'f(x)', la forma de esta variable es LIMS=[Xmin Xmax Ymin Ymax] Por ejemplo, la instrucción >> fplot('5*sin(x)*exp(-5)',[ 6*pi]); produce la siguiente gráfica: 6 4 2-2 -4 2 4 6 Ing. Efraín Nava pág 3

El comando para manipular los límites de los ejes es el comando axis. Por defecto, MATLAB ajusta la escala de cada uno de los ejes de modo que varíe entre el mínimo y el máximo valor de los vectores a representar. Este es el llamado modo "auto", o modo automático. Para definir de modo explícito los valores máximo y mínimo según cada eje, se utiliza el comando: >> axis([xmin, xmax, ymin, ymax]) mientras que : >> axis('auto') devuelve el escalado de los ejes al valor por defecto o automático. Cuando se desea conocer con precisión las coordenadas de un punto específico en la ventana, se utiliza la función ginput la cual ubica un cursor sobre la ventana de figura activa para capturar con el clic de un botón o al presionar cualquier tecla (diferente de Enter) la posición actual del cursor. Presenta la siguiente sintaxis: >> ret=ginput(n) donde ret será una matriz de n filas por 2 columnas, y n será el número de puntos a ser capturados. En caso de ser omitido el argumento n, la función ginput seguirá capturando puntos hasta tanto no se presione la tecla Enter. Cuando es necesario graficar en otros sistemas de coordenadas, como por ejemplo polares, MATLAB posee funciones adicionales para tales fines, estas son: polar(ang,rad,s) loglog(x,y,s) semilogx(x,y,s) semilogy(x,y,s) donde 'ang' es un vector fila el cual posee las coordenadas θ, y 'rad' es un vector fila que contiene las cordenadas r del par (r,θ). 's' es el estilo de la línea y se denomina de igual forma que en el comando plot. funciona igual que el comando plot, sólo que el gráfico presenta ejes en escala logarítmica. funciona igual que el comando plot, sólo que el gráfico presenta el eje 'x' en escala logarítmica. funciona igual que el comando plot, sólo que el gráfico presenta el eje 'y' en escala logarítmica. Ing. Efraín Nava pág 4

Ficheros *.m Los ficheros con extensión '.m' son ficheros de texto sin formato (ficheros ASCII) que constituyen el centro de la programación en MATLAB. Estos ficheros se crean y modifican con un editor de textos cualquiera. En el caso de MATLAB 5.3 ejecutado en un PC bajo Windows, lo más sencillo es utilizar su propio editor de textos. Existen dos tipos de ficheros *.m, los ficheros de comandos (llamados scripts en inglés) y las funciones. Los primeros contienen simplemente un conjunto de comandos que se ejecutan sucesivamente cuando se teclea el nombre del fichero en la línea de comandos de MATLAB. Un fichero de comandos puede llamar a otros ficheros de comandos. Las funciones permiten definir funciones enteramente análogas a las de MATLAB, con su nombre, sus argumentos y sus valores de retorno. Los ficheros '.m' que definen funciones permiten exter las posibilidades de MATLAB; de hecho existen bibliotecas de ficheros.m que se ven (toolkits) o se distribuyen gratuitamente (a través de Internet). Las funciones definidas en ficheros *.m se caracterizan porque la primera línea (que no sea un comentario) comienza por la palabra function, seguida por los valores de retorno (entre corchetes [ ] y separados por comas, si hay más de uno), el signo igual (=) y el nombre de la función, seguido de los argumentos (entre paréntesis y separados por comas). A continuación se verá con un poco más de detalle ambos tipos de ficheros *.m. Ficheros de comandos (scripts) Como ya se ha dicho, los ficheros de comandos o scripts son ficheros con un nombre tal como file1.m que contienen una sucesión de comandos análoga a la que se teclearía en el uso interactivo del programa. Dichos comandos se ejecutan sucesivamente cuando se teclea el nombre del fichero que los contiene (sin la extensión), es decir cuando se teclea file1 con el ejemplo considerado. En los ficheros de comandos conviene poner los puntos y coma (;) al final de cada sentencia, para evitar una salida de resultados demasiado cuantiosa. Un fichero *.m puede llamar a otros ficheros *.m, e incluso se puede llamar a sí mismo de modo recursivo. Mención especial merece el fichero de comandos startup.m, Este fichero se ejecuta cada vez que se entra en MATLAB. En él puede introducir todos aquellos comandos que le interesa se ejecuten siempre al iniciar la sesión, por ejemplo format compact y los comandos necesarios para modificar el path. Ing. Efraín Nava pág 5

Ficheros de Funciones La primera línea de un fichero llamado name.m que define una función tiene la forma: function [valores de retorno] = name(lista de argumentos) donde name es el nombre de la función. Entre corchetes y separados por comas van los valores de retorno (siempre que haya más de uno), y entre paréntesis también separados por comas la lista de argumentos. Puede haber funciones sin valor de retorno y también sin argumentos. Recuérdese que los argumentos son los datos de la función y los valores de retorno sus resultados. Si no hay valores de retorno se omiten los corchetes y el signo igual (=); si sólo hay un valor de retorno no hace falta poner corchetes. Tampoco hace falta poner paréntesis si no hay argumentos. Los resultados de una función de MATLAB se obtienen siempre a través de los valores de retorno, que pueden ser múltiples y matriciales. Tanto el número de argumentos como el de valores de retorno no tienen que ser fijos, depio de cómo el usuario llama a la función. Las variables definidas dentro de una función son variables locales, en el sentido de que son inaccesibles desde otras partes del programa y en el de que no interfieren con variables del mismo nombre definidas en otras funciones o partes del programa. Se puede decir que pertenecen al propio espacio de trabajo de la función y no son vistas desde otros espacios de trabajo. Dentro de la función, los valores de retorno deben ser calculados en algún momento. De todas formas, no hace falta calcular siempre todos los posibles valores de retorno de la función, sino sólo los que el usuario espera obtener en la sentencia de llamada a la función. En cualquier función existen dos variables definidas de modo automático, llamadas nargin y nargout, que representan respectivamente el número de argumentos y el número de valores de retorno con los que la función ha sido llamada. Dentro de la función, estas variables pueden ser utilizadas como el programador desee. La ejecución de una función termina cuando se llega a su última sentencia ejecutable. Si se quiere forzar el que una función termine de ejecutarse se puede utilizar la sentencia return, que devuelve inmediatamente el control al entorno de llamada. MATLAB pasa a una función un número variable de argumentos por medio de la variable varargin, que es un vector de celdas que contienen tantos elementos como sean necesarios para poder recoger en dichos elementos todos los Ing. Efraín Nava pág 6

argumentos que se hayan pasado en la llamada. Recuérdese que a los elementos de un cell array se accede utilizando llaves { }, en lugar de paréntesis (). De forma análoga, una función puede tener un número indeterminado de valores de retorno utilizando varargout, que es también un cell array que agrupa los últimos valores de retorno de la función. El cell array varargout se debe crear dentro de la función y hay que dar valor a sus elementos antes de salir de la función. A continuación se presentan unos ejemplos de la forma de declarar funciones: function y=square(x); function av=average(x1,x2,x3,x4,x5); function printvalue(a); function B=readvalue(); function [mean,sttdev]=analyse(tab); El siguiente es un programa que calcula la tercera potencia de un número ingresado como argumento: function y=cubo(x) % cubo(x) regresa la tercera potencia de (x) y = x * x * x; return; Manejo de Cadenas de caracteres (strings) Las cadenas simples están almacenadas como tablas de una fila con un número de columnas igual al número de caracteres de la cadena. Para ingresar un argumento de tipo "string", es necesario encerrarlo entre comitas (''). Se pueden concatenar varias cadenas de la misma manera que se añaden elementos a un vector fila. Por ejemplo: >> str1='hola'; >> str2='todos'; >> str=[str1,' a ',str2] Obtenio como resultado en la variable str: Hola a Todos Ing. Efraín Nava pág 7

En el ejemplo anterior se observa que cada cadena de caracteres va encerrada en '', esto para diferenciar las cadenas de los nombres de variables, tal y como se ve en la tercera instrucción str=[str1,' a ',str2], donde se unen variables (str1, str2) con cadenas de caracteres (' a '). Como se dijo anteriormente, cada cadena de caracteres es una tabla de una sola fila y en la que cada caracter ocupa una columna, así que si quisiéramos aislar un conjunto de caracteres de una cadena, ésta se puede manipular de la misma manera que se manipula un vector fila, por ejemplo, vamos a extraer unas palabras de una frase: >> frase='la oracion NO ESTA normal'; si quisiéramos capturar las palabras 'NO ESTA' de la frase, basta con identificar la columna en la que ésta empieza y la columna en la que termina, por simple inspección ocular, se tiene que éstas empiezan en la columna 12 y terminan en la 18, veamos si la frase fue bien abordada: >> frase(12:18) ans = NO ESTA Y si quisiéramos eliminar las palabras "NO ESTA" de la frase, sería necesario volver a armar la tabla "frase" pero excluyo las columnas que pertenecen a las palabras que queremos suprimir: >> frase=[frase(1:11), frase(19:length(frase))] frase = La oracion normal A continuación se muestra cómo MATLAB manipula las variables de este tipo, supongamos que hemos declarado una variable de tipo cadena de caracteres en la que almacenamos la palabra 'mundo', en la memoria, MATLAB manipula esta variable de la siguiente forma: Columna: 1 2 3 4 5 Caracter: m u n d o Valor: 19 117 11 1 111 En realidad lo que MATLAB almacena es una matriz de 1 fila por tantas columnas como caracteres tenga, pero la información que se almacena en esa matriz no son los caracteres sino los valores ASCII correspondientes a cada caracter. Pero cómo Ing. Efraín Nava pág 8

saber que valor le corresponde a cada caracter?, no es necesario preocuparse por eso, ya que MATLAB no nos muestra estos valores decimales a menos que le sean pedidos. MATLAB posee diversas funciones para convertir los caracteres en sus respectivos valores decimales y viceversa, estas funciones son: num=abs(chr); donde num será una valor decimal que representa al caracter chr. Por ejemplo >> abs('marcos') ans = 77 97 114 99 111 115 chr=char(num); donde chr será el caracter correspondiente al valor decimal num. Por ejemplo >> char([115,97,18,117,1,111,115]) ans = saludos Pero no lo confunda con num2str(), el cual convierte un número a una cadena de caracteres de la forma: >> num2str(254) ans = 254 %tabla de 3 columnas. Lectura y escritura interactiva de variables Se verá a continuación una forma sencilla de leer variables desde teclado y escribir mensajes en la pantalla del PC. Función Input La función input permite imprimir un mensaje en la línea de comandos de MATLAB y recuperar como valor de retorno un valor numérico o el resultado de una expresión tecleada por el usuario. Después de imprimir el mensaje, el programa espera que el usuario teclee el valor numérico o la expresión. Cualquier expresión válida de MATLAB es aceptada por este comando. El usuario puede teclear simplemente un vector o una matriz. En cualquier caso, la expresión introducida es evaluada con los valores actuales de las Ing. Efraín Nava pág 9

variables de MATLAB y el resultado se devuelve como valor de retorno. Véase un ejemplo de uso de esta función: >> n = input('teclee el número de ecuaciones') Otra posible forma de esta función es la siguiente (obsérvese el parámetro 's'): >> nombre = input(' Cómo te llamas?','s') En este caso el texto tecleado como respuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena nombre. Así pues, en este caso, si se teclea una fórmula, se almacena como texto sin evaluarse. Función Disp La función disp permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. Considérense los siguientes ejemplos de cómo se utiliza: >> disp('el programa ha terminado') >> A=rand(4,4) >> disp(a) Ejecútense las sentencias anteriores en MATLAB y obsérvese la diferencia entre las dos formas de imprimir la matriz A. Ciclos repetitivos o de toma de decisiones Expresiones Condicionales Hasta ahora hemos visto un número de expresiones aritméticas usando operadores como +, o *. MATLAB también puede crear expresiones lógicas o condicionales usando comparaciones u operadores Booleanos cuyo resultado siempre será para expresiones falsas y 1 cuando el resultado sea verdadero. Los operadores condicionales son: < Menor que <= Menor o igual que == Igual que >= Mayor o igual que > Mayor que ~= Diferente a Ing. Efraín Nava pág 1

Los operadores Booleanos son: & (AND) (OR) ~ (NOT) Se pueden utilizar paréntesis para forzar el orden de evaluación, por ejemplo: >> x=1; >> y=2; >> x<y; % Regresa 1 >> x<=1; % Regresa 1 >> x==y; % Regresa >> (<x)&(y<3); % Regresa 1 >> (x>1) (y>1); % Regresa >> ~(x>1); % Regresa 1 Incluso, se pueden realizar operaciones lógicas con matrices. Estas operaciones se realizan celda a celda y la salida es una matriz de valores lógicos (1 o ). >> area=[ 1 4 9 16 25 36 ]; >> perimetro=[ 4 8 12 16 2 24 ]; >> disp(area < perimetro); % Regresa 1 1 1 Finalmente, se puede usar una matriz lógica para seleccionar elementos de una matriz numérica. Las celdas de la matriz numérica que correspondan a los valores verdaderos de la matriz lógica, serán extraidos: >> disp(area(area < perimetro)); % Regresa 1 4 9 Sentencia IF En su forma más simple, la sentencia if se escribe en la forma siguiente (obsérvese que la condición no va entre paréntesis, aunque se pueden poner si se desea): if condicion sentencias Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque1 elseif condicion2 bloque2 Ing. Efraín Nava pág 11

elseif condicion3 bloque3 else % para cuando no se cumplan las condiciones 1,2,3 bloque4 donde la opción por defecto else puede ser omitida: si no está presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado. Una observación muy importante: la condición del if puede ser una condición matricial, del tipo A==B, donde A y B son matrices del mismo tamaño. Para que se considere que la condición se cumple, es necesario que sean iguales dos a dos todos los elementos de las matrices A y B. Basta que haya dos elementos diferentes para que las matrices no sean iguales, y por tanto las sentencias del if no se ejecuten. Análogamente, una condición en la forma A~=B exige que todos los elementos sean diferentes dos a dos. Bastaría que hubiera dos elementos iguales para que la condición no se cumpliese. En resumen: if A==B exige que todos los elementos sean iguales dos a dos if A~=B exige que todos los elementos sean diferentes dos a dos Hay que resaltar que la condición es considerada verdadera si el resultado es diferente de, y falsa si es ; las funciones de comparación == y ~= devuelven 1 cuando el resultado es verdadero, y cuando es falso. A continuación se ofrecen varios ejemplos para ser revisados cuidadosamente. Se recomia que las instrucciones que funcionan en modo de bloques sean escritas en un fichero de comandos (script), ya que hacen más fácil su redacción y depuración. La finalidad de las siguientes líneas es la de mostrar un número siempre que el valor de éste número sea menor a 1 y que también muestre 'OK' si este número está en el rango < x < 1. if (x < 1) disp(x) % Muestra x cuando x < 1 if (( < x) & (x < 1)) disp('ok') % Muestra OK si x > y x < 1 Ing. Efraín Nava pág 12

También puede "anidar" las instrucciones if como se muestra a continuación: if (a < b) if (a < c) disp(a); else disp(c); else if (b < c) disp(b); else disp(c); Sería Ud capaz de identificar la función de las líneas anteriores? Sentencia Switch Su forma general es la siguiente: switch switch_expresion case case_expr1, bloque1 case {case_expr2, case_expr3, case_expr4,...} bloque2... otherwise, % opción por defecto bloque3 Al principio se evalúa switch_expresion, cuyo resultado debe ser un número escalar o una cadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a switch_expresion se ejecutan las sentencias correspondientes a otherwise. Según puede verse en el ejemplo anterior, es posible agrupar varias condiciones dentro de unas llaves (constituyo lo que se llama un cell array o vector de celdas; basta la igualdad con cualquier elemento del cell array para que se ejecute ese bloque de sentencias. Ing. Efraín Nava pág 13

Cómo ejemplo vea este caso: a=1; b=5; disp('1) para sumar'); disp('2) para restar'); disp('3) para multiplicar'); disp('4) para dividir'); n=input('seleccione que desea hacer con a y b: '); switch n case 1 disp(['seleccionó sumar= ' num2str(a+b)]) case 2 disp(['seleccionó restar= ' num2str(a-b)]) case 3 disp(['seleccionó multiplicar= ' num2str(a*b)]) case 4 disp(['seleccionó dividir= ' num2str(a/b)]) otherwise disp('esa opción no existe!') Ciclo For La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de uno en uno. for i=1:n sentencias En el siguiente ejemplo se presenta el caso más general para la variable del bucle (valor_inicial:incremento:valor_final); el bucle se ejecuta por primera vez con i=n, y luego i se va reducio de.2 en.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se termina: for i=n:-.2:1 sentencias En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La variable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles valores): Ing. Efraín Nava pág 14

for i=1:m for j=1:n sentencias Una última forma de interés del bucle for es la siguiente (A es una matriz): for i=a sentencias en la que la variable i es un vector que va tomando en cada iteración el valor de una de las columnas de A. Ciclo While Su sintaxis es la siguiente: while condicion sentencias donde condicion puede ser una expresión escalar, vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algún o algunos elementos true. El bucle se termina cuando todos los elementos de condicion son false (es decir, cero). Sentencia Break La sentencia break hace que se termine la ejecución del ciclo más interno de los que compren a dicha sentencia. Sentencias try...catch... La construcción try...catch... permite gestionar los errores que se pueden producir en tiempo de ejecución. Su forma es la siguiente: try sentencias1 catch sentencias2 Ing. Efraín Nava pág 15

En el caso de que durante la ejecución del bloque sentencias1 se produzca un error, el control de la ejecución se transfiere al bloque sentencias2. Si la ejecución transcurriera normalmente, sentencias2 no se ejecutaría nunca. MATLAB dispone de una función lasterr que devuelve una cadena de caracteres con el mensaje correspondiente al último error que se ha producido. En la forma lasterr('') pone a cero este contador de errores, y hace que la función lasterr devuelva la matriz vacía [] hasta que se produzca un nuevo error. Gráficos en 3D MATLAB tiene posibilidades de realizar varios tipos de gráficos 3D. Función Plot3 La función plot3 es análoga a su homóloga bidimensional plot. Su forma más sencilla es la siguiente: >> plot3(x,y,z) que dibuja una línea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar en la pantalla. Al igual que en el caso plano, se puede incluir una cadena de 1, 2 ó 3 caracteres para determinar el color, los marcadores, y el tipo de línea: >> plot3(x,y,z,s) También se pueden utilizar tres matrices X, Y y Z del mismo tamaño: >> plot3(x,y,z) en cuyo caso se dibujan tantas líneas como columnas tienen estas 3 matrices, cada una de las cuales está definida por las 3 columnas homólogas de dichas matrices. A continuación se va a realizar un ejemplo sencillo consistente en dibujar un cubo. Para ello se creará una variable que contenga las aristas correspondientes, definidas mediante los vértices del cubo como una línea poligonal continua (obsérvese que algunas aristas se dibujan dos veces). Se define una matriz A cuyas columnas son las coordenadas de los vértices, y cuyas filas son las coordenadas x, y y z de los mismos: A=[ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ] Ing. Efraín Nava pág 16

Ahora basta ejecutar el siguiente comando (el trasponer los vectores en este caso es opcional): >> plot3(a(1,:)',a(2,:)',a(3,:)') 1 Obtenio la siguente figura:.8.6.4.2 Dibujo de Mallas: Funciones Meshgrid, Mesh y Surf Ahora se verá con detalle cómo se puede dibujar una función de dos variables (z=f(x,y)) sobre un dominio rectangular. Se verá que también se pueden dibujar los elementos de una matriz como función de los dos índices. 1.5.2.4.6.8 1 Sean x e y dos vectores que contienen las coordenadas en una y otra dirección de la retícula (grid) sobre la que se va a dibujar la función. Después hay que crear dos matrices X (cuyas filas son copias de x) e Y (cuyas columnas son copias de y). Estas matrices se crean con la función meshgrid. Estas matrices representan respectivamente las coordenadas x e y de todos los puntos de la retícula. La matriz de valores Z se calcula a partir de las matrices de coordenadas X e Y. Finalmente hay que dibujar esta matriz Z con la función mesh, cuyos elementos son función elemento a elemento de los elementos de X e Y. Véase como ejemplo el dibujo de la función sen(r)/r (sio r=sqrt(x+y); para evitar dividir por se suma al denominador el número pequeño eps). A continuación, se presenta el código para generar el gráfico. >> close all >> x=-8:.5:8; y=x; >> [X,Y]=meshgrid(x,y); >> R=sqrt(X.^2+Y.^2)+eps; >> W=sin(R)./R; >> mesh(w) 1.5 -.5 4 2 2 4 Ing. Efraín Nava pág 17

Se habrá podido comprobar que la función mesh dibuja en perspectiva una función en base a una retícula de líneas de colores. El color depe del valor z de la función. Ejecútese ahora el comando: >> surf(w) y obsérvese la diferencia. En vez de líneas aparece ahora una superficie. El color de la superficie depe también del valor de la función. 1.5 -.5 4 2 2 4 Dibujo de Líneas de Contorno: Funciones Contour y Contour3 Una forma distinta de representar funciones tridimensionales es por medio de isolíneas o curvas de nivel. A continuación se verá cómo se puede utilizar estas representaciones con la matriz de datos W que se calculó previamente: >> contour(w,2) 3 25 >> contour3(w,2) 2 15 1 5 1.5 1 2 3 -.5 3 2 1 1 2 3 donde "2" representa el número de líneas de nivel. Si no se pone se utiliza un número por defecto. Ing. Efraín Nava pág 18

Otras posibles formas de estas funciones son las siguientes: contour(w, val) sio val un vector de valores para las isolíneas a dibujar contour(x,y,w,2) se utilizan x y y para dar valores a los ejes de coordenadas contour(w,2, r-- ) se puede especificar el tipo de línea como en la función plot contourf(w, val) análoga a contour(), pero rellenando el espacio entre líneas Ing. Efraín Nava pág 19