Anda di halaman 1dari 22

INTRODUCCIN A MATLAB.

El presente documento pretende dar una visin general de las posibilidades que ofrece el entorno de trabajo MATLAB 6.0 R12. Se recomienda tener presente el manual Getting Started with MATLAB (Version 6), que encontrar en la carpeta Matlab\introduccin\int-pdf, y consultar la ayuda del entorno tantas veces como sea preciso. El dominio de la herramienta slo puede conseguirse mediante el desarrollo de programas de mayor entidad como el propuesto a lo largo del curso. El manual anteriormente referido se divide en los siguientes apartados: 1) Introduccin. 1.1) 1.2) Qu es MATLAB? Documentacin MATLAB.

2) Entorno de desarrollo. 2.1) 2.2) 2.3) 2.4) 2.5) Introduccin. Iniciando y cerrando MATLAB. El escritorio de MATLAB. Herramientas del escritorio. Otras caractersticas del entorno de desarrollo.

3) Trabajo con matrices. 3.1) 3.2) 3.3) 3.4) 3.5) Matrices. Expresiones. Trabajando con matrices. Ms sobre vectores y matrices. Entradas y salidas de la ventana de comandos.

4) Grficos. 4.1) 4.2) 4.3) 4.4) 4.5) 4.6) 4.7) 4.8) Grficos bsicos. Edicin de dibujos. Dibujos de superficies. Imgenes. Impresin de grficos. Manejo de grficos. Interfaces Grficos de Usuario (GUI). Animaciones.

5) Programacin en MATLAB 5.1) 5.2) 5.3) 5.4) Control de flujo. Otras estructuras de datos. Scripts y funciones. Programas de demonstracin

Vamos a hacer un repaso general de los apartados mencionados insistiendo en la necesidad de que cada uno profundice en el tema en funcin de sus conocimientos previos y necesidades particulares.

1) Introduccin. 1.1) Qu es MATLAB?

MATLAB es un lenguaje de programacin de altas prestaciones que integra la potencia de clculo, la visualizacin de resultados y la sencillez de programacin en un entorno de trabajo agradable. MATLAB es un sistema interactivo cuyo elemento bsico es una matriz que no requiere dimensionamiento previo. La sencillez de este planteamiento facilita la resolucin de problemas que en otros entornos de trabajo resultan ms complejos. MATLAB ofrece una amplia variedad de funciones agrupadas en toolboxes que facilitan el trabajo en cualquier campo cientfico. Adems, debido a su enorme difusin en el mbito universitario, se puede encontrar aplicaciones desarrolladas en este entorno de trabajo que podremos adaptar a nuestra necesidades. El entorno de trabajo MATLAB consta cinco partes: a) b) c) d) e) 1.2) El entorno de desarrollo. Las libreras de funciones. El lenguaje de programacin MATLAB. El manejo de grficos. El Interfaz de Programas de Aplicacin (API) Documentacin MATLAB.

El manual Getting started with MATLAB es una buena referencia para comenzar a familiarizarse con el entorno de trabajo. Adems de sta, dispondr de otras referencias para profundizar en distintos aspectos de la herramienta. Por otro lado, dispondr de la ayuda on-line, que le prestar toda la informacin disponible relacionada con su pregunta. 2) Entorno de desarrollo. 2.1) Introduccin.

Este segundo punto no es ms que una breve introduccin a MATLAB que permite conocer como iniciar y cerrar una sesin de MATLAB as como empezar a descubrir las herramientas y funciones ms importantes de la herramienta.

2.2)

Iniciando y cerrando MATLAB.

Para arrancar MATLAB bajo un entorno Windows, basta con localizar el icono de MATLAB R12 dentro del submen Programas del men Inicio, o hacer doble click en un icono de acceso directo a la aplicacin. Para cerrar la aplicacin, basta con teclear el comando quit desde la lnea de comandos o buscar la opcin EXIT MATLAB en el men FILE. Para conservar las variables del espacio de trabajo ( orkspace) y ejecutar W funciones y programas predefinidos, pueden usarse los ficheros *.m 2.3) El escritorio de MATLAB.

Una vez iniciado el programa aparece el escritorio de MATLAB, cuya apariencia puede modificarse abriendo y cerrando las distintas herramientas. En la opcin VIEW podr seleccionar las ventanas que desee tener abiertas.

2.4)

Herramientas del escritorio. Ventana de comandos: sirve para ejecutar comandos e invocar funciones y ficheros .m Histrico de comandos: recoge las ltimas instrucciones. Launch Pad: proporciona acceso a herramientas, demos y documentacin. Help Browser: facilita la bsqueda de documentacin. Current Directory Browser: permite seleccionar el directorio actual en el que estn las funciones que pueden invocarse en cada momento. Worksapace Browser: en el que se almacenan las variables empleadas en una sesin. Editor/Debugger: para crear y depurar ficheros .m y funciones

2.5)

Otras caractersticas del entorno de desarrollo. Existe adems al posibilidad de importar/exportar variables del workspace de/a otras aplicaciones. Del mismo modo, existen herramientas para depurar las prestaciones de los ficheros de MATLAB.

3) Trabajo con matrices. 3.1) Matrices.

Ya se ha comentado que el elemento bsico de MATLAB es la matriz, siendo los vectores y los escalares casos particulares de matrices. A continuacin se va a mostrar los resultados de realizar operaciones bsicas con matrices desde la lnea de comandos de la aplicacin.

Una instruccin comienza junto al prompt de MATLAB >> y termina cuando se pulsa Enter. Si no quiere visualizar el resultado de una instruccin, termnela en punto y coma. Los comentarios a una instruccin se aaden a continuacin detrs del smbolo %.

A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] % Definicin de una matriz. A= 16 3 5 10 9 6 4 15 sum(A) ans = 34 A' ans = 16 5 3 10 2 11 13 8 (A')' ans = 16 3 5 10 9 6 4 15 2 13 11 8 7 12 14 1 9 4 6 15 7 14 12 1 % Doble Trasposicin 34 34 34 % Trasponer una matriz 2 13 11 8 7 12 14 1 % Suma de las columnas

diag(A) ans = 16 10 7 1

% Obtencin de la diagonal de la matriz

sum(diag(A)) ans = 34

% suma de los elementos de la diagonal

elemento=A(1,3) elemento = 2 fila=A(1,:) fila = 16 3 2 13

% Acceso a un elemento

% Acceso a una fila (1 fila, todas las columnas)

columna=A(:,3) columna = 2 11 7 14 A(4,5)=17 A= 16 3 5 10 9 6 4 15 2 13 11 8 7 12 14 1

% Acceso a una columna (todas las filas, 3 columna)

% Cambiar o aadir un elemento

0 0 0 17

Observe que al acceder a un elemento no existente, se crea un nueva columna para que pueda ser asignado.

Sugerencia: Cmo eliminara esa nueva columna creada? Empleo del carcter : 1:10 ans = 1 2 % Comienzo:fin

10

1:0.1:2 ans =

% Comienzo:paso:fin

Columns 1 through 7 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000

Columns 8 through 11 1.7000 100:-7:50 ans = 100 93 86 79 72 65 58 51 1.8000 1.9000 2.0000

% Paso negativo

A=A(:,1:4) A= 16 3 5 10 9 6 4 15 2 13 11 8 7 12 14 1

% Solucin a la sugerencia anterior

3.2)

Expresiones.

a) Variables MATLAB no precisa la definicin previa de una variable, queda definida en el momento que se declara. nueva_variable=45 nueva_variable = 45 b) Nmeros MATLAB soporta notacin tradicional y cientfica. La parte imaginaria de los nmeros complejos viene precedida de la letra i o j que representa la unidad imaginaria. Algunos ejemplos de nmeros: 3.0000 + 7.0000i 1.2000e+013 % Definicin de una nueva variable

-125 c) Operadores Consulte le manual para conocer todos los operadores: +, -, *, / ... d) Funciones MATLAB suministra una serie de funciones bsicas, como por ejemplo la funcin cos (coseno). Cuando se quiere obtener ms informacin de una funcin, teclee desde la lnea de comandos el nombre de la funcin precedido de la palabra help: help cos COS Cosine. COS(X) is the cosine of the elements of X. e) Ejemplos de expresiones. Veamos algunos ejemplos de expresiones: cos(acos(45)) sqrt(2^4) (log(log10(1000)+1))

3.3)

Trabajando con matrices.

Algunas funciones: zeros, ones, rand, randn, generan matrices bsicas: q=zeros(1,3) q= 0 0 0 % Generacin de una matriz 2x2 de nmeros % normalmente distribuidos % Generacin de un vector de ceros.

q=randn(2,2)

q= -0.4326 -1.6656 0.1253 0.2877

Para guardar y recuperar datos, emplee las funciones save y load que trabajan con fichero *.mat. clear who A=123; who % Borra todas las variables en uso CUIDADO!!! % Lista las variables en uso % Definimos una nueva variable

Your variables are: A whos Name A % Listado de variables con informacin complementaria Size Bytes Class 1x1 8 double array

Grand total is 1 elements using 8 bytes save guardar % Creacin de un fichero clear who % Borramos variables % Comprobamos que no hay variables.

load guardar % Recuperamos los datos del fichero. who % Comprobamos la recuperacin

Your variables are: A Veamos un ejemplo de concatenacin de matrices: A=ones(3,3) A= 1 1 1 1 1 1 1 1 1

B=[A A+10; A+20 A-1] B=

1 1 1 1 1 1 21 21 21 21 21 21 B(2,:)=[] B= 1 1 21 21 21

1 11 11 11 1 11 11 11 1 11 11 11 21 0 0 0 21 0 0 0 21 0 0 0 % Elimina la segunda fila

1 1 11 11 11 1 1 11 11 11 21 21 0 0 0 21 21 0 0 0 21 21 0 0 0

3.4)

Ms sobre vectores y matrices.

Realicemos algunas operaciones con matrices: A=magic(4) A= 16 5 9 4 B=A+A' B= 32 7 7 22 12 17 17 22 C=A*A' C= 438 236 332 50 d=det(A) 236 310 278 332 332 278 310 236 150 332 236 438 12 17 12 27 17 22 27 2 2 11 7 14 3 13 10 8 6 12 15 1 % Generamos una matriz simtrica % Definimos una matriza mgica 4x4

% Producto de matrices

% Clculo del determinante (la matriz es singular)

d= 0 Z=inv(A) % Clculo de la inversa (la matriz es singular)

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.567374e-017. Z = 1.0e+014 * 0.9382 2.8147 2.8147 8.4442 -2.8147 -8.4442 -0.9382 -2.8147 eig(A) ans = 34.0000 8.9443 -8.9443 0.0000 Cuando se quiere trabajar con vectores, se deben emplear los operadores adecuados. Consulte el manual para obtener la lista de estos operadores. Veamos algunos ejemplos: A=magic(2) A= 1 4 B=A.*A B= 1 16 n=(0:9)' n= 0 1 2 3 4 9 4 % Definicin de en vector columna 3 2 % Producto elemento a elemento de dos matrices % Matriz 2x2 -2.8147 -8.4442 8.4442 2.8147 -0.9382 -2.8147 2.8147 0.9382

% Clculo de los valores propios de A

5 6 7 8 9 potencias=[n n.^2 2.^n] potencias = 0 1 2 3 4 5 6 7 8 9 0 1 1 2 4 4 9 8 16 16 25 32 36 64 49 128 64 256 81 512 % Empleo de la columna para definir una matriz

Consideremos ahora las posibilidades de MATLAB para realizar clculos estadsticos multivariable. Introducimos los datos de cinco individuos relativos a su frecuencia cardiaca, peso (en libras) y horas semanales de ejercicio. >> D=[72 134 3.2; 81 201 3.5; 69 156 7.1; 82 148 2.4; 75 170 1.2] D= 72.0000 81.0000 69.0000 82.0000 75.0000 134.0000 201.0000 156.0000 148.0000 170.0000 3.2000 3.5000 7.1000 2.4000 1.2000

>> mu=mean(D), sigma=std(D) % Clculo de la media y la desviacin estndar mu = 75.8000 161.8000 3.4800

sigma = 5.6303 25.4990 2.2107 % Empleo de la funcin find para uscar los ndices de % los valores que son primos

>> k=find(isprime(A))'

k=

13

>> A(k) ans = 5 2 11

% Verificacin de que esos valores corresponden a nmeros primos

13

3.5)

Entradas y salidas de la ventana de comandos.

En lo que se refiere al formato en que si pueden presenta los datos, se muestran a continuacin algunas posibilidades. >> format short >> x=[4/3 1.2345e-6] x = 1.3333 0.0000

>> format short e x = 1.3333e+000 1.2345e-006

>> format short g x= 1.3333 1.2345e-006

>> format long x = 1.33333333333333 0.00000123450000

>> format long e x = 1.333333333333333e+000 1.234500000000000e-006

>> format long g x= 1.33333333333333 1.2345e-006

>> format bank x= 1.33 0.00

>> format rat x= 4/3 1/810045

>> format hex x = 3ff5555555555555 3eb4b6231abfd271

Para evitar que se represente por pantalla el resultado de la evaluacin de una expresin, hay que terminar sta en ; >> A=magic(100) >> A=magic(100); % Salida indeseada por pantalla % Evitamos dicha salida

Si un sentencia no cabe en una lnea, podemos emplear los tres puntos ... seguidos de ENTER para indicar que la sentencia contina en la lnea siguiente. Emplee las flechas y para recuperar y moverse por las lneas editadas anteriormente desde la lnea de comandos.

4) Grficos. 4.1) Grficos bsicos.

Veamos algunos ejemplos de la capacidad de MATLAB de realizar representaciones grficas. t=0:pi/100:2*pi; % Definimos el eje de tiempos como un vector de % 200 puntos entre 0 y 6.28. % Calculamos el seno. % Representacin del seno frente al tiempo.

y=sin(t); plot(t,y);

La siguiente figura muestra el resultado de ejecutar la ltima instruccin

Para representar varias seales a la vez, puede realizar el siguiente conjunto de instrucciones: y2=sin(t-0.25); y3=sin(t-0.5); plot(t,y,t,y2,t,y3);

Consulte le manual para conocer los distintos colores, tipos de lnea, etc... que puede emplear. El comando figure sirve para crear una nueva figura o para invocar figuras ya existentes. El comando hold on permite realizar un nuevo grfico sobre otro ya existente sin que se abra una nueva figura. Si es preciso, se reescalan los ejes. El comando hold off desactiva la opcin anterior, evitando que un nuevo grfico se superponga a uno ya existente Veamos como subdividir la pantalla (en un ejemplo que emplea grficos en dos dimensiones): t=0:pi/10:2*pi; % Definicin del eje de tiempos

[X,Y,Z]=cylinder(4*cos(t)); subplot(2,2,1), mesh(X); subplot(2,2,2), mesh(Y); subplot(2,2,3), mesh(Z); subplot(2,2,4), mesh(X,Y,Z); Veamos ahora como mejorar la apariencia de un grfica; clf; t=-pi:pi/100:pi; y=sin(t); plot(t,y); axis([-pi pi -1 1]); % Borra la figura anterior % Eje temporal % Seal a representar (sinusoide) % Dibujo % Ejes % Etiquetado del eje horizontal % Etiquetado del eje vertical % Nombre del grfico % Comentario % Dibujo en el primer cuadrante

xlabel('-\pi \leq {\itt} \leq \pi'); ylabel('sin(t)'); title('Graph of the sine function'); text(1,-1/3,'\it{note the odd symetry}'); Observe el aspecto de la figura creada:

MATLAB encuentra los valores mximos de los valores a representar y escala los ejes de acuerdo a esos valores. El comando axis([xmin xmax ymin ymax]) permite especificar al usuario los valores de los ejes. Este comando axis, tambin admite una serie de parmetros que se recomienda consultar en la ayuda, como axis square, equal, on, offf,... El comando grid on activa una rejilla en el dibujo, mientras que el comando grid off desactiva esa opcin. 4.2) Edicin de dibujos.

Cuando aparece una figura, podemos emplear las opciones que aparecen en los mens desplegables de la parte superior y las herramientas de la barra de tareas para editar el dibujo, aadir texto, flechas,...

Se puede emplear el editor de propiedades que se encuentra en el men EDIT de una figura para cambiar las propiedades de los distintos elementos de una figura.

4.3)

Dibujos de superficies.

Consulte los comandos mesh y surf para conocer las posibilidades de realizar grficos de superficies. 4.4) Imgenes.

Las matrices pueden verse como imgenes en las que cada elemento contiene las caractersticas de brillo o color del elemento. Veamos como representar una matriz que contenga una imagen. >> load durer % cargamos un grabado de Durero >> whos % variables que hemos cargado Name Size Bytes Class X caption map 648x509 2x28 128x3 2638656 112 3072 double array char array double array

>> image(X) % estas tres instrucciones sirven para representar la imagen >> colormap(map) >> axis image

4.5)

Impresin de grficos.

Para la impresin de grficos, puede utilizar la opcin PRINT del men FILE o bien utilizar el comando print. Este ltimo comando le permite adems realizar la conversin del grfico a diferentes formatos. 4.6) 4.7) Manejo de grficos. Interfaces Grficos de Usuario (GUI).

MATLAB emplea una estructura jerrquica de figuras, ejes , botones de diferentes tipos y mens para la gestin de los grficos. En otra sesin veremos como construir y gestionar un interfaz grfico de usuario empleando las herramientas de desarrollo de estas estructuras.

4.8)

Animaciones.

Consulte el ejemplo que se describe en este punto del manual Getting Started with Matlab si tiene inters en el desarrollo de aplicaciones de animacin.

5) Programacin en MATLAB 5.1) Control de flujo.

a) Sentencia if. Condicin comn a todos los le nguajes de programacin: A=2; if A= =3, m=3, elseif A= =2 m=2, end; m=2 b) Sentencias switch y case. Empleadas para una condicin multiple switch A case 2 m=2 case 3 m=3 case 4 m=4 % Empleo de la condicin.

end

c) Sentencia for. Para ejecutar bucles un nmero predeterminado de veces: for a=0:4 b=b+a, end b=0 b=1 b=3 b= 6 b = 10 d) Sentencia while. Para ejecutar bucles con condicin de salida a=0; b=4; while (a<=b) a=a+1, end a= a= a= a= a= 1 2 3 4 5 % Bucle while

e) Sentencia break Permite salir anticipadamente de la ejecucin de un bucle. 5.2) Otras estructuras de datos.

Consulte el manual para conocer el manejo de vectores multidimensionales, registros, cadenas de caracteres,... 5.3) Scripts y funciones.

MATLAB permite trabajar no slo desde la lnea de comandos sino tambin mediante la edicin de ficheros *.m. Estos ficheros pueden clasificarse en dos tipos: scripts y funciones. Los primeros no aceptan argumentos de entrada ni devuelven resultados. Operan con las variables del workspace. Las funciones aceptan argumentos de entrada y devuelven resultados.

Para crear un script nuevo seleccione FILE en el men principal. Seleccione ahora la opcin NEW y finalmente seleccione M-FILE. Aparece ahora le editor de MATLAB. Escriba a continuacin una serie de instrucciones, por ejemplo:
n=0:pi/100:2*pi; s=sin(n); plot(n,s);

Guarde estas lneas con el nombre que quiera y la extensin .m (por ejemplo, script1.m). A continuacin desde la lnea de comandos de MATLAB invoque a la funcin: script1 El resultado ser el de el conjunto de instrucciones de MATLAB contenidas en el fichero script1.m, en este caso, la figura siguiente:

Para ilustrar el empleo de funciones, veamos el aspecto de la funcin mean.m que calcula la media de un vector o matriz: type mean function y = mean( x,dim) %MEAN Average or mean value. % For vectors, MEAN(X) is the mean value of the elements in X. For % matrices, MEAN(X) is a row vector containing the mean value of

% % % % % % % % % % % %

each column. For N-D arrays, MEAN(X) is the mean value of the elements along the first non-singleton dimension of X. MEAN(X,DIM) takes the mean along the dimension DIM of X. Example: If X = [0 1 2 3 4 5] then mean(X,1) is [1.5 2.5 3.5] and mean(X,2) is [1 4] See also MEDIAN, STD, MIN, MAX, COV.

% Copyright (c) 1984-98 by The MathWorks, Inc. % Revision: 5.13 Date: 1997/11/21 23:23:55 if nargin==1, % Determine which dimension SUM will use dim = min(find(size(x)~=1)); if isempty(dim), dim = 1; end y = sum(x)/size(x,dim); else Observe atentamente la sintaxis de la definicin de funciones en el entorno MATLAB y realice algn ejemplo similar. El modo de edicin es el mismo que en el caso de ficheros script. 5.4) Programas de demostracin

Para consultar el listado de demostraciones con que cuenta MATLAB, teclee help demo desde la lnea de comandos. Para ejecutar alguna desde estas demos, invoque a la funcin desde el prompt de la lnea de comandos >> ffftdemo; Recordamos por ltimo que aqu slo termina la introduccin a MATLAB que pretende nicamente presentar las posibilidades del entorno de trabajo. Consulte las ayudas y manuales cuantas veces el resulte necesario para elaborar sus programas. Ms adelante, repasaremos la construccin de GUI y presentaremos la biblioteca de procesado de seal. Por ultimo, le recomendamos que consulte en Internet con frecuencia ya que existe numeroso software generado en este entorno de programacin.