Está en la página 1de 10

Introduccin a Matlab

Ing. Julio Csar Nieves Godnez. Departamento de Comunicaciones Escuela Superior de Ingeniera Mecnica y Elctrica

Este tutorial est dirigido a personas con ciertas habilidades de programacin en otros lenguajes, por lo que no se explicar a detalle ninguna de las estructuras de programacin que se han empleado comnmente en esos lenguajes. En este tutorial simplemente se enfatizar en la forma en que se implementan en Matlab diversas estructuras de programacin de uso comn y en las caractersticas particulares de este lenguaje. La mejor forma de familiarizarse con Matlab es siguiendo este tutorial enfrente de la computadora y ejecutando los distintos comandos. Al abrir Matlab, lo primero que aparece es la ventana de comandos, la cual nos permite comunicarnos con el intrprete de este lenguaje de programacin. Para simplificar el proceso de introducir comandos, existen algunas teclas especiales que se usan para editar comandos mal tecleados o invocar a lneas de comandos previas. Llama a la lnea previa. Llama a la lnea siguiente. Se mueve un caracter a la izquierda. Se mueve un caracter a la derecha.

Esc

Borra la lnea de comando.

Adicionalmente, desde la barra de men de la ventana de comandos se tiene un acceso simplificado a varios comandos tiles de Matlab y Windows. Antes de trabajar con los primeros comandos, es recomendable crear un subdirectorio de trabajo desde Windows. Esto se realiza desde la ventana de Matlab con el comando cd: cd c:\usuarios\midirectorio As, todos los datos y programas que se graben en el disco duro estarn en el subdirectorio que nosotros indiquemos. El comando help nos permite conocer la operacin de los distintos comandos, funciones y procedimientos. Por ejemplo, para obtener informacin sobre el uso del comando cd, se introduce la siguiente lnea en la ventana de comandos de Matlab: help cd Tambin se puede tener acceso a la ayuda ofrecida por help desde la barra de herramientas de la ventana de comandos de Matlab. El elemento bsico de trabajo de Matlab es una matriz numrica rectangular. Matlab no contiene ninguna declaracin de dimensionamiento, porque asigna espacio en

Inicio Se mueve al inicio de la lnea de comando. Fin Se mueve al final de la lnea de comando.

memoria a las variables conforme stas se definen. No contiene ninguna declaracin de tipo de variable: todas las variables se manejan como de doble precisin. Las declaraciones de Matlab frecuentemente presentan la siguiente forma: variable = expresin o simplemente expresin Si se omite el nombre de la variable y el signo =, Matlab crea una variable con el nombre ans a la cual le asigna el valor de la expresin. Los nombres de las variables pueden ser cualquier combinacin de letras, nmeros y guin bajo, comenzando con letra. Matlab recuerda slo los primeros 19 caracteres del nombre y distingue entre maysculas y minsculas. Algunas variables ya estn previamente definidas, como es el caso de la variable pi que tiene el valor de 3.1415926 Matlab basa mucho su poder en su extenso conjunto de funciones. Las funciones pueden permitir mltiples argumentos de entrada y de salida. Los argumentos de entrada siguen inmediatamente a la funcin y estn encerrados entre parntesis y separados por comas. Los argumentos de salida preceden a la funcin y al signo =, encerrados entre parntesis cuadrados y separados por comas. Vanse los siguientes ejemplos: theta = atan2(y,x) regresa el arco tangente en cuatro cuadrantes de los puntos con coordenadas (x,y). Por otro lado, [mx,ix] = max(x) regresa el valor mximo mx y el ndice ix del valor mximo entre los componentes del vector x. Este tipo de funciones que permiten argumentos mltiples de salida, pueden regresar menos argumentos que el mximo. Por ejemplo: mx = max(x)

regresar slo el valor mximo del vector x. Las funciones que permiten argumentos mltiples de entrada, en ocasiones especficas pueden aceptar menos argumentos que el mximo permisible. Matlab jams modifica los argumentos de entrada de una funcin, y todas las variables definidas dentro de una funcin solo tienen validez local y se borran cada vez que termina la ejecucin de la misma. Los nombres de las funciones internas de Matlab siempre se deben escribir con minsculas.

1.- Definicin de Matrices y Vectores.


La forma ms sencilla de definir una matriz, cuando esta es pequea, es a travs del teclado. Los elementos de la matriz se introducen por filas, y cada elemento de la fila estar separado por un espacio o una coma. Cada fila de la matriz se separar por medio de un punto y coma o un <return>. El conjunto de elementos de la matriz se encerrar entre parntesis cuadrados. Por ejemplo, al introducir la declaracin A = [1 2 3; 4 5 6; 7 8 9] produce la matriz A= 1 4 7 2 5 8 3 6 9

que queda definida en la variable A. Si la declaracin de la matriz se terminara con un punto y coma, la matriz queda igualmente definida pero Matlab suprime la exhibicin del resultado en la ventana de comandos. Un vector fila o un vector columna se pueden introducir, respectivamente, con las declaraciones: B = [1 2 3]; C = [1; 5; 7];

Un escalar se puede introducir directamente omitiendo los parntesis cuadrados: D = 9; Matlab utiliza las convenciones usuales para la representacin escrita de los nmeros. Cuando se emplea el factor de escala por potencias de 10, hay que cuidar el no dejar espacios en blanco alrededor del caracter e. Por ejemplo: E = 1.5e6 asigna a la variable E el valor .

Las variables i y j estn predefinidas como y permiten crear matrices complejas. Dos formas de introducir una matriz compleja son: Z = [1 2; -3 4] + i*[-5 -6; 7 -8] Z = [1-5i 2-6i; -3+7i 4-8i] lo que produce el mismo resultado. Al introducir la matriz Z de la segunda forma es importante no dejar espacios en blanco alrededor de los signos + y -.

Para hacer referencia a elementos pertenecientes a una matriz, se encierran sus ndices entre parntesis. Por ejemplo, A(2,3) representar el elemento de la segunda fila y la tercera columna de la matriz A. Una caracterstica de Matlab es que las matrices se pueden indexar como si fueran un vector columna largo. As, el elemento A(2,3) de la matriz A se puede referir como A(8). Para generar vectores fila entre dos lmites y con incrementos constantes entre sus elementos, se utilizar el caracter dos puntos. Por ejemplo: x = 2.1:0.1:2.4 produce el siguiente vector fila: x= 2.1000 2.2000 2.3000 2.4000

2.- Operaciones con arreglos.


Por operaciones con arreglos entenderemos operaciones aritmticas entre matrices realizadas elemento por elemento. Se pueden crear expresiones con los siguientes operadores aritmticos: + .* ./ .^ Adicin Sustraccin Multiplicacin Divisin Exponenciacin

Tambin son posibles decrementos. Por ejemplo y = 5:-1:0 produce y=

El punto que precede a algunos operadores es necesario para indicar que se trata de operaciones con arreglos. Todos los operadores requieren de dos operandos de las mismas dimensiones, siendo una excepcin que uno de los operandos sea un escalar, en cuyo caso el escalar operar en cada uno de los elementos de la matriz. Observe los ejemplos: x = [1 2 3]; y = [4 5 6];

0 z1 = y-x z1 =

El valor de incremento por omisin es uno. As y = 2:7

3 genera y= z2 = x.*y

z2 = 4 z3 = y.^x z3 = 4 25 216 10 18

imag abs angle conj

parte imaginaria valor absoluto compleja ngulo de la fase conjugado complejo o magnitud

z4 = 2.^x-y z4 = -2 -1 2

En Matlab se cuenta con los siguientes operadores lgicos y funciones: < <= > >= == ~= not and or xor menor que menor o igual que mayor que mayor o igual que igual a no igual a NO lgico (tambin ~) Y lgico (tambin &) O lgico (tambin |) XOR lgico

Adicionalmente, existe un conjunto de funciones matemticas elementales que se aplican elemento por elemento a arreglos. Algunas de ellas son: round fix ceil floor sign sqrt exp log log10 log2 sin cos tan asin acos atan atan2 real redondeo al entero ms cercano redondeo hacia cero redondeo hacia ms infinito redondeo hacia menos infinito funcin signo raz cuadrada exponente base e logaritmo natural logaritmo base 10 logaritmo base 2 seno coseno tangente arco seno arco coseno arco tangente arco tangente cuadrantes parte real en cuatro

Todos los operandos involucrados en las expresiones lgicas deben de tener las mismas dimensiones, ya que Matlab compara a pares los elementos correspondientes. El resultado de las expresiones lgicas es una matriz de unos y ceros de la mismas dimensiones que tienen las matrices de los operandos. Un uno representa verdadero y un cero representa falso. Es posible que algunos de los operandos sean escalares. A = [1 -2 3; -1 5 2; 2 2 4]; B = [-1 5 8; -1 4 2; -2 3 4]; C = [0 0 3; 4 2 5; 3 4 -6]; L1 = B>0

L1 = 0 0 0 1 1 1 1 1 1

+ * . : 0 1 0 0 0 0 0 1 1

Adicin Sustraccin Multiplicacin Transposicin compleja Transposicin no compleja Indexado o rearreglo de una matriz

L2 = A==B L2 =

L3 = (A~=B) & (C<=0) L3 = 1 0 0 1 0 0 0 0 0

Los operandos para la adicin y la sustraccin deben de ser de las mismas dimensiones. El operador : permite denotar a una matriz como un vector columna con todos los elementos de la matriz extendidos. Observe los siguientes ejemplos de operaciones con matrices. A = [111 12 13; 21 122 23; 31 32 133]; B = [11 12 13; 21 22 23]; M1 = B*A M1 = 1876 3506 M2 = B(:) M2 = 11 2012 3672 2148 3838

La funcin find es muy til con los operadores lgicos. La funcin find encuentra los elementos diferentes de cero en un vector, y, por ende, los elementos que satisfacen alguna condicin relacional. Si y es un vector, find(y<3) regresa un vector con los ndices de los elementos de y que son menores que 3. La funcin find trabaja tambin con matrices, pues una matriz tambin puede indexarse como si fuera un vector columna largo. Vase el siguiente ejemplo: I1 = find((A~=B) & (C<=0)) I1 = 1 4

21 12 22 13 23 x = [3 -1 2]; y = [-2 4 1];

3.- Operaciones con Matrices y Vectores.


Matlab cuenta con los siguientes operadores aritmticos bsicos para el manejo de matrices, los cuales se rigen por la aritmtica de matrices.

M3 = x *y

M3 = -6 2 -4 M4 = x*y M4 = -8 Adicionalmente, existe un conjunto de funciones matemticas matriciales y vectoriales. trace det inv chol dot cross suma de los elementos diagonales de una matriz determinante matriz inversa factorizacin de Cholesky producto punto vectorial producto cruz vectorial 12 -4 8 3 -1 2

rot90 flipud fliplr

rota la matriz 90 voltea la matriz de arriba a abajo voltea la matriz de izquierda a derecha

4.- Grficas en dos dimensiones.


Las funciones elementales en Matlab para realizar grficas bidimensionales son las siguientes: plot title xlabel ylabel legend text grid axis hold genera una grfica lineal ttulo de la grfica etiqueta del eje X etiqueta del eje Y leyenda de la figura anotaciones de texto lneas de cuadriculado escala y apariencia de los ejes mantiene la grfica actual

M5 = dot(x,y) M5 = -8 M6 = cross(x,y) M6 = -9 -7 10

Otra caracterstica de Matlab es que permite operaciones sofisticadas en el manejo de matrices y arreglos mediante sus facilidades avanzadas de indexado. Permite, por ejemplo, que los ndices de una matriz sean a su vez vectores. Las siguientes funciones proveen adicional de matrices y arreglos: diag tril triu crea o extrae diagonales extrae la parte triangular baja extrae la parte triangular alta manejo

Si x y y son vectores, la funcin plot(x,y) grafica los elementos del vector y en funcin de los componentes del vector x, uniendo las coordenadas (xi,yi) con lneas rectas. plot(y) grafica el vector y en funcin de su ndice. Varios tipos de lneas, smbolos y colores pueden obtenerse con la funcin plot(x,y,s), donde s es una cadena de 1, 2 3 caracteres. Al utilizar plot se abrir una ventana para graficar las lneas indicadas en el comando. Si ya se ha abierto una ventana para graficar anteriormente, entonces se borrarn todas las lneas y anotaciones existentes y se comenzar una nueva figura en la misma ventana. Sin embargo, es posible mantener un dibujo de modo que nuevas lneas de los comandos plot se sumen al dibujo existente; esto se hace con el comando hold on. El comando hold off regresa al modo normal de plot, donde los comandos

limpiarn las figuras previas antes de dibujar las nuevas. A continuacin se muestra un ejemplo donde se utiliza la funcin plot. w = linspace(0,2*pi,100); xs = sin(w); xc = cos(w); plot(w,xs,g); hold on; plot(w,xc,r:); hold off; title(seno y coseno); xlabel(radianes); ylabel(amplitud); Esta misma grfica se puede realizar con un solo llamado a plot y sin utilizar hold, como sigue: plot(w,xs,g,w,xc,r:); Si se desea, una ventana grfica se puede subdividir para mostrar mltiples grficas, o se pueden crear ventanas adicionales y seleccionar cul de ellas recibe la nueva salida grfica. Para esto se tienen los siguientes comandos grficos: subplot figure permite grficas mltiples en una misma ventana grfica crea una nueva ventana grfica o selecciona la ventana grfica actual muestra la ventana grfica actual limpia la figura actual cierra la ventana especificada

Otros tipos de grficas bidimensionales se pueden realizar con Matlab usando las siguientes funciones: semilogx semilogy loglog stairs stem bar polar escala semilogartmica con el eje X logartmico escala semilogartmica con el eje Y logartmico grfica con escala log-log grfica tipo escalera grfica de lneas grfica de barras grfica en coordenadas polares

Adicionalmente, la barra de men de la ventana de figura proporciona un acceso simplificado a algunos otros comandos tiles.

5.- Procedimientos y funciones.


Adems de procesar rdenes desde la ventana de comandos, Matlab puede ejecutar secuencias de comandos guardados en archivos llamados archivos-M, debido a que tienen la extensin .m. Los archivos-M son archivos ASCII ordinarios y pueden editarse en un editor de textos que incluye Matlab. Es importante hacer una distincin entre dos tipos diferentes de archivos-M: los procedimientos y las funciones. Los procedimientos son una secuencia de comandos y expresiones. Cuando se invoca un procedimiento, Matlab ejecuta secuencialmente los comandos listados como si stos hubieran sido introducidos directamente a travs del teclado. Los procedimientos operan globalmente en las variables definidas en el espacio de trabajo de Matlab, y las variables definidas en un procedimiento quedan disponibles para operarse en otros procedimientos o desde la ventana de comandos. Los procedimientos pueden incluir llamados a otros procedimientos o funciones,

sgh clf close

subplot(m,n,p) divide una ventana de figura en una matriz de mn de ejes pequeos, y selecciona el p-simo eje para la grfica actual. Los ejes se cuentan a partir de la fila superior, despus la segunda fila, etc.

incluyendo llamados a s mismos. Como ejemplo, supngase que el archivo de texto llamado plots.m contiene las siguientes instrucciones: %Procedimiento para graficar las funciones %seno y coseno w = linspace(0,2*pi,100); xs = sin(w); xc = cos(w); plot(w,xs,g,w,xc,r:); title(seno y coseno); xlabel(radianes); Al teclear la declaracin plots, se ejecutan los comandos anteriores, creando una grfica del seno y del coseno. El smbolo % le indica a Matlab que lo que le sigue es un comentario y debe ser ignorado. Obsrvese que los comandos terminan con el caracter punto y coma, con lo cual se suprime la exhibicin de resultados en la ventana de comandos de Matlab. Las funciones difieren de los procedimientos en que las variables definidas y manipuladas dentro del archivo son locales y no operan globalmente en el espacio de trabajo de Matlab. El intercambio de datos se realiza a travs de un conjunto de argumentos de entrada y salida. Un archivo-M se interpreta como una funcin cuando en la primera lnea aparece la palabra function y el nombre de la funcin junto con las variables de entrada y salida. Por ejemplo, suponga que se tiene un archivo llamado abs2.m, el cual contiene las siguientes declaraciones: function r = abs2(x,y) %Funcin para calcular la magnitud de un %vector complejo r = sqrt(x.^2+y.^2); Si este archivo existe en el directorio actual o en cualquier directorio dentro de una trayectoria de bsqueda, se puede utilizar como cualquier

otra funcin de Matlab. Vase el siguiente uso de la funcin abs2: AReal = [1 3 -2 5]; AImag = [0 -1 3 1]; AAbs = abs2(AReal,AImag); AAbs = 1.0000 3.1623 3.6056 5.0990

Las tres variables x, y y r creadas al llamar a abs2 desparecen al terminar la funcin. Obsrvese que no se necesita que coincidan los nombres de las variables de entrada y salida en la declaracin de la funcin y en su llamado. En este caso, al inicio de la funcin el contenido de AReal se copia en x y el de AImag en y. Al terminar sus operaciones, la funcin asigna el contenido de r a AAbs. Los valores de x y y pueden cambiar en el cuerpo de la funcin, pero los valores de AReal y AImag permanecern iguales. A continuacin se muestra la definicin de una funcin con mltiples argumentos de salida. function [r,fifase] = polar2(x,y) %Funcin para calcular la magnitud y fase de %un vector complejo r = sqrt(x.^2+y.^2); fifase = atan2(y,x); Su llamado con dos argumentos de salida podra ser el siguiente: [AAbs , AAng] = polar2(AReal , AImag); Si se desea, en el llamado a la funcin se pueden obtener menos argumentos de salida (siempre sern los primeros en la lista). Vase el siguiente ejemplo: AAbs = polar2(AReal , AImag);

6.- Anlisis de datos.

Para el anlisis de datos, Matlab proporciona capacidades bsicas en el siguiente grupo de funciones: min max sum prod median mean std var all any componente ms pequeo componente ms grande suma de los elementos producto de los elementos mediana valor medio o promedio desviacin estndar varianza verdadero si todos los elementos son verdaderos verdadero si algn elemento es verdadero

2.5000 I1 = any(p==4) I1 = 1 Si los datos de entrada a las funciones anteriores estn contenidos en una matriz o arreglo, entonces Matlab realiza los anlisis orientados por columnas. Esto quiere decir que si se aplica la funcin max a un arreglo matricial, el resultado ser un vector fila que contiene en cada elemento el valor mximo de cada columna. X = [-2 3 4; 1 -5 6; 0 2 8]; Y = [-2 5 4; 1 4 -6; 0 7 8]; s4 = max(X) s4 = 1 3 8

Si los datos de entrada a las funciones anteriores estn contenidos en un vector, la salida es escalar. Las funciones min y max permiten dos variables de salida. Las dos ltimas funciones, all y any, son funciones lgicas; reciben vectores de 0s y 1s y dan un resultado lgico. Vanse los siguientes ejemplos: p = [3 5 -2 4]; s1 = min(p) s1 = -2 [s2 , ind] = max(p) s2 = 5 ind = 2 s3 = mean(p) s3 =

I2 = all(X==Y) I2 = 1 0 0

I3 = any(all(X==Y)) I3 = 1 El clculo de I3 ilustra una manera de obtener un solo resultado lgico a partir de una matriz de 0s y 1s, en lugar de un vector. Las siguientes funciones proveen capacidades adicionales para el manejo de datos. sort cumsum cumprod arregla en orden ascendente suma acumulativa de elementos producto elementos acumulativo de

La entrada a estas funciones puede ser un vector o una matriz, y el resultado ser del mismo tipo y dimensiones que presentan los

datos de entrada. Por ejemplo, la funcin sort ordena ascendentemente un vector de entrada o cada columna de una matriz de entrada. s5 = sort(X) s5 = -2 0 1 -5 2 3 4 6 8

Nota final.
Este tutorial se bas en notas elaboradas por el Dr. Mauricio Lara Barrn, del Departamento de Ingeniera Elctrica, Seccin de Comunicaciones, del Centro de Investigacin y de Estudios Avanzados del I.P.N.

s6 = cumsum(Y) s6 = -2 -1 -1 5 4

9 -2 16 6

La funcin hist permite calcular y graficar el histograma de un vector de datos. Por ltimo se mencionan algunas funciones que Matlab tiene para el procesamiento de seales. Estas funciones operan primariamente con vectores. filter conv deconv roots poly residue parciales fft ifft ffshift filtrado digital convolucin y multiplicacin de polinomios deconvolucin polinomios y divisin de

races de polinomios polinomios especificadas con races

expansin en fracciones transformada discreta de Fourier transformada discreta de Fourier inversa mueve el origen al centro del espectro