FUNDAMENTOS DE MATLAB MATrix LABoratory Características básicas ► Lenguaje de programación propio, optimizado para trabajar con matrices. ► Escalares (reales y complejos), cadenas de caracteres y estructuras más complejas. ► Gráficos en 2D y 3D. ► Código básico y librerías especializadas (toolboxes). Usos típicos: ► Cálculos matemáticos Desarrollo de algoritmos Adquisición de datos Modelación y simulación Análisis de datos, exploración y visualización Gráficos científicos y de ingeniería Desarrollo de aplicaciones, incluyendo interfaz gráfica de usuario Entorno de trabajo (1) Command Window - los comandos se escriben a continuación del prompt (>>). ► Current Directory - muestra los ficheros del directorio activo. ► Workspace - contiene información sobre todas las variables definidas en la sesión de trabajo. Permite ver y modificar las matrices con las que se esté trabajando. ► Command History - muestra los últimos comandos ejecutados en la ventana de comandos. ► Start - acceso a los principales módulos de MATLAB. ► Help – Proporciona información y ayuda. Línea de comandos (help, lookfor), ventana Help, manuales PDF. ► Editor – Editor de ficheros y depurador de errores. (debugger). ► Entorno de trabajo (2) ► Los programas de MATLAB se encuentran en archivos o ficheros con la extensión *.m (texto ASCII). ► Los ficheros *.m se ejecutan tecleando su nombre en la línea de comandos (sin la extensión). ► Para que un fichero *.m pueda ser ejecutado debe estar en el directorio actual (dir) o en un directorio indicado en el path. ► Al iniciar MATLAB se ejecuta el fichero llamado startup.m (arranque personalizado). ► MATLAB calcula siempre con doble precisión, e.d., guardando cada dato en 8 bytes. Formatos numéricos ► Los formatos numéricos con los que MATLAB muestra los resultados son: short punto fijo con 4 cifras decimales (default) short e notación científica con 4 decimales short g notación científica o decimal, dependiendo del valor long punto fijo con 15 decimales hex cifras hexadecimales bank números con dos cifras decimales long e notación científica con 15 decimales long g notación científica o decimal, dependiendo del valor rational expresa los números racionales como cocientes de enteros Programación y comandos (1) ► ► ► ► ► ► ► ► ► Matlab no tiene en cuenta los espacios. Matlab distingue entre mayúsculas y minúsculas. El punto y coma al final de una expresión indica que se calcula su resultado pero no se muestra en la pantalla. Si una expresión es demasiado larga para que quepa en una línea, se colocan tres puntos (…) seguido de enter y esto indica que la expresión continúa en la siguiente línea. En una línea de comandos se pueden escribir varias instrucciones separadas por comas. Se pueden recuperar comandos anteriores con el Command History o con las flechas. Se usa el caracter % al inicio de un comentario. Los nombres de variables deben empezar siempre con una letra. No hace falta declarar las variables a utilizar. Programación y comandos (2) ► Al salir del programa todo el contenido de la memoria se borra automáticamente. Para guardar una sesión (excepto gráficos) o matrices en forma selectiva se usa save. El comando save sin argumentos guarda todas las variables de la sesión en un archivo binario llamado matlab.mat en el directorio actual. Los argumentos que se pueden usar son: nombre de archivo, variables a guardar, formato. ► Para recuperar el estado de la sesión o las variables guardadas se usa load. ► Operadores aritméticos ► Operadores relacionales ► Suma : a + b Resta : a - b Multiplicación: a * b División : a / b Potencia : a ^ b <, > <=, >= == ~= menor, mayor que menor o igual que, mayor o igual que igual que distinto que Operadores lógicos &, && and | , || or ~ negación lógica (help ops) ► Operadores Matriciales Suma : + Resta : – Multiplicación : * Transpuesta : ' Potencia: ^ División-izquierda : \ (equivale a pre-multiplicar por la inversa de la matriz, se usa en la resolución de sistemas de ecuaciones lineales Ax=b, cuya solución estaría dada por: x = A \b) División-derecha : / Producto elemento a elemento : .* División elemento a elemento : ./ y .\ Elevar a una potencia elemento a elemento : .^ Construcción de Vectores y Matrices (no es necesario declararlas o establecer de antemano su tamaño) Vectores fila y columna >> x = [3, -1, 4, 7, -2]; asignación directa de un vector fila >> x = [3 -1 4 7 -2]; los elementos pueden separarse con espacios o comas >> x(2) = 5; asignación de uno de sus componentes >> t = [3; -1; 4]; asignación directa de un vector columna (los elementos pueden separarse con enter) >> t = x’; mediante la transpuesta de un vector fila >> y = [3, x, -6]; asignación usando otro vector >> y = 2:10; asignación de valores con incremento 1 >> y = 1:0.1:3; con incremento diferente de 1 (en este caso el incremento es de 0.1) >> y = 2*x; asignación de valores mediante una operación escalar >> y = sin(x); o mediante una función Matrices Los elementos de una misma fila se separan con espacios o comas y las filas se separan con enter o con caracteres punto y coma (;). >> A = [2 -3; 5 1]; asignación directa de una matriz 2x2 >> A(2,1) manejo de uno de sus componentes (el primer índice indica la fila y el segundo la columna) >> A1 = [2,-3; 5,1; 0,7] una matriz 3x2 >> A2 = [x; x]; una matriz 2x4 >> b = [5, 6]; vector fila de 2 columnas >> C = [A; b]; C es una matriz 3x2 >> D = [A, b’]; D es una matriz aumentada 2x3 >> x = C(1, :); asigna al vector x la primera fila de C >> y = C(:, 1); asigna al vector y la primera columna de C >> B = A1'; asigna a la matriz B la traspuesta de A1 >> E = A1 * B; resulta una matriz simétrica >> F = inv(A) calcula la inversa de A ► Las matrices se almacenan por columnas por lo que puede accederse a cualquier elemento de una matriz con un sólo subíndice. ► Se puede trabajar con matrices de más de dos dimensiones: A(i,j,k). Ejemplo: A = randn(2,3,2). ► Para realizar operaciones con matrices se debe tener en cuenta su tamaño. ► Números muy grandes o infinito se representan como inf. ► Los resultados que no están definidos como números (Not a Number) se representan como NaN. Los NaN se propagan al realizar con ellos cualquier operación aritmética (para evitarlo utilizar nanmean, nanstd, etc). ► Matrices especiales eye(n) eye(m,n) matriz identidad de tamaño nxn matriz de tamaño mxn con 1’s en la diagonal y ceros en cualquier otra entrada zeros(n) matriz de ceros de tamaño nxn zeros(m,n) ídem de tamaño mxn ones(m,n) matriz de unos de tamaño mxn linspace(x1,x2,n) genera un vector con n valores igualmente espaciados entre x1 y x2 rand(m,n) matriz de números aleatorios entre 0 y 1, con distribución uniforme, de tamaño mxn randn(m,n) matriz de números aleatorios, con distribución normal de valor medio 0 y varianza 1, de tamaño mxn magic(n) matriz nxn construida con los enteros de 1 a n^2 con la propiedad de que todas las filas, columnas y diagonal suman lo mismo Ejercicios • Ejercicio 1 – Crear una matriz de ceros de 6 x 6 – Asignar el número 1 a todos los elementos del 4 to renglón – Asignar el número 1 en la 3er y 4ta columnas • Ejercicio 2 – – – – – – [ 6 43 2 11 87 A= 12 6 34 0 5 34 18 7 41 9 ] Crear un vector va que contenga los elementos del segundo renglón de A Crear un vector vb que contenga los elementos de la cuarta columna de A Crear un vector vc que contenga los elementos del 1er y 2do renglones de A Crear un vector vd que contenga los elementos de la 2da y 5ta columnas de A Define una matriz E que contenga los elementos del 2 do y 3er renglones de A Define una matriz F que contenga los elementos de los dos primeros renglones de A y de la 2da a la 4ta columna de A