El manual anteriormente referido se divide en los siguientes apartados:

INTRODUCCIÓN A MATLAB. El presente documento pretende dar una visión general de las posibilidades que ofrece el entorno de trabajo MATLAB 6.0 R12. Se ...
37 downloads 1 Views 710KB Size
INTRODUCCIÓN A MATLAB. El presente documento pretende dar una visión 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\introducción\int-pdf, y consultar la ayuda del entorno tantas veces como sea preciso. El dominio de la herramienta sólo 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) Introducción. 1.1) 1.2)

¿Qué es MATLAB? Documentación MATLAB.

2) Entorno de desarrollo. 2.1) 2.2) 2.3) 2.4) 2.5)

Introducción. Iniciando y cerrando MATLAB. El escritorio de MATLAB. Herramientas del escritorio. Otras características del entorno de desarrollo.

3) Trabajo con matrices. 3.1) 3.2) 3.3) 3.4) 3.5)

Matrices. Expresiones. Trabajando con matrices. Más sobre vectores y matrices. Entradas y salidas de la ventana de comandos.

4) Gráficos. 4.1) 4.2) 4.3) 4.4) 4.5) 4.6) 4.7) 4.8)

Gráficos básicos. Edición de dibujos. Dibujos de superficies. Imágenes. Impresión de gráficos. Manejo de gráficos. Interfaces Gráficos de Usuario (GUI). Animaciones.

5) Programación en MATLAB 5.1) 5.2) 5.3) 5.4)

Control de flujo. Otras estructuras de datos. Scripts y funciones. Programas de demonstración

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

1) Introducción. 1.1)

¿Qué es MATLAB?

MATLAB es un lenguaje de programación de altas prestaciones que integra la potencia de cálculo, la visualización de resultados y la sencillez de programación en un entorno de trabajo agradable. MATLAB es un sistema interactivo cuyo elemento básico es una matriz que no requiere dimensionamiento previo. La sencillez de este planteamiento facilita la resolución de problemas que en otros entornos de trabajo resultan más complejos. MATLAB ofrece una amplia variedad de funciones agrupadas en toolboxes que facilitan el trabajo en cualquier campo científico. Además, debido a su enorme difusión 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 librerías de funciones. El lenguaje de programación MATLAB. El manejo de gráficos. El Interfaz de Programas de Aplicación (API) Documentación MATLAB.

El manual ‘Getting started with MATLAB’ es una buena referencia para comenzar a familiarizarse con el entorno de trabajo. Además 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 información disponible relacionada con su pregunta. 2) Entorno de desarrollo. 2.1)

Introducción.

Este segundo punto no es más que una breve introducción a MATLAB que permite conocer como iniciar y cerrar una sesión de MATLAB así como empezar a descubrir las herramientas y funciones más 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 aplicación. Para cerrar la aplicación, basta con teclear el comando quit desde la línea de comandos o buscar la opción EXIT MATLAB en el menú FILE. Para conservar las variables del espacio de trabajo (Workspace) y ejecutar 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 opción VIEW podrá seleccionar las ventanas que desee tener abiertas.

2.4)

Herramientas del escritorio. -

2.5)

Ventana de comandos: sirve para ejecutar comandos e invocar funciones y ficheros .m Histórico de comandos: recoge las últimas instrucciones. Launch Pad: proporciona acceso a herramientas, demos y documentación. Help Browser: facilita la búsqueda de documentación. Current Directory Browser: permite seleccionar el directorio actual en el que están las funciones que pueden invocarse en cada momento. Worksapace Browser: en el que se almacenan las variables empleadas en una sesión. Editor/Debugger: para crear y depurar ficheros .m y funciones

Otras características del entorno de desarrollo. -

Existe además 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 básico de MATLAB es la matriz, siendo los vectores y los escalares casos particulares de matrices. A continuación se va a mostrar los resultados de realizar operaciones básicas con matrices desde la línea de comandos de la aplicación.

Una instrucción comienza junto al prompt de MATLAB ‘>>’ y termina cuando se pulsa Enter. Si no quiere visualizar el resultado de una instrucción, termínela en punto y coma. Los comentarios a una instrucción se añaden a continuación detrás del símbolo %.

» A=[16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] % Definición de una matriz. A= 16 3 5 10 9 6 4 15

2 13 11 8 7 12 14 1

» sum(A)

% Suma de las columnas

ans = 34

34

» A'

34

34 % Trasponer una matriz

ans = 16 5 3 10 2 11 13 8 » (A')'

9 4 6 15 7 14 12 1 % Doble Trasposición

ans = 16 3 5 10 9 6 4 15

» diag(A) ans = 16 10 7 1

2 13 11 8 7 12 14 1

% Obtención de la diagonal de la matriz

» sum(diag(A))

% suma de los elementos de la diagonal

ans = 34

» elemento=A(1,3)

% Acceso a un elemento

elemento = 2 » fila=A(1,:)

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

fila = 16

3

2

13

» columna=A(:,3)

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

columna = 2 11 7 14 » A(4,5)=17

% Cambiar o añadir un elemento

A= 16 3 5 10 9 6 4 15

2 13 11 8 7 12 14 1

0 0 0 17

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

Sugerencia: ¿Cómo eliminaría esa nueva columna creada? Empleo del carácter ‘:’ » 1:10 ans = 1 2

% Comienzo:fin

3

4

5

6

7

8

9

10

» 1:0.1:2

% Comienzo:paso:fin

ans = Columns 1 through 7 1.0000

1.1000

1.2000

1.3000

1.4000

1.5000

1.6000

Columns 8 through 11 1.7000

1.8000

» 100:-7:50

1.9000

2.0000

% Paso negativo

ans = 100

93

86

79

» A=A(:,1:4)

72

65

58

51

% Solución a la sugerencia anterior

A= 16 3 5 10 9 6 4 15

3.2)

2 13 11 8 7 12 14 1

Expresiones.

a) Variables MATLAB no precisa la definición previa de una variable, queda definida en el momento que se declara. » nueva_variable=45

% Definición de una nueva variable

nueva_variable = 45 b) Números MATLAB soporta notación tradicional y científica. La parte imaginaria de los números complejos viene precedida de la letra i o j que representa la unidad imaginaria. Algunos ejemplos de números: 3.0000 + 7.0000i 1.2000e+013

-125 c) Operadores Consulte le manual para conocer todos los operadores: +, -, *, / ... d) Funciones MATLAB suministra una serie de funciones básicas, como por ejemplo la función cos (coseno). Cuando se quiere obtener más información de una función, teclee desde la línea de comandos el nombre de la función 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 básicas: » q=zeros(1,3)

% Generación de un vector de ceros.

q= 0

0

0

» q=randn(2,2)

q= -0.4326 -1.6656

0.1253 0.2877

% Generación de una matriz 2x2 de números % normalmente distribuidos

Para guardar y recuperar datos, emplee las funciones save y load que trabajan con fichero *.mat. » clear

% Borra todas las variables en uso ¡¡¡ CUIDADO!!!

» who

% Lista las variables en uso

» A=123; » who

% Definimos una nueva variable

Your variables are: A » whos Name A

% Listado de variables con información complementaria Size Bytes Class 1x1

8 double array

Grand total is 1 elements using 8 bytes » save guardar % Creación de un fichero » clear

% Borramos variables

» who

% Comprobamos que no hay variables.

» load guardar % Recuperamos los datos del fichero. » who

% Comprobamos la recuperación

Your variables are: A Veamos un ejemplo de concatenación 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

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

» B(2,:)=[]

% Elimina la segunda fila

B= 1 1 21 21 21

3.4)

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

Más sobre vectores y matrices.

Realicemos algunas operaciones con matrices: » A=magic(4)

% Definimos una matriza mágica 4x4

A= 16 5 9 4

2 11 7 14

» B=A+A'

3 13 10 8 6 12 15 1 % Generamos una matriz simétrica

B= 32 7 7 22 12 17 17 22 » C=A*A'

12 17 12 27

17 22 27 2

% Producto de matrices

C= 438 236 332 50 » d=det(A)

236 310 278 332

332 278 310 236

150 332 236 438

% Cálculo del determinante (la matriz es singular)

d= 0 » Z=inv(A)

% Cálculo 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)

-2.8147 -8.4442 8.4442 2.8147

-0.9382 -2.8147 2.8147 0.9382

% Cálculo de los valores propios de 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)

% Matriz 2x2

A= 1 4

3 2

» B=A.*A

% Producto elemento a elemento de dos matrices

B= 1 16 » n=(0:9)' n= 0 1 2 3 4

9 4 % Definición de en vector columna

5 6 7 8 9 » potencias=[n n.^2 2.^n]

% Empleo de la columna para definir una matriz

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

Consideremos ahora las posibilidades de MATLAB para realizar cálculos estadísticos 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) % Cálculo de la media y la desviación estándar mu = 75.8000 161.8000

3.4800

sigma = 5.6303 25.4990

2.2107

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

k=

% Empleo de la función find para uscar los índices de % los valores que son primos

2

5

6

>> A(k)

7

9

13

% Verificación de que esos valores corresponden a números primos

ans = 5

2

3.5)

11

7

3

13

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 continuación 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

>> format bank x=

1.33

0.00

1.2345e-006

>> format rat x=

4/3

1/810045

>> format hex x = 3ff5555555555555 3eb4b6231abfd271

Para evitar que se represente por pantalla el resultado de la evaluación de una expresión, 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 línea, podemos emplear los tres puntos ... seguidos de ENTER para indicar que la sentencia continúa en la línea siguiente. Emplee las flechas ⇑ y ⇓ para recuperar y moverse por las líneas editadas anteriormente desde la línea de comandos.

4) Gráficos. 4.1)

Gráficos básicos.

Veamos algunos ejemplos de la capacidad de MATLAB de realizar representaciones gráficas. » t=0:pi/100:2*pi;

% Definimos el eje de tiempos como un vector de % 200 puntos entre 0 y 6.28.

» y=sin(t);

% Calculamos el seno.

» plot(t,y);

% Representación del seno frente al tiempo.

La siguiente figura muestra el resultado de ejecutar la última instrucción

Para representar varias señales 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 línea, 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 gráfico sobre otro ya existente sin que se abra una nueva figura. Si es preciso, se reescalan los ejes. El comando hold off desactiva la opción anterior, evitando que un nuevo gráfico se superponga a uno ya existente Veamos como subdividir la pantalla (en un ejemplo que emplea gráficos en dos dimensiones): » t=0:pi/10:2*pi;

% Definición del eje de tiempos

» [X,Y,Z]=cylinder(4*cos(t)); » subplot(2,2,1), mesh(X);

% Dibujo en el primer cuadrante

» 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 gráfica; » clf;

% Borra la figura anterior

» t=-pi:pi/100:pi;

% Eje temporal

» y=sin(t);

% Señal a representar (sinusoide)

» plot(t,y);

% Dibujo

» axis([-pi pi -1 1]);

% Ejes

» xlabel('-\pi \leq {\itt} \leq \pi');

% Etiquetado del eje horizontal

» ylabel('sin(t)');

% Etiquetado del eje vertical

» title('Graph of the sine function');

% Nombre del gráfico

» text(1,-1/3,'\it{note the odd symetry}');

% Comentario

Observe el aspecto de la figura creada:

MATLAB encuentra los valores máximos 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, también admite una serie de parámetros 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 opción. 4.2)

Edición de dibujos.

Cuando aparece una figura, podemos emplear las opciones que aparecen en los menús desplegables de la parte superior y las herramientas de la barra de tareas para editar el dibujo, añadir 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 gráficos de superficies. 4.4)

Imágenes.

Las matrices pueden verse como imágenes en las que cada elemento contiene las características 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)

Impresión de gráficos.

Para la impresión de gráficos, puede utilizar la opción PRINT del menú FILE o bien utilizar el comando print. Este último comando le permite además realizar la conversión del gráfico a diferentes formatos. 4.6) 4.7)

Manejo de gráficos. Interfaces Gráficos de Usuario (GUI).

MATLAB emplea una estructura jerárquica de figuras, ejes , botones de diferentes tipos y menús para la gestión de los gráficos. En otra sesión veremos como construir y gestionar un interfaz gráfico 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 interés en el desarrollo de aplicaciones de animación.

5) Programación en MATLAB 5.1)

Control de flujo.

a) Sentencia if. Condición común a todos los le nguajes de programación: » A=2; » if A= =3, m=3, elseif A= =2 m=2, end; m=2 b) Sentencias switch y case. Empleadas para una condición multiple switch A case 2 m=2 case 3 m=3 case 4 m=4

% Empleo de la condición.

end

c) Sentencia for. Para ejecutar bucles un número 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 condición de salida » a=0; » b=4; » while (a> ffftdemo; Recordamos por último que aquí sólo termina la introducción 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. Más adelante, repasaremos la construcción de GUI y presentaremos la biblioteca de procesado de señal. Por ultimo, le recomendamos que consulte en Internet con frecuencia ya que existe numeroso software generado en este entorno de programación.

Suggest Documents