Está en la página 1de 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) Qu es MATLAB?
1.2) Documentacin MATLAB.

2) Entorno de desarrollo.

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

3) Trabajo con matrices.

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

4) Grficos.

4.1) Grficos bsicos.


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

5) Programacin en MATLAB

5.1) Control de flujo.


5.2) Otras estructuras de datos.
5.3) Scripts y funciones.
5.4) 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) El entorno de desarrollo.
b) Las libreras de funciones.
c) El lenguaje de programacin MATLAB.
d) El manejo de grficos.
e) El Interfaz de Programas de Aplicacin (API)

1.2) 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 (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
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 2 13
5 10 11 8
9 6 7 12
4 15 14 1

sum(A) % Suma de las columnas

ans =

34 34 34 34

A' % Trasponer una matriz

ans =

16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1

(A')' % Doble Trasposicin

ans =

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

diag(A) % Obtencin de la diagonal de la matriz

ans =

16
10
7
1
sum(diag(A)) % suma de los elementos de la diagonal

ans =

34

elemento=A(1,3) % Acceso a un elemento

elemento =

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 aadir un elemento

A=

16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 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 % Comienzo:fin

ans =
1 2 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 1.9000 2.0000

100:-7:50 % Paso negativo

ans =

100 93 86 79 72 65 58 51

A=A(:,1:4) % Solucin a la sugerencia anterior

A=

16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

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 % Definicin de una nueva variable

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
-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) % Generacin de un vector de ceros.

q=

0 0 0

q=randn(2,2) % Generacin de una matriz 2x2 de nmeros


% normalmente distribuidos

q=

-0.4326 0.1253
-1.6656 0.2877
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; % Definimos una nueva variable


who

Your variables are:

whos % Listado de variables con informacin complementaria


Name Size Bytes Class

A 1x1 8 double array

Grand total is 1 elements using 8 bytes

save guardar % Creacin de un fichero

clear % Borramos variables

who % Comprobamos que no hay variables.

load guardar % Recuperamos los datos del fichero.

who % Comprobamos la recuperacin

Your variables are:

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 11 11 11
1 1 1 11 11 11
1 1 1 11 11 11
21 21 21 0 0 0
21 21 21 0 0 0
21 21 21 0 0 0

B(2,:)=[] % Elimina la segunda fila

B=
1 1 1 11 11 11
1 1 1 11 11 11
21 21 21 0 0 0
21 21 21 0 0 0
21 21 21 0 0 0

3.4) Ms sobre vectores y matrices.

Realicemos algunas operaciones con matrices:

A=magic(4) % Definimos una matriza mgica 4x4

A=

16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1

B=A+A' % Generamos una matriz simtrica

B=

32 7 12 17
7 22 17 22
12 17 12 27
17 22 27 2

C=A*A' % Producto de matrices

C=

438 236 332 150


236 310 278 332
332 278 310 236
50 332 236 438

d=det(A) % 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 -0.9382


2.8147 8.4442 -8.4442 -2.8147
-2.8147 -8.4442 8.4442 2.8147
-0.9382 -2.8147 2.8147 0.9382

eig(A) % Clculo 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 3
4 2

B=A.*A % Producto elemento a elemento de dos matrices

B=

1 9
16 4

n=(0:9)' % Definicin de en vector columna

n=

0
1
2
3
4
5
6
7
8
9

potencias=[n n.^2 2.^n] % Empleo de la columna para definir una matriz

potencias =

0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512

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 134.0000 3.2000


81.0000 201.0000 3.5000
69.0000 156.0000 7.1000
82.0000 148.0000 2.4000
75.0000 170.0000 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

>> k=find(isprime(A))' % Empleo de la funcin find para uscar los ndices de


% los valores que son primos

k=
2 5 6 7 9 13

>> A(k) % Verificacin de que esos valores corresponden a nmeros primos

ans =

5 2 11 7 3 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) % Salida indeseada por pantalla


>> A=magic(100); % 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.

y=sin(t); % Calculamos el seno.

plot(t,y); % Representacin del seno frente al tiempo.

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); % 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 grfica;

clf; % Borra la figura anterior

t=-pi:pi/100:pi; % Eje temporal

y=sin(t); % Seal 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 grfico


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

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 648x509 2638656 double array


caption 2x28 112 char array
map 128x3 3072 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) Manejo de grficos.


4.7) 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; % Empleo de la condicin.

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
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 % Bucle while

a= 1
a= 2
a= 3
a= 4
a= 5

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.

También podría gustarte