Sunteți pe pagina 1din 21

Apuntes de MATLAB

lvaro Bustinduy Candelas

El paquete MATLAB (MATrix LABoratory) es un entorno interactivo basado en el clculo de matrices. En este seminario nos proponemos dar una introduccin bsica al manejo de este programa.

CONTENIDOS

1. Acceso a MATLAB 2. Operaciones aritmticas 3. Vectores y matrices 4. Operaciones con matrices 5. Polinomios 6. Programacin con MATLAB

1. ACCESO A MATLAB
Se inicia ejecutando la aplicacin MATLAB dentro del entorno que estamos utilizando (en nuestro caso un PC y un sistema operativo de tipo WINDOWS). A continuacin, aparecer una ventana (que llamamos ventana de rdenes). Para comunicarse con MATLAB el usuario debe escribir los datos o instrucciones (que mostramos en color rojo con letra mquina de escribir) a continuacin del smbolo EDU>>. . Una vez escrito lo que desea el usuario, si se pulsa la tecla de retorno,

aparece en color negro la respuesta dada por MATLAB a la instruccin tecleada. Tengamos en cuenta que :

MATLAB distingue entre maysculas y minsculas. Los comentarios, que vendrn en color morado, deben ir precedidos por % para que MATLAB los ignore. Las rdenes ejecutadas por MATLAB con anterioridad pueden recuperarse siempre con las teclas <ARRIBA> y <ABAJO>. Con diary nombre_fichero MATLAB ordena grabar en un fichero la sesin de todo lo que se ha visto por pantalla hasta que se ejecuta diary off. Si se quiere volver a guardar se ejecuta la de nuevo la orden diary off. Para acceder a la ayuda de MATLAB basta teclear help en la ventana de rdenes, donde se puede encontrar informacin sobre

2. OPERACIONES ARITMTICAS
En MATLAB se pueden realizar las operaciones aritmticas siguientes: + Sumar - Restar * Multiplicar / Dividir ^ Elevar a una potencia Cuando los clculos que se hacen no se asignan a una variable determinada se asignan por defecto a la variable de respuesta ans. Ejemplo. EDU>> 5+3 ans = 8

En cambio, cuando el clculo se asigna a una variable en concreto, el resultado queda guardado en ella. Ejemplo. EDU>> x=8+7 x = 15 Si queremos conocer el valor de una variable, es suficiente con escribir su nombre. Ejemplo. EDU>> x x = 15 Cuando aadimos un punto y coma (;) al final de una instruccin, entonces no se muestra la respuesta en la ventana de rdenes. Ejemplo. EDU>> y=6*8; ... pero no por ello deja de realizarse el clculo. EDU>> y y = 48 Existe un orden de prioridad en el que se efectan las operaciones: primero las potencias, despus las multiplicaciones y divisiones y, finalmente, las sumas y restas. Las operaciones de igual prioridad se evalan de izquierda a derecha. Ejemplos. EDU>> 2/4*3 ans = 1.5000

EDU>> 2/(4*3) ans = 0.1667

3. VECTORES Y MATRICES
Para definir un vector fila, es suficiente escribir sus coordenadas entre corchetes. Ejemplo: EDU>> v=[2 4 6] % Vector de 3 coordenadas v= 2 4 6 EDU>> w=[1 2 3]; El operador ' es el de trasposicin (en realidad trasposicin y conjugacin): EDU>> w' ans = 1 2 3 Otra manera muy til en que podemos declarar vectores con MATLAB es la siguiente: supongamos que queremos construir un vector tal que la diferencia entre dos cualesquiera de sus coordenas consecutivas sea una cantidad constante, por ejemplo, que la primera sea 0, la ltima 10 y la distancia entre dos consecutivas sea 2, basta escribir: EDU>> vector1=[0:2:10] vector1 = 0 2 4 6 8 10 Si lo que conocemos del vector es que la primera coordenada vale 0, la ltima 10 y que tiene 6 en total, escribiremos:

EDU>> vector2=linspace(0,10,6) vector2 = 0 2 4 6 8 10 MATLAB permite acceder a partes especficas de un vector con la misma notacin que hemos utilizado para crearlos. Ejemplos. EDU>> vector2(1:3) %las tres primeras coordenadas de vector2 ans = 0 2 4 EDU>> vector2(3) %segunda coordenada de vector2 ans = 4 EDU>> vector2(1:2:4) %las dos primeras cordenadas impares de vector2 ans = 0 4 Casi todos los comandos bsicos de MATLAB se resuelven utilizando matrices. Las matrices 1x1 se ven como escalares y las matrices con una fila o columna se interpretan como vectores. En MATLAB las matrices se escriben como los vectores, pero separando las filas mediante un punto y coma o un retorno de carro. Ejemplos. EDU>> M=[1 2 3;4 5 6;7 8 9] %Asignamos a la variable M una %matriz 3x3 M = 1 2 3 4 5 6 7 8 9 EDU>> M' %Su traspuesta (su adjunta)

ans 1 4 2 5 3 6

= 7 8 9

EDU>> N=[7 4 6 %Asignamos a la variable N una matriz 3x3 3 5 8 3 9 10] N 7 3 3 = 4 6 5 8 9 10

Otra posibilidad para crear matrices es adjuntar vectores. Ejemplo. EDU>> L=[vector1 %Asignamos a la variable L una matriz 2x6 0 0 0 0 0 1] %resultado de adjuntar dos vectores L = 0 2 4 6 8 10 0 0 0 0 0 1 Cada elemento de una matriz (entrada) se identifica escribiendo el nombre de la matriz y, entre parntesis, sus respectivos ndices: Ejemplo. EDU>> L(1,3) %Elemento en la primera fila y tercera columna de L ans = 4 Tambin se puede acceder a un fila o columna entera. Ejemplo. EDU>> L(:,2) % Segunda columna de L

ans = 2 0 EDU>> L(2,:) % Su segunda fila de L ans = 0 0 0 0 0 1 Acceder a la matriz como si fuera una columna. Ejemplo. EDU>> L(3:10) % Las entradas tercera a dcima de L como columna ans = 2 0 4 0 6 0 8 0 o acceder a cualquiera de sus submatrices EDU>> L(1:2,[1 3]) % Submatriz formada por los elementos que % estn en las dos primeras filas y en la ans = % primera y tercera columnas. 0 4 0 0

Se puede conocer siempre el tamao de una matriz y la longitud de un vector: EDU>> size(L) %Dimensiones de la matriz L (nmero de %filas y de columnas) ans = 2 6 EDU>> size(vector1) ans = 1 6

Podemos definir algunas matrices especiales como, por ejemplo, la matriz identidad: EDU>> eye(3) ans 1 0 0 1 0 0 = 0 0 1

La matriz cuyas entradas son todas uno: EDU>> ones(3) ans 1 1 1 1 1 1 = 1 1 1

La matriz cuyas entradas son todas cero: EDU>> zeros(3) ans 0 0 0 0 0 0 = 0 0 0

4. OPERACIONES CON MATRICES


En MATLAB se pueden realizar las operaciones siguientes: + Sumar - Restar * Multiplicar ^ Elevar a una potencia

' Trasponer

Para operar dos matrices han de tener tamao compatible con esa operacin. MATLAB da lugar a a un mensaje de error, por ejemplo si se suman dos matrices no escalares con diferente nmero de filas o columnas. Ejemplos. EDU>> B=[2 4;6 8]; EDU>> B*[1,2] ??? Error using ==> * Inner matrix dimensions must agree. EDU>> B*[1,2]' ans = 10 22 EDU>> C=B' C = 2 6 4 8 EDU>> 3*(B*C)^4 ans = 100005888 226068480 226068480 511039488

Una de las caractersticas de MATLAB es que dispone de un gran nmero de funciones que actan sobre un a matriz entrada a entrada. La suma, resta y producto por un escalar se realizan elemento a elemento, sin embargo, elevar a una potencia, multiplicar y dividir no. Estas operaciones pueden hacerse entrada a entrada anteponiendo un punto al smbolo de la operacin

correspondiente: .*, ./ y .^ . Ejemplos. EDU>> A=[1 3 5; 7 9 11; 13 15 17]; A^3 % Calcula el producto AAA ans = 2421 3051 3681 6255 7857 9459 10089 12663 15237 EDU>> A.^3 % Calcula la potencia cbica de cada entrada de A ans = 1 27 125 343 729 1331 2197 3375 4913 EDU>> log(A) % Calcula el logaritmo de cada entrada de A ans = 0 1.0986 1.6094 1.9459 2.1972 2.3979 2.5649 2.7081 2.8332

5. POLINOMIOS
Con MATLAB se puede trabajar con polinomios de forma sencilla. Es suficiente tener en cuenta que un polinomio no es nada ms que un vector, en que el orden de los coeficientes va de mayor a menor grado. Ejemplos. EDU>> p=[3 5 2 8 6] % 3*x^4+5*x^3+2*x^2+8*x+6 p = 3 5 2 8 6

EDU>> q=[6 2 1 7 8] % 6*x^4+2*x^3+x^2+7*x+8 q = 6 2 1 7 8 Adems, MATLAB incluye funciones especficas para operar con polinomios. Por ejemplo, si queremos evaluar lo que vale un polinomio en un punto. Ejemplo. EDU>> polyval(p,-1) % Evaluacin de 3*x^4+5*x^3+2*x^2+8*x+6 en x=-1 ans = -2 Tambin es posible multiplicar dos polinomios. Ejemplo. EDU>> conv(p,q) % producto de p por q ans = 1 36 25 78 113 74 78 106 48 O obtener el cociente que se obtiene al dividirlos. EDU>> deconv(p,q) % cociente resultado de dividir p entre q ans = 0.5000 EDU>> roots(p) % Raices del polinomio p ans = -1.7793 0.4292 + 1.1502i 0.4292 - 1.1502i -0.7458

5. PROGRAMACIN CON MATLAB


El sistema MATLAB incluye las instrucciones tpicas de un lenguaje estructurado: for, while e if. 5.1 CONSTRUCCIN for Con el bucle for se repite un conjunto de sentencias un nmero finito de veces. Su esquema general es: for variable = expresin, sentencias, end o, lo que es lo mismo: for variable = expresin sentencias end En cada iteracin MATLAB guarda una columna de la expresin en la variable, ejecutndose las sentencias hasta la siguiente sentencia end. Ejemplo. Para calcular un vector cuyas componentes son los cinco primeros nmeros naturales bastara con escribir el siguiente bucle en la lnea de rdenes: EDU>> for i=1:5, v(i)=i, end v = 1 v = 1 2 v = 1 2 3 v = 1 2 3 4

v = 1 2 3 4 5 De esta forma vemos cmo se va construyendo el vector en cada iteracin. Si slo desamos saber el resultado final aadimos un punto y coma al final de la construccin del bucle: EDU>> for i=1:5, v(i)=i; end, v EDU>> v=1 2 3 4 5 5.1 CONSTRUCCIN while La construccin while repite un conjunto de sentencias mientras se cumpla una condicin. Su esquema general es: while condicin, sentencias end o, lo que es lo mismo: while condicin sentencias end

5.1 CONSTRUCCIN if La construccin if ejecuta un conjunto de sentencias si una condicin se cumple. Su forma general es: if condicin sentencias end

Tambin existe la opcin de que se ejecute otro conjunto de sentencias si la condicin no se cumple: if condicin sentencias else sentencias end Lo ms practico cuando se programa en MATLAB es editar ficheros.m. Estos ficheros son ficheros de texto que contienen rdenes de MATLAB. Para utilizarlos se siguen los siguientes pasos:

1. Escribimos el fichero en el editor de MATLAB o en cualquier editor ASCII. 2. Lo guardamos con extensin .m. 3. Ejecutarlo escribiendo en la lnea de rdenes el nombre del fichero

Matlab desde lnea de comando Para entrar en Matlab pulse dos veces sobre el icono de Matlab que encontrar en su pantalla. Cuando haya entrado observar una ventana que, simplemente, espera sus comandos. Ver por tanto el signo del prompt >> A partir de ahora puede hacer las operaciones que desee. Por ejemplo, sumar dos nmeros >> 5 + 7 Si aprieta al retorno de carro observar ans = 12 >>

Esto indica que la operacin que ha tecleado se ha realizado, y Matlab muestra el resultado en pantalla. Observe que no slo muestra el resultado, sino que adems ha definido una variable de nombre ans (last answer) que contiene el valor numrico 12. De hecho, si ahora teclea >> ans observar el resultado (tras, como antes, apretar el retorno de carro) ans = 12 >> de forma que Matlab le indica el contenido actual de dicha variable. Podemos definir cualquier variable a nuestro gusto. Por ejemplo >> A = 13 ; Si aprieta el retorno de carro, no observar eco alguno en pantalla, pero la variable habr sido definida. La terminacin con punto y coma hace que se suprima el eco. Esto ser til sobre todo en programas, para evitar as que todas y cada una de las operaciones aparezcan en pantalla. Si ahora quiere saber cuntas variables tiene en el entorno de trabajo puede teclear >> whos y observar >> whos Name Size Bytes Class A 1x1 8 double array ans 1x1 8 double array Grand total is 2 elements using 16 bytes En efecto, dispone de dos variables, de nombres A y ans. Note que, en realidad, ha definido dos matrices de nmeros reales, cuyo tamao es de 1 fila y 1 columna. A qu se debe esto? A que en realidad Matlab opera con matrices, un caso particular del cual es un nmero real. Puede, por tanto, definir vectores >> B = [5 7 8 9]

B= 5789 O definir matrices >> C = [5 7 8 9; 12 14 16 18] C= 5789 12 14 16 18 Si ahora vuelve a examinar el entorno de trabajo >> whos Name Size Bytes Class A 1x1 8 double array B 1x4 32 double array C 2x4 64 double array ans 1x1 8 double array Grand total is 14 elements using 112 bytes ver que, en efecto, todas las variables tienen el mismo tratamiento, es decir, tratamiento matricial, y los escalares y los vectores son simples casos particulares de matrices. Llegados a este punto, resulta particularmente til explorar la creacin de matrices especiales mediante comandos como ones, zeros, eye, etc... Para ello, puede acudir a la ayuda en lnea de matlab mediante help nombre_de_funcion. Ntese que al final del volcado en pantalla al que da lugar el comando help, se proporcionan otra serie de funciones relacionadas que tambin puede ser interesante explorar. De hecho, puede hacer operaciones matriciales/vectoriales/escalares de forma transparente. Algunos ejemplos seran

Trasposicin de una matriz >> D=C' D= 5 12 7 14 8 16 9 18

Conversin de un vector fila en un vector columna >> B' ans = 5 7 8 9

Producto de dos matrices >> C*B' ans = 219 448

Invertir una matriz cuadrada >> inv(C*C') ans = 1.1856 -0.5773 -0.5773 0.2822

Matlab permite, asimismo, realizar operaciones sobre cada elemento de la matriz. Por ejemplo,

Suma de un escalar a cada elemento de la matriz >> C >> C = 5789 12 14 16 18 >> C+2 ans = 7 9 10 11 14 16 18 20

Multiplicar cada elemento por un escalar

>> C*A ans = 65 91 104 117 156 182 208 234

Realizar operaciones lgicas sobre cada elemento de la matriz >> C >= 0 ans = 1111 1111 Este resultado indica que todos los elementos de la matriz son no negativos. No obstante, podemos cambiar la comparacin y cambiar el resultado >> C >10 ans = 0000 1111 ya que slo la segunda fila de la matriz C presenta valores superiores a 10.

Multiplicar dos matrices (de las mismas dimensiones) elemento a elemento >> F = [1 2 4 9; 9 3 6 0] F= 1249 9360 >> C.*F ans = 5 14 32 81 108 42 96 0 Observe que hemos antepuesto un "punto" al signo de la multiplicacin. Este punto hace que las operaciones sean realizadas elemento a elemento.

Elevar los elementos de una matriz a una cierta potencia. Por ejemplo, compare los resultados obtenidos haciendo >> (C*C')^2 ans = 248665 510272 510272 1047104

respecto de >> (C*C').^2 ans = 47961 200704 200704 846400 En el primer caso hemos multiplicado una matriz cuadrada (el resultado de C*C') por ella misma. En el segundo, hemos elevado al cuadrado cada elemento de la matriz cuadrada C*C'. Matlab dispone tambin de una potente semntica para poder indexar elementos dentro de las matrices de una forma rpida y eficiente. Algunos ejemplos ilustrarn esta forma de indexacin.

Podemos referirnos a cada elemento de una matriz como >> C C= 5789 12 14 16 18 >> C(1,3) ans = 8

Asismo, podemos extraer una submatriz de C, consistente en la primera fila y todas las columnas de C

>> C(1,:) ans =

5789 O bien la tercera columna y todas las filas >> C(:,3) ans = 8 16

O bien las dos primeras filas y las tres primeras columnas

>> C(1:2,1:3) ans = 578 12 14 16

O bien las dos primeras filas y las columnas de 2 a 4

>> C(1:2,2:4) ans = 789 14 16 18

O bien, las dos primeras filas y las columnas 2 y 4

>> C(1:2,2:2:4) ans = 79 14 18 En este caso, la sentencia 2:2:4 ha creado un vector de ndices que comienza en 2 y, con incrementos de 2, llega hasta 4. Observe el resultado que obtendra tecleando >> 1:7:21 Puede consultar las posibilidades que presenta el operador ":" tecleando help colon.

Ejercicio: Cree una matriz de M filas y N columnas (a elegir) de nmeros aleatorios y, en una nica lnea, escriba una sentencia que le indique el nmero de elementos de dicha matriz que es mayor que 0.5. Para ello, puede resultarle til considerar alguna de las funciones siguientes: rand, randn, sum, length, find. Puede consultar la ayuda en lnea de Matlab en relacin con sta y otras funciones tecleando help nombre_de_funcion.

S-ar putea să vă placă și