Informática aplicada Introducción Matlab 2do Semestre 2016 Escuela de Ingeniería Civil
Lina Mabel Castro Heredia
[email protected]
Ventana de comandos • Para teclear un comando, el cursor debe estar después del símbolo “>>”, también denominado prompt • Se puede acceder más de un comando en una sola línea. Colocar una coma entre comando y comando. • Un comando anteriormente tecleado puede ser invocado de nuevo. Use las flechas arriba y abajo. • Si se teclea un punto y coma (;) al final de un comando, la salida de dicho comando no será visualizada. • Símbolo %: para hacer comentarios. • Comando clc: borra la ventana de comandos.
Algunas operaciones y funciones
Ficheros script con Matlab • De la ventana de comandos a un script. ▫ El comand window (CW) es usado para pequeños número de comandos ▫ El CW los comandos no pueden ser guardados y ejecutados de nuevo a petición del usuario. ▫ Es engorroso corregir los comandos ya ejecutados.
• Otra forma: Crear un fichero (script, subrutina, mfile) con los comandos para ejecutarlo posteriormente. ▫ Se pueden hacer correcciones ▫ Se llaman de otros ficheros ▫ Se denominan ficheros de procesamiento de comandos o ficheros script.
Notas sobre los ficheros script • Un fichero Script es una secuencia de comando MATLAB • Al ejecutarse se hace en el orden en que están escritos • Cuando un fichero contiene un comando que produce una salida o resultado y no tiene el (;), éste se visualizará en la ventana de comandos. • Se pueden ejecutar tantas veces como se quiera. • Se pueden crear o editar en cualquier editor de texto. • También se denominan ficheros M(archivos M , mfile).
Manipulación de ficheros script • Los scripts se crean y editan en la Ventana Editor/Depurador. • File/New/Script or M-file • Crear carpeta de trabajo
• Los comandos se editan línea a línea • Antes de ejecutarlo deberá guardarlo • Nombre: iniciar por una letra, máximo de 63 caracteres, no usar palabras especiales de Matlab.
Ejecución de un fichero script • Se puede ejecutar: ▫ Tecleando su nombre en la ventana de comandos ▫ También a través del Icono (Run) ▫ Pero para ello, el script debe estar almacenado en el directorio actual
Ejemplo Escriba un script que calcule la raíz cuadrada de los números del 1 al 10. La serie de números debe ser un vector creado en el mismo script. Comente su rutina.
Ejemplo • Escriba un programa que permita llenar la matriz siguiente: Aij=i^2*j^2
Estructuras de control
Para empezar: Comandos de entrada y salida • Matlab tiene varios comandos para generar mensajes y salidas más elaboradas que las que se pueden hacer en comand window. • Usados frecuentemente: • input: para ingresar valores o texto x = input(prompt) str = input(prompt,'s')
• disp: usado para visualizar texto sin mostrar su nombre. A = [15 150]; S = 'Hello World.'; disp(A) disp(S)
Para empezar: Comandos de entrada y salida • fprintf: se usa para visualizar salidas de programas (texto y datos) en pantalla, o bien para almacenarlos en un fichero. • A diferencia del disp, la salida puede tener un formato preestablecido. Se pueden combinar texto y resultados numéricos o variables definida en la mima línea. Para texto: fprintf(‘Mensaje en forma de cadena’) Para datos y texto juntos: fprintf(‘Texto %-5.2f texto adicional’, nombre variable) fprintf(‘…Texto %g….%f…%g….texto adicional’, variable1, variable2, variable3)
fprintf para guarda la salida en un fichero
• Este comando nos permite también la posibilidad de tener las salidas en un fichero. Esto nos permite reutilizarlo en Matlab o en otras aplicaciones. • Paso a: El fichero debe ser abierto. fid=fopen(‘nombre_fichero’,’permisos’)
▫ fid: identidicador del archivo ▫ El nombre del fichero se debe escribir con la extensión (*.txt, *.doc) ▫ Permisos: código que le dice al sistema cómo abrir el archivo. ‘r’: incluida por defecto y se usa para leer del fichero; ‘w’: el fichero se abre para escritura, si el fichero existe su contenido será eliminado; ‘a’: lo mismo que ‘w’, excepto que si el fichero existe entonces los datos serán añadidos al final del fichero.
• Paso b: una vez abierto se usa fprintf para escribir la salida. fprintf(fid, ‘Texto %-5.2f texto adicional’, nombre variable) • Paso c: cerrar el archivo fclose(fid)
Ejemplo • Escriba un programa que entregue el valor absoluto de un numero que debe ingresar el usuario
• Escriba un programa que permita al usuario ingresar un numero y que lo vuela hasta que el seno de éste sea menor que cero.
Operaciones con arreglos • Completar matrices o vectores de forma simple, cuando se pueda hacer eso!! c=1:5 c=[1:5]
• Qué obtiene? d=[1:2:10]
• Qué obtiene?
Operaciones de arreglos • Introduzca los siguientes vectores; a=[1 2 3 4] b=[1; 2 ;3 ;4] c=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] d=[1:5;6:10]
• Se me puede unir matrices o vectores, siempre y cuando tengan las mismas dimensiones. AB=[a;c] BC=[b c]
• Búsqueda de elementos en el vector y matriz. a(3) haga otras búsquedas c(3,3) haga otras búsquedas. c(:,3) c(1,:) c(2,2:4)
Operaciones con arreglos • Para la suma, resta, multiplicación y división de arreglos con escalares: a=[1 2 3 4] c=a+5 d=5*a;
Qué obtiene?
• Sin embargo la multiplicación y la división, y otras operaciones son un poco diferentes, sobretodo cuando no involucra escalares sino arreglos. Por ejemplo, en matemáticas matriciales, la multiplicación tiene un significado especifico. Es necesario un operador diferente para indicar multiplicación elemento por elemento. Dicho operador es .* (multiplicación punto) a=[1 2 3] y b=[6 7 8] a.*b ans=[6 14 24]; a./b a.^2
Qué obtiene?
Generar matrices a partir de funciones
Ejemplo • Un profesor de una materia desea conocer la cantidad de alumnos que se eximirán de su ramo. Cree un programa que lea el número de estudiantes y las notas por cada estudiante, tal que al final de la lectura de notas por cada alumno calcule el promedio y entregue un mensaje que diga que esta eximido. Haga un contador que al final de evaluar a todos los estudiantes, le entregue al profesor un mensaje con la cantidad de estudiantes eximidos. • Adicionalmente, el profesor quiere una matriz donde se guarden las notas de los alumnos por cada estudiante. Las columnas representan los estudiantes y las filas las notas correspondiente a cada estudiante.
Ejemplo • Tabular la siguiente función para valores de x desde -1 hasta 1 incremento de 0.1
Funciones internas de Matlab • Matlab tiene una extensa librería de funciones internas. Ej:sqrt x=9 b=sqrt(x); c=[4,6,16]; p=sqrt(c);
Qué obtiene? • Funciones con más de una entrada, Ej: rem (esta es la función residuo, requiere dos entradas, el dividendo y un divisor. rem(x,y) rem(10,3) ans=1
Funciones internas de Matlab • Una bastante utilizada para conocer las dimensiones de las matrices es: size(x,u) d=[1 2 3; 4 5 6] f=size(d); filas=size(d,1); columnas=size(d,2); [x,y]=size(d);
Qué obtiene?
• Para medir un vector m=[5:10] L=length(m);
Qué obtiene?
Formato de despliegue • En Matlab existen algunos formatos de despliegue. Usted puede cambiar el formato de despliegu • Pruebe en command window esto: a=5 a=5.1
• Cuántos decimales tiene? • Matlab tiene otras formas de desplegar esto, intente: format long,a format bank,a format short,a m=105.356789 format short e,m
Qué obtiene?
Ejemplo de matriz, lectura, asignación Precipitación
Tmax
Tmin Tome la precipitación y súmele 1.2 solo a los valores mayores que cero. Cree una matriz multidimensional donde se tenga la Temp mínima en grados Celsius y también en grados Kelvin.
Ejemplo • Genere los número para el sorteo de la lotería. • El usuario debe elegir varios números entre una lista. Escribir una función en Matlab que genere la lista de n números enteros distribuidos uniformemente entre un rango a y b. Todos los números seleccionados deben ser distintos.
▫ Utiliza la función para generar una lista de 6 números que varían entre 1 y 49 ▫ Utilizar la función para generar una lista de 8 números que varían entre 60 y 75 ▫ Utilizar la función para generar una lista de 9 números que varían entre -15 y 15
Ejemplo: escribir una tabla en command window • Queremos desplegar una tabla, con dos columnas: la columna X y la columna Y. Y depende de X, tal que Y es la raíz cuadrada de X.
Ejemplo fprintf de un fichero • Hacer un script con el cual salgan como resultado archivos. El programa genera dos tablas de conversión de unidades. Una de las tablas contiene magnitudes de velocidad, de millas por hora a kilómetros por hora. La otra tabla convierte magnitudes de fuerza, de librasfuerza a Newton. Cada conversión se guarda en un fichero de texto.
Funciones y ficheros de función • Las funciones se pueden expresar en la forma y=f(x) • Existen muchas funciones programadas en MATLAB. Ej: sqrt (x), sin(x), cos (x), exp (x), etc. • Cuando la expresión de la función es sencilla y solo necesita ser ejecutada una vez, ésta se puede incluir como código propio del programa. • Sin embargo, cuando la expresión se tiene que evaluar muchas veces, para diferentes tipos de argumentos, es conveniente crear una función definida por el usuario (MODULOS!!!). • Las entradas y salidas de la función pueden estar compuestas por uno o más variables, y cada una de ellas puede ser escalar, vectores, matrices de cualquier tamaño.
Creación de un fichero de función • Los ficheros función se crean y editan como si se trataran de ficheros scripts, es decir, usando la ventana de Edición/Depuración. function[argumentos de salida]= nombre_funcion(argumentos de entrada) End
• OJO: el nombre de la función debe ser el mismo que el nombre del m-file!!!! • La función debe tener al menos un argumento de entrada. Para más de un argumento, se usan las comas para separarlos. • La salida puede ser uno o varios argumentos, o no tener ninguno.
Ejemplo • La notal final de un ramo se calcula como 20% interrogación 1, 20% la interrogación 2, y 60% el examen final. La nota definitiva es la mejor nota entre la nota del examen y la nota obtenida con todas las ponderaciones. A continuación el programa debe preguntar si el usuario quiere calcular una nueva nota o finalizar (pulsando la tecla “s”)