Sei sulla pagina 1di 83

Teora de Prcticas de Computacin Numrica

El sistema MATLAB
3.1. Introduccin
-

MATLAB (MATnx LABoratory) es un entorno interactivo basado en matrices para la realizacin de clculo numrico y visualizacin de resultados. Permite la resolucin de problemas sin escribir un programa y con facilidades de representacin grfica de los resultados. Los clculos sobre matrices estn basados en los desarrollados en los proyectos LiNPACK y EISPACK. El objetivo de estos proyectos era crear paquetes de subrutinas en FORTRAN para tratamiento de matrices (vase el subapartado 2.4.1). Achialmente, el sistema IMATLAB se usa tanto a nivel acadmico, dentro de la universidad, como a nivel de investigacin e industria para la resolucin de complicados problemas cientficos o de ingenieria. Es empleado para el desarrollo de clculo numrico de propsito general y resolucin de problemas con formulacin matricial que aparecen en control, estadstica y procesado de seales. MATLAB aporta, por medio de las too1bo;ses (que no se incorporan en el sistema base, sino que se adquieren separadamente), funciones para resolver problemas especficos como. por ejemplo, procesado de seales, diseo de sistemas de control, identificacin de sistemas, simulacin de sistemas dinmicos, optimizacin, redes kuronales, etc. La principal ventaja del entorno MATLAB es su extensibilidad, que permite al usuario crear funciones que resuelven problemas especficos y, de este modo, aumentar la aplicabilidad del sistema. En este captulo damos una introduccin, suficiente para el desarrollo del libro, del sistema MATLAB. Se trata de una introduccin prctica, se presentan ejemplos y la salida correspondiente que produce MATLAB al ejecutar los mismos, se proponen ejercicios y se indican los aspectos m i s importantes. Hay muchas caractersticas del sistema MATLAB que no se incluyen en este tema. Solo pretendemos que el lector tome un primer contacto con el sistema y se d cuenta de su potencia frente a los lenguajes de alto nivel convencionales. Las funciones de cjlculo numrico que aporta MATLAB se estudian en detalle en los captulos siguientes al ir presentando los distintos mtodos.

74

CLCULO NUMRICO

P A R A COMPUTACINEN CIENCIA E ~NGENIER~A

En este libro describimos fundanie~.talmente la versin actual de MATLAB, aunque se hace referencia a las funcionalidades que son novedad de esta versin y que por lo tanto n o funcionarn con versiones anteriores. La razn de este mirar hacia atrs es que en muchas universidades es an difcil acceder a la ltima versin de MATLAB y se sigue contando con licencias de versiones anteriores como, la 4.2 o incluso la 3.5. Para consultar cualquier orden del sistema se puede usar la orden deayuda help orden, que nos da informacin ~ b r la e orden especificada. Por ejemplo:
help zerok

ZEROS Al1 zeros. ZEROS (N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros ZEROS(SIZE(A)) is the same size as A and al1 zeros.

Esta breve introduccin al sistema MATLAB intenta ser tan slo una pequea gua prctica que oriente al lector en sus primeros pasos. Para profundizar en el sistema MAT1,AB remitirnos a la bibliografa presentada en la parte introductoria o a la ayuda en lnea (le MATLAB. Adems 10s lectores con conexin Internet pueden obtener informacin adicional en la pgina PVeb http://www.mathworks.com ysiguiendo los enlaces a los que se puede acceder desde all. Ejecutando la orden help 'help se pueden ver las opciones de la orden
help.

3.2. Acceso a MATlAB


El programa se inicia- ejecutando la aplicacin MATLAB dentro del entorno que se est ttrilizando. En nuesti'o caso desarrollaremos los ejemplos oon PC y sistemas operativos de lafamilia Windows de 32 bits. La ventana de rdenes de la versin 5 de MATLAB bajo Windows se muestra en la figura 3.1. Usando esta ventana nos comunicamos con el intrprete MATLAB. El intrprete niuestra la Inea de rdenes (>>) para indicar que est listo para aceptar rdenes MATLAB, que describiremos despus. Tambin se puedeejecutar una orden de la lnea de comandos del sistema operativo desde la lnea de rdenes de MATLAB si se precede del carcter !. En este caso se abre una ventana con ei resultado de la orden: Las rdenes ejecutadas anteriormente pueden recuperarse por medio de las teclas < . ~ Y I By~ <ABAJO>. Una vez retuperada una orden, se puedereeditar posicionndonos con las teclas <DERECHA> e <IZQUIERDA>. Se puede grabar e n u n fichero la sesin por medio de la orden diary nombre-fichero. De este modo, todo lo que se visitaliza en pantalla, menos-los grficos, se escribe en este fichero hasta que se ejecuta la orden d i a q off. Si se quiere volver a guardar se ejecuta de nuevo la orden diary on.

CAP~~ULO 3: EL SISTEMA MATLAB

75

FIGURA 3.1. Ventana de rdenes de MATLAB 5.

Vamos a centrarnos inicialmente en las siguientes opciones que nos proporciona el men de la ventana de rdenes de la versin 5. Las opciones de las versiones anteriores son ms reducidas.

a) File: contiene opciones para crear archivos, configurar la impresora y las rdenes (algunas no las describimos aqu).
l . New: contiene la siguientes opciones:

~ci-file:abre el editor para crear un fichero .M (en versiones antiguas de MATLAB hay que especificar un editor por defecto en la opcin Editor). * Figure: crea una ventana grfica.
2. Open: permite abrir en el editor el fichero que se seleccione en el cuadro de dilogo de seleccin de archivo, en particular ficheros .M. 3. Save Workspace as ...:guarda en el fichero .mt, que se selecciona en el cuadro de dilogo de seleccin de archivo, el espacio de trabajo actual. 4. Open Workspace as ...:abre un espacio de trabajo almacenado previamente. 5 . Show Workspace: inicia la herramienta grficazde MATLAB que muestra el estado actual de la memoria de trabajo. 6. Set Path: inicia la herramienta grfica que permite gestionar el encaminamiento de MATLAB. 7. Preferentes: permite establecer diversas opciones, entre ellas el formato numrico, configurar algn editor opcional, especificar las fuentes y algunas opciones de con-

trol del portapapeles de Windows (estas opciones se encontraban disponibles en versiones anteriores en el men'options). . 8. Print ...:imprime el texto seleccionado en la ventana de rdenes. Si no se ha seleccionado ningn teho se imprime toda la sesin. 9. frinfer Setzp...:abre el cuadro de dilogo de configuracin de impresora. 10. Exit ItfATLAB: sale de MATLAB.
h) E&: contiene opciones que permiten editar la sesin MATLAB.
l . Cirt: corta el tkxto seleccionado de la ventana de rdenes copindolo en el portapa-

peles de Wiildows. 2. Copy: copia' el texto seleccionado de la ventana de rdenes en el portapapeles de ~indbws'. 3. Poste: copia el contenido del poitapapeles de Windows en la lnea de rdenes. 4. ~ l e n .Te.ssion: r borra $1 bl!fir donde se almacena la historia de .la sesin.
C)

IJII~CIOIV: lista las ventanas abiertas por MATLAB para que se pueda conmutar entre

ellas.
d) He&: abre el programa de ayuda interactiva de Windows para MATLAB. En el caso de la versin 5 la ayuda ha sido mejorada notablemente y ahora ya no se reduce a una sucinta descripcin de cada funcin, sino que se puede acceder opcionalmente a toda una documentacin sobre el sistema con vnculos en formatos HTML (legible con ciialquiei navegador de Web como Netscape) y PDF (AdobeAcrobaf).

La versin 5 presenta adems una barra de iconos con atajos a algunas de estas funciones, por ejemplo al gestor de encaminamientos (PATH manager) y al visor grfico del estado de la tnenioria.

3.3. !ntroduccin de matrices


MATLAB trabaja esencialmente con matrices rectangulares formadas por nmeros reales o~ coniplejos. Todas las variables representan matrices. Las matrices 1 x 1 se, inter. pretan como escalares y las matrices con una sola fila o columna se interpretan como vectores. L ~ matrices S se pueden introducir de diversas formas, la primera de ellas es indicando explicitamente su lista de componentes. Los elementos de una misma fila pueden estar separados por blancos o por comas; y las filas pueden estar separadas por punto y coma (;) o por iin retorno'de carro; Por ejemplo, las siguientes sentencias asignan a las variables A y , . u dos matrices 3 x 3.

,, ~,

CAP~TULO 3: El SISTEMA MATLAB

77.

Se debe evitar los espacios en blanco cuando se escribe un nmero en forma exponencial, como por ejemplo 2.34e-9. Otra posibilidad para crear matrices es por medio de sentencias y funciones ya mplementadas en MATLAB, que describiremos ms tarde. Como ejemplo valga la funcin r d n ) , que crea una matriz n x n con valores generados aleatonamente y distribuidos uniformemente entre O y 1.

Aleatsria =

O. 9501 O .2311 O. 6068 0 ;4860

0.8913 0.7621 O. 4565 O. 0185

0.8214 0.4447 O. 6154 0.7919

O.9218 0.7382 O. 1763 0.4057

Las matrices pueden crearse tambin por medio de archivos .M. Este procedimiento puede ser especialmente til para crear matrices muy grandes ya que los errores se pueden eliminar rpidamente editando el archivo. Una posibilidad relacionada con esta es la de leer archivos de datos externos. Los elementos de una matriz se pueden identificar usando ndices entre parntesis. ) el elemento componente de la segunda fila y tercera Por ejemplo, ~ ( 2 . 3 representa columna.
A(2,31

ans = 5

Ejercicios

3.1. Crear dos matrices c y D con tres filas y tres columnas. 3.2. Visualizar en pantalla algunos de los componentes de las matrices c y D definidas en el ejercicio anterior.

La versin 5 d e MATLAB permite adems inkoducir y trabajar con arrays multidiniensionales. Otras estructuras dedatos ms complejas como son estructuras detipo registi-o tambin pueden definirse en esta versin.
,

3.4. Op-eraciones sobre matrices y componentes de matrices

MATLAB puede realizar el conjunto de operaciones sobre matrices mostrado en el cuadro 3.1.
CUADRO 3.1
Operaciones sobre matrices

OPERADOR

DESCRIPCION

resta

transpuesta divisin izquierda divisin derecha

MATLAB produce un mensaje de error si estas operaciones s e realizan sobre matrices con un tamao no compatible, por ejemplo al sumar dos matrices con diferente nmero de filas ocolumnas. La nica excepcin es el caso de matrices escalares (1 x l), entonces se . . realiza' la operacin del escalar con cada elemento de la matriz.
~~

AXB

ans

41

40
94

50'

95 149

122
-

148

199

C~Piulo 3: EL SISTEMA MATLAB


Como vernos en el cuadro anterior, existen dos "divisiones" diferentes:

79

izquierda) es la solucin del sistema de ecuaciones A*x = b. Sobre los algoritmos que emplea MATLAB para realizar esta operacin trataremos ms adelante en este libro. x = ~ / (divisin b derecha) es la solucin de x*A = b (formalmente x = bA-'). En realidad, MATLAB define la divisin derecha en funcin de la divisin izquierda como blA = (Aslb')'.
x = ~ \ (divisin b

En algunas ocasiones se usa una matriz, no como una entidad, sino como un conjunto de componentes. A veces estaremos interesados en aplicar operaciones sobre los componentes individuales de la matriz. Por ejemplo, si queremos obtener el cuadrado de una matriz escribimos ~ " 2 ,pero puede ser que estemos interesados en obtener una matriz que tenga por componentes los cuadrados de los componentes de otra matriz. En este caso tendremos que realizar operaciones sobre componentes. La suma y resta ya operan componente a componente. El resto de operaciones se precede por un punto para que acten sobre componentes. Por ejemplo, para multiplicar los componentes de las dos matrices A y B de nuestros ejemplos podemos hacer lo siguiente:
A

.'

Ejercicios

3.3. Realizar sobre las dos matrices c y D todas las operaciones posibles. Comprobar la diferencia entre tratar las matrices como entidades o como conjunto de componentes al realizar operaciones.

3.4. Si b =[O 1 31 Estn definidas A * b, b * A, b'* A y b.* B?


3.5. Expresiones y variables
hlATLAB es un lenguaje basado en expresiones formadas por variables, operadores y funciones. Una sentencia es la asignacin de la evaluacin de una expresin a una variable (variable = expresin). Tras interpretar y evaluar expresin, el resultado se visualiza en pantalla y s e asigna a variable. Si se omite variable,' el resultado es asignado a la variable por defecto ans (answer), como podemos ver en los ejemplos presentados anteriormente. Debemos tener en cuenta lo siguiente:

Una sentencia termina con un retorno de carro. Si una sentencia ocupa ms de una lnea se puede continuar en la siguiente siempre que terminemos la lnea con tres o ms puntos (...) seguidos de un retorno de carro.

80

CALCULO NUMRICO PARA COMPUTACIN EN CIENCIA E ~NGEN~ER~A Es posible escribir varias sentencias en la misma lnea, siempre que se separen por una coma (,) o un punto y coma (;). Si no queremos que el resultado de una expresin se visualice en pantalla debemos terminar la sentencia correspondiente con punto y coma (;). Por defecto, MATLAB di'ferencia las maysculas de las minsculas. Por ejemplo, la variable temporal no es igual que la variable Temporal. Sin embargo, es posible modificar esta opcin de modo que no se prodtizca distincin entre maysculas y minsculas.

3 . 6 . El espacie de trabajo
El conjunto de variables definidas en una sesin forman el espacio de trabajo (ii~orkspace) d e la sesin. Para visualizar las variables que se han creado en la sesin actual, pertenecientes al espacio de trabajo actual, puedeutilizarse la. orden who. Para una informacin ms amplia es preferible utilizar la orden whos.

Your variables are: A Aleatoria

Ele!ents Bytes Nqe Size 9 72 3 by 3 A Alsatoria 4 by 4 16 . . 128 B 3 by3 9 72 ' G r a n d . total is 34 elements using 272 bytes

Density Full Full m11

Complex No
NO

No

La misma inforniacin se obtiene en MATLAB 5 pulsando sobre el icono ' :: Es posible eliminar una viriable del espacio de trabajo por medio de la orden ciear n~mbr<variable. L a orden ciear sin argumentos eliniina todas las variables no permanentes. Las variables permanentes son variables del sistema MATLAB. Por ejemplo, la variable permanente eps almacena la precisin iel computador (generalmente lo-''). Tambirn es posible definir nuevas variables como permanentes.. . Ejercicios

l/g$g

3.5. Usar la orden whos para visualizar informacin sobre las variables de tu espacio de trabajo. Qu informacin se recoge en cada columna?

Cuando s&liriiosde una sesin blATL.XB lis variables se pierden. S ; puede dar el caso de que nos interese guardar estas variables para trabajar con ellas en sesiones posteriores. Para ello guardanios el espacio de trabajo en un fichero con extensin . m t usando' la

C~Prni~o 3: ELSISTEMA MATLAB

81

128 double array


72 double array

..

,.

, .

.., >. .
..
.

..

..-,
.~ ,.

,.

!.' . .

,..-. .. -1

., .; .. ; : > :. :; : :

.. , .

...
: ,

FIGURA 3.2. Ventana de espcio de trabajo en MATLAB 5.

orden save. Para recuperar el espacio de trabajo almacenado en un fichero .mat se usa la orden lcad.

3.7. Funciones para construir matrices


Las funciones de construccin de matrices ms comunes se muestran en el cuadro 3.2.

CUADRO 3.2
Funciones de construccin de malrices

eye n) zeros (m,n) ones (m,n) diag (x)

t r i u li.)
t r i l (A) rand (m, n)

hilb(m,n) magic [m, n)


vander ( x l toeplitz(C,R)

Mahiz identidad Motriz de ceros Matriz de unos Si x es un vector, el resultado es una motriz con el vector x como diagonal principal, Si x es una matriz cuadrada, el resultado es el vector dLagonal de la matrizx Parte triangular superior de una motriz Parte hiangular inferior de una matriz Matriz generada aletoriame'nte Mahiz.de Hilbert Mahiz mgica Matriz de Vandermonde constnjida a partir del vector x Matriz de Toeplitz no simtrica con c como primera columna y R como primera fila. toeplitz(c] es una matriz de Toeplitz simtrica.

Las matrices se pueden constnrir por medio de bloques. Por ejemplo, si hemos definido previamente en el sistema una matriz A 3 x 3, podemos constmir una matriz E 6 x 6 del siguiente modo:

82

CLCULO NUMERICO P A R A COMPUTAC~N E N CIENCIA E INGENIER~A

Ejercicios
-

3.6. Crear una matriz F 6 'x 6 que tenga los elementos de la parte triangular superior igual a 2, los elementos de la parte triangular inferior igual -a 3, y los
-elementos de la diagonal los correspondientes a los de una matriz generda-aleatoriamente. A continuacin, crear una matriz G 12 x 12 formada por cuatro bloques 6 x 6, de modo que el bloque superior izquierdo sea la matriz F, el bloque superior derecho la matriz identidad,' el bloque inferior izquierdo una matriz mgica y el bloque inferior derecho una matriz de ceros.

3.8. Control de flujo programando en MATLAB

13 sistema MATLAB incorpora las construcciones o estructuras tpicas de un lenguaje estructurado: while O Eor e i f .

3.8.! Construccin o r
Un bucle
for

repite un conjunto de sentencias un nmero de veces. Su forma general es:

f o r - r a r i a b l e = expresin, s e n t e n c i a ,

...,

s e n t e n c i a , end

o, 'lo que es lo mismo:


f o r v a r i a b l e = expresin sentencias end

Encada iteracin se almacena una columna de la expresin en la variable, y s e ejecutan las sentencias hasta la siguiente sentencia m. Lo ms normal es que la expresin sea del tipo x:y,'en cuyo caso la variable toma desde el valor x al valor y, incrernentndose en cada iteracin una unidad. Por ejemplo, para sumar dos matrices podramos usar,ios siguientes bucles for anidados:

CAP~~ULO 3: EL SISTEMA MATLAB


for i = 1:3,
for j = 1:3, ~(i,j)=A(i,j)+~(i,j), end, end

83

El mismo resultado se produce con:


f o r i=1:3

f o r j=1:3 H(i,j)=A(i,j)+B(i, j) end

end

De este modo se visualiza la matriz H en cada iteracin segn se va creando, Para evitar esto y visualizar el resultado al final seaade punto y coma al final de la. instrccin del bucle for:
for i=1:3 for j=1:3

84

CA~CULO NUMRICO

P A R A COMPUTACIN EN CIENCIAE INGENIER~A

3.8.2. Construccin while


La constriiccin while repite un conjunto de sentencias mientras que se cumpla una condicin:
while condicin, sentencia,

. . . , sentencia, end
.
..

o, lo que . es lo mismo:
while condicin
sentencias

t '

1
t

end

'a
4

Por ejemplo, para saber en que posicin de un vector v est almacenado el valor 9 .hnrirnos los siguiente:

El mismo resiiltado se produce con:


V=[l 2 3 9 5 6 81; i=l; while V(i)-=9
end

Las posibles operadores~de comparacin para construir condiciones en MATLAB se muestran el cuadro 3.3.

CUADRO 3.3 Operadores de comparacin

OPERADOR
< >

DESCRIPCI~N
menor que mayor que menor o igual que mayor o igual que igual que no igual que

<=
>=

--=

Adems, se pueden crear condiciones ms complicadas por medio de los operadores lgicos mostrados en el cuadro 3.4.
CUADRO 3.4 Operadores lgicos

DESCRIPCION

NOT

Cuando estos operadores lgicos se aplican a escalares se produce el resultado O 1 si es cierto o falso. Si se aplican a matrices del mismo tamao se crea otra matriz del mismo tamao con unos o ceros como resultado de realizar las comparaciones entre componentes correspondientes. Ejercicios

3.7. Utilizar un bucle for para multiplicar dos matrices


resultado en la matriz H.

B;

y almacenar el

3.8. Probar el resultado de hacer las siguientes comparaciones 4 4 , 4>5 y 4==5. A continiiacin comparar dos matrices para ver como se forma la matriz resultado
de la comparacin.

3.8.3.Construccin if
La constriiccin if ejecuta un conjunto de sentencias si una condicin se ciimple. Su forma general es:

86

CALCULO NUMERICO P A R A COMPUTACIN EN CIENCIAE INGENIER~A

if condicin, sentencia,

...,

sentencia, end

o, lo que es lo mismo:
if condicin sentencias end

..

Tambin existe la opcin de que se ejecute otro conjunto diferente de sentencias si condicin no se cumple:
i f condicin, sentencias, else, sentenciasijend
\

la^ i

o , lo que es lo mismo:
if condicin sentencias else sentencias e r i d

La versin 5 incorpora instrucciones switch/case nuevas, e if mejorada para condicionales.

3.9. Funciones escalares


Hay funciones que slo operan sobre escalares, pero que pueden operar componente a componente cuando se aplican sobre matrices y crear as otra matriz. Las funciones ms comunesson: sin, cos, tan, asin. acos, atan, exp, log, rem, abs, sqrt, sign,
round, floor y ceil.

Se reconiienda utilizar la orden help para ver como actan y qu accin realizan las funciones anteriores.

,
3.16. Funciones vectoriales

. ..

Otras funciones MATLAB slo operan sobre vectores (fila o columna) si se crea un escalar, pero pueden operar columna a columna cuando se aplican sobre matrices al crear un vector fila que contiene los resultados de su aplicacin sobre cada columna. Si queremos que acte fila a fila hacemos que acte sobre la transpuesta de la matiz. Las funciones ms comunes son: m, min, sort, sum, prod, median, mean, std, any, al1 y conv. Ejercicios

3.9. Utilizar la orden help para ver como actan y que accin realizan las funciones anteriores. Utilizando estas funciones, jcmo se puede obtener el elemento
mayor de una matriz?

3.10. Utilizando la funcin conv jes posible multiplicar do's polinomios?

CAP~ULO 3: EL SISTEMA MATLAB

87

3..11. Funciones matriciales


La potencia de MATLAB reside en sus funciones matriciales, que resuelven importantes problemas de clculo numrico. Las ms comunes son: eig, chol, svd, inv, lu, qr, hess, schur, rref, expm, sqrtm, p l y , det, size, nonn, cond yrang. Utilizando la orden help puede verse cmo actan y qu accin realizan las funciones anteriores.
3.1 2. Generacin de submatrices

El carcter dos puntos (:) y los vectores de ndices permiten referenciar vectores y submatrices de una matriz. Es importante entender su funcionamiento porque ahorra muchas operaciones al reducir el uso de bucles y, por tanto, hace el cdigo ms legible. Esta es una de las principales ventajas de MATLAB frente a otros lenguajes de alto nivel. Veamos algunos ejemplos: La expresin 1;5, usada generalmente en los bucles for, representa realmente el vector [i 2 3 4 S].Esta expresin se puede generalizar de manera que los niuneros no sean enteros y el incremento de valores sea diferente a la unidad. Por ejemplo,laexpresin 0.1:0.2:0.7representaevector 10.1 0.3 0.5 0.71. El carcter : tambin se usa para referencia una submatriz de una matriz. Por ejemplo E (1: 4 , 3 ) representa el vector columna formado por los cuatro primeros elementos de la tercera columna de la matriz E.

ans =
3

6 9

Por otro lado

E ( :, 3 >

representa la tercera columna de la matriz E.

ans = . 3 6 9 1

88

CLCULO NUMRICO

PARA COMPUTACION EN CIENCIA E ~NGENIER~A

En la misnia lgica, E ( 1 : 4 , :) representa una matriz formada por las cuatro primeras ? ii filas de todas las columnas de la matriz E.
E(124,:)
. .

ms =

'2

4
7

5
8

3 6

o
O
~0

o
O
O

o
O
i

i
L

Se pueden usar vectores de enteros como ndices. As por ejemplo E(:, 1 2 . 4 1 ) . representa la submatriz formada por todas las filas y las columnas 2 y 4 de la matriz E.
E(:, [2,41)
.
,

:; .>
!

C
u
O U

m s =

2.

5
8

1 1

1 1

1
1

1
1

~,

Los ndices se pueden usar a ambos lados de la asignacin. Por ejemplo A ( : , [i 31 ) = B ( : , 1:2 ) asigna a la siibmatriz de A formada por todas las filas y las columnas I y 3 lasubinatriz de B formada por todas las filas y las columnas 1 y
3 -

Ejercicios

3.1 1. Crear una tabla de senos.(matriz forniada por dos columnas) desde el ngulo 0.0 al ngulo 3.0 con incremento O.,l.

l. Crear una matriz aleatoria D 10 x 10. 2. Visiializar la sptima columna de la matriz. 3. Visiializar la tercera fila de la matriz.

C~Pfful0 3: E l SISTEMA MATLAB

89

4. Visualizar la submatriz 4 x 4 formada por las filas 2 , 3 , 4 y 5 de las columnas 5, 6, 7 y 8.


-

3.13. Visualizar la submatriz formada por las columnas 1, 6 y 9 de la matriz D del


ejercicio anterior.

3.13. Ficheros . M
MATLAB puede ,ejecutar secuencias -de sentencias almacenadas en archivos con extensin .M.Hay dos tipos de archivos .M: guiones y funciones. 3.13.1. Guiones Un guin MATLAB est fofrnad por un conjunto de sentencias MATLAB. Por ejemplo, podemos crear, por medio-del editor, un archivo que se 1lame~matriz.mcon el siguiente contenido:
vi = [ 1 2 3 4 ; 4 5 6 71; V 2 = [ 1 2 3 4 ; 4 5 6 7 ] ;
'"3 = v1
,
>.

V2

Al usar la nueva orden matriz se ejecutan las sentencias incluidas en el fichero matriz .m, con el siguiente resultado:

Es importante tener en cuenta que el guin utiliza el espacio de trabajo global. Esto significa que dentro del guin se pueden usar las variables globales y las nuevas variables que se crean dentro del guin pasan a formar parte de las variables globales. Si ejecutamos el guin anterior en una sesin donde la variable vj existe, eliminamos la variable del entorno definiendo una nueva. Los guiones se usan a menudo para crear matrices de gran tamao porque los errores se pueden eliminar rpidamente. Los guiones pueden llamar a otros guiones, incluso a s mismos recursivamente.
,

3.13.2. Funciones
Gracias a las funcionqs podemos hacer ms potente el sistema MATLAB. Podemos crear funciones para resolver problemas, pasando a formar stas parte del conjunto de

MATLAB. Las variables creadas en una funcin son locales; Slo existen mientras la funcin se est ejecutando. Esto quiere decir que sus nombres de variable son independientes de los utilizados en la sesin donde se invoca a la funcin. Por ejemplo, vamos a crear una funcin qe admita como parmetro una matriz y devuelva el elemento mayor:
funccion m = m a x h A ) %KUli4O(A) Ije&elve el mayor elemento de ijna matriz 8
%
,

;
'i

-..

%
%=

Valores de entrada A: Matriz

,\
z
.?

B Valbres de s a l i d a
8
%

m: Mayor elemento de l a matriz A


.

m = niaxmaxA));

~ t i l i z a m o s u neditor para escribir el textp anterior en un fichero qe llamanios m~i,?io .m. De estemodo la funcin se puede usar dentro de una sesin MATLqB como si se tratara de cualquier otra funcin. Si en una sesin queremos saber el mximo elemento de una matriz E y asignar este valor al escalar a, escribiremos a = --(E). De este modo se llama a la funcin pasando la matriz E como argumento y asignado el resultado al escalar a.

:i
1

1 i 1 i

Las funciones se pueden invocar con valores por defecto para los argumentos de entrada. La variable nargin almacena el nmero de argumentos usados al llamar a la funcin. Por ejemplo la funcin:,
function m = maxcol(A,n)
BK?.XCOL(A, ri)
-

~ e v u e i v ee l mayor elemento de l a c o i m a n' de una matriz A o de l a matriz entera dependiendo

s i se introduce o no un valor para n .

B
%

B
.

% %~ 8
8
%

Valores de entrada A: Matriz n: Numero de columna Ylalores d e s a l i d a n: Valor mayor


-

i f nargin < 2

92

CALCULO NUMERICOPARACOMPUTACINENCIENCIA E INGENIER~A

.l 3
I
i

componente de la matriz a Se puede conocer dentro de la funcin el nmero de argumentos de salida por rnedio.de la variablenar~out.
, > .

a '= mawcin(E)
, .'

..
~ ~

Otros ingredientes tiles: \ Un smbolo % indica que el resto de la lnea es un comentario y, por tanto, MATLAB lo ignora. Las primeras lneas comentadas se visualizan en pantallaal ejecutar la prden help usando como argumento la funcin.
help

1
a
'7

;i !

i .;

W I N ( A , n l Devuelve e l mayor y menor elemento de l a c o l m a n de una matriz o de l a matriz entera dependiendo s i se introduce o no un valor para n.
~

..

Valores de entrada A: Matriz n: Numero de c o l m a Valores de salida m a : valor mayor m i : Valor menor
\

a i .(
2

Un argumento de entrada a una funcin puede ser elnombre de otra funcin. Vase la funcin feval. * La versin 5 de MATLAB permite el uso de .M con subprogramas, funcionalidad esta que permite escribir cdigos ms-autocontenidos.

Ejercicios

3.14. Implementar una funcin que tenga como parmetro una matriz y un escalar; y produzca como salida la matriz elevada al escalar.

3. i3.3.

dnde busco MAJLAB los ficheros .M?

Cuando se introduce una cadena de caracteres en la lnea de rdenes, el entorno reali;a las siguientes bsquedas:

C A ~ ~ U3: LO EL SISTEMA MATLAB

93

1. Comprueba si cadena es una variable. 2. Si no, comprueba si es una funcin propia de MATLAB. 3. Si no, comprueba si hay un fichero con el nombre cadena.m en el directorio actual. Dentro de MATLAB se puede cambiar de directorio con chdir. 4. Si no, comprueba si hay algn fichero de nombre cadena.m en la ruta de bsqueda o path del MATLAB.

Se puede visualizar la ruta de bsquedade MATLAB conla orden path.

Se pueden unir ms subdirectorios a la ruta de bsqueda usando la orden path. Vase En la versin 5 la pulsacin sobre el icono da acceso a la ventana del gestor de encaminamientos de-la figura 3.3, que permite modificar el PATH de MATLAB.
help path.

3.14.Entrada y salida de texto

-/

Se puede asignar directamente unacadena de texto a una variable. Por ejemplo,

FIGURA 3 3. Gestor de encaminamiento de MATLAB 5.

s = 'Esto es un mensaje' =

Esto es un mensaje

Oentro de i~n.fichero.M se pi~ede escribir en pantalla de los siguientes niodos: Con in fiincin d i s p . Por ejemplo:
disp(<Hola, esto es un mensaje') Hola, e s t o es un mensaje

Con la funcin e r r o r ; E n este caso se visualiza el mensaje y el fichero de ejecutarse. Por ejemplo:
error('la operacion no se puede realizar')

.!4

termina

l
'1

Dentro de un archivo .M se puede pedir al usuario qiie introduzca tin dato usando la fiincin i G u t . Por ejemplo:
resg = input'Introduzca el numero de iteraciones: ' )

<
.i

CAP'KULO 3: E l SISTEMA MATLAB

95

De este modo se visualiza en pantalla el mensaje y el dato introducido por teclado se asigna a la variable resp. Ejercicios

3.15. Modificar la funcin del ejercicio anterior de modo que la potencia a la que
se eleva la matriz se introduzca por teclado. Con la funcin fprintf se pueden escribir datos y texto en pantalla o en fichero. Por ejemplo:
fprintf (1, 'La ccmponente 2,3 de,la matriz E es: %d \n', E ( 2 , J ) )

La componente 2,3 de la matriz E es: 6

En la versin 5 es posible definir arrays de variables alfanumricas.

3.1 5. Medidas de eficiencia de algoritmos


Para medir la eficiencia de un algoritmo podemos medir su nmero de operaciones (flops) o el tiempo de ejecucin. El sistema MATLAB almacena en la variable flops el nmero total de operaciones en coma flotante que se han llevado a cabo en la sesin. La orden flcps (O) inicializa la variable flops a O. As, inicializando a cero la variable flops antes de ejecutar un algoritmo y leyndola despus sabemos el nmero de operaciones en coma flotante que realiza el algoritmo. Para conocer el tiempo de ejecucin de un algoritmo contamos con varias posibilidades. La primer de ellas consiste usar la funcin ciock, que devuelve la hora actual con una precisin de centbimas de segundo.
clock
ans =

La orden etime(t2, tl) devuelve el tiempo en segundos transcurrido entre dos tiempos t2 y tl. Por ejemplo, se puede calcular el tiempo consumido en calcular la inversa de una matriz M 40 x 40 del siguiente modo:
M = rand(40); t = clock; Fnv(M); time = etime(clock, t)

time =

o. OOCO

Una ltima posibilidad es usar las rdenes t i c y toc. El modo de proceder es ejecutar:! la orden t i c antes del algoritmo y la orden toc despus.
M = rand(4O); tic, imrM); toc

1
i

Desde la versin 5, MATLAB incorpora una utilidad que permite controlar el tiempo j de ejecucin de cada lnea de un fichero .M. P&a ms informacin teclear he1 p r o f i l e . , \
4

.!

Ejercicios

.S .Y

3.16.. Crear una tabla con el nmero de operaciones que hacen falta para obtener la '3
.

inversa de una matiz, desde 2 x 2 hasta 15 x 15. Para ello escribir una funcin que admita como argumentos el menor y el mayor orden; y devuelva la tabla de opera- j ciones. ~ C i i ~ varia o el nmero de operaciones con respecto al orden de la matriz? ,:J
j

3.16. Formato de salida


Todos los clculos con nmeros reales se realizan en MATLAB en doble prcisin. Sin embargo, el formato de salida se puede definir con la instruccin f o m t , algunas de cuyas opciones se muestran en el cuadro 3.5.

!j

CUADRO 3.5 Formotos de salida ORDEN fomt fo+t fomt fomt 'chort long short e iong e FORMATO Punto fiio con 4 dgitos decimales (por defecto) Punto fijo con 1.4 digitos decimples Notacin cientfica con4 dgitos decimales Notacin cientfico con 15 dgitos decimales

'

Una vez seleccionado, el formato se mantiene hasta que se cambie de nuevo.


~

3.17. Grficos e n dos dimensiones


i

f4
3

i i

La orden p i o t crea grficos x-y; si x e y son vectores de la misma longitud, la orden p 1 0 t : (x.,y) abre una ventana grfica y dibiija los elementos de x frente a los de y. Por ejemplo, para representar la grfica del coseno escribiramos:

CAP~TU~O 3: EL SISTEMA MATLAB


x = -4: .Q1:4;
y

'

97

= cos(x); p l o t (x,y)

Sobre - las grficas se pueden realizar las acciones mostradas en el cuadro 3.6.
CUADRO 3.6 'Opciones en las grficas ORDEN .

FORMATO
Coloca una rejilla en la grfica Ttulo del grfico Etiqueta en el eie x Etiqueta en el eiey Escribir texto en una posicin interactivamente Escribir texto en unas coordenadas determinadas

grid titie xlabel y labe1 gtat text

Por ejemplo:
grid; t i t l e ( ' G r f i c a d e l coseno8); x i a b e l ( ' e j e x l ) ; y l a b e l i ' e j e y ' ) ;

98

CLCULO NUMRICO

. PARACOMPUTACIONENCIENCIAE INGENIER~A .
1 ;

Por defecto los ejes del grfico se escalan automticamente. Sin embargo, se pueden forzar los lmites de los ejes por medio de la orden axis ( c ) , que admite como parametro un vector de 4 elementos c= [i,,,x-, y-, y- 1. Para que las grficas se vuelvan a autoescalar se ha be ejecutar de nuevo la orden axis. La orden axis i 'squarer hace que se use la misma escala enmbos ejes. Para representar vanas funciones en el mismo grfico se forma una mahiz que contenga en las columnas cada una de las funciones que se quiere representar. Por ejemplo, para representar la funcin seno y la funcin coseno en el mismo grfico se procede del ~! siguiente modo:

I
'j

Tambin se puede utilizar la orden hold. Esta orden congela la ventana grfica actual de modo que las siguientes grficas se representan en ella. Volviendo a ejecutar hold se descongela la ventana grfica. Se pueden cambiar los tipos de punto y lnea, as como sus colores. Vase help plot.

3.18. Grficos en tres dimensiones

La orden mesh ( 2 ) crea un grfico en tres dimensiones con los elementos componentes de la matriz z. Para representar grficamente una funcin z =Xx, y) sobre una regin rectangular plana del dominio de f se han de seguir los siguientes pasos:
1. Definir los vectores xx e yy que particionan los lados d e ~ ' ~ l a n rectangdar. ; 2. Usando la orden rneshgridse crea un par de matrices, una de ellas x cuyas filas son iguales a xx y con un hmero de filas igual al nmero de componentes de yy, y otra

matriz y cuyas columnas son iguales a yy y con un nmero de columnas igual al nmero de componentes de ,v.

3. Obtener la matriz z evaluandofsobre las matrices x e y. 4. Aplicar ni-sh sobre z. -(x'+.v2) Por ejemplo, para representar la grfica de la funcin z = x . e drado [-4,4] x [+,41 podemos escribir las instrucciones

sobre el cua-

11

Ejercicios 3.17. Modificar la funcin escrita en el ejercicio 3.16 para que represente en una grfica bidimensional el nmero de operaciones en funcin del orden de la matriz.

3.18. Representar la funcin

T = e-(X2Cy ) en el dominio [-2,2] x [-2,2].

Las versiones de MATLAB, a partir de la 5, incorporan muchas mejoras en la visualizacin grfica mediante el uso del algoritmo Z-buffer, soporte de color verdadero y muchos efectos de manejo de imgenes y figuras 3-D. Tambin se incorporan mejoras en los grficos para presentaciones, como el poder introducir texto y frmula en formato TeX. Otra mejora consiste en la posibilidad de definir arrays de tipo byte para almacenar imgenes.

3.19. Elaboracin de programas en MATLAB


1

A la hora de escribir funciones MATLAB es importante seguir una serie de normas de estilo que o bien facilitan la comprensin y el mantenimiento de los cdigos, o permiten obtener el mximo rendimiento de los programas. En particular es importante que el cdigo est auto-documentado. Dentro de la documentacin del cdigo tienen un papel especial las lneas que siguen a la cabecera del pro-

100

~LCULO NUMERICOP A R A COMPUTACIN EN CIENCIAE INGENIER~A


';

grama, que son las que aparecen cuando se teclea help nombre-fichero. Es interesante incluir informacin sobre qu resuelve la funcin, qu mtodo emplea -incluso con referencias bibliogrficas-, qu variables utiliza como entrada y cules como salida, las^ funciones implementadas..p reviamente que se utilizan, e incluso el autor y la fecha de la ltima revisin del cdigo.-Tambin e s importante dividir y comentar los mdulos princi., . del diseo descenpales de la funcin. En particular, se puede emplear el pseudocdigo dente como comentario en la funcin. En resumen, normalmente no es trabajo perdido, sino ms, bien lo contrario, pues supone incluir toda la informacin necesaria para comprender y mantener el fichero .M.Si no se ha utilizado una funcin en varios meses y se necesita volver a ella para realizar unos canitjios, es fundarnenfal'que est suficientemente documentada por medio de comentarios. . . , En cuanto al cdigo en si interesa seguir las normas de la programacin estructurada, tanto de cara al mantenimiento y depuracin de los programas como de cara a la.legibilidad del cdigo. Otro tema importante a la hora de escribir 'funciones MATLAB es el de la optirnizacin del rendimiento, ya que el modo de .programar una tarea concreta puede ser determinante tie la velocidad de ejecucin del cdigo resultante. As, es conveniente seguir las siguientes indicaciones para alimentar el rendimiento del sistema:
~

: .

.?

i :

; .l 3
.c

li

.: i .;

."

;j

a 4

.$ :l
a

l . Evitar rl liso de btrclesy ~rriliznr los funciones &ctoriales de MATLAB. Por ejemplo definamos los vectores
for i=1:10000 xi(i)=f/i; x2(i)=~'sin(0.00l*i);

8 3
4 2
4

d;

-4 2
-4
$

Su producto escalar puede realizarse componente a componente, tardando mucho


iris en ejecutarse por medio de bucles que con operaciones sobrevectores
su1~0; tic; for k=1:10000, sum = sum

+ xl(k)'x2(k);

end; toc; sum

elapsed-time = O. 4010
Sum =

3.3156

tic; sum = ~ 1 ~ x 2 toc; '; aum

elapsed-time =
,

0.0100 3.3156

sum =

2. Utilizar jrriciones vectoriales y minimizar el nmero de llamadas a firnciones t'.rterriu.s. Para ello puede ser interesante definir variables intermedias que almace-

nan llamadas anteriores a funciones que se van a reutilizar, etc. Adems, hay algunas operaciones que se realizan de manera ms directa de alguna forma particular, el ejemplo clsico es el de elevar a una potencia, que es mejor realizar por medio de multiplicaciones cuando sea posible:
tic; for j=1:100, sall=xl.*xl.*xl; sal2=xl.*xl; end; toc;
elaps-time = 0.4210

and; toc; tic; for j=1:100, sall=xl.*3; sa12=~1.~2;


elaps-time = 5.3670

J .

A la hora de optimizar un algoritmo hay que intentar que no por esto pierda legibilidad, esto es, que las simplificaciones que se realicen estn bien comentadas y en '.'- - l e programa cuyo funcion&iento sea transparente: ;,r,,~nsionar-los .sectores. Si no se hace as MATLAB debe ir aadiendo una 1 componente nueva al vector, lo quese traduce en un funcionamiento ms lento. Por ejemplo: . .
tic; a(1) = 0; for i=lr10000, a(i+l) = a(ii + 1; endt toc
elapsed-time = 12.6380 tic; a=zeros(1,10000); a(1) = 0; for i=l:10000, a(i+l) = a(i) + 1; end; toc elapsed-time O . 6910

La elaboracin de programas es mucho ms verstil desde la versin 5 de MATLAB y es uno de los campos que ms mejoras ha experimentado. En el terreno de la programacin y el desarrollo de aplicaciones se incluye un analizador de rendimiento de ficheros .M,un editor y depurador de ficheros .M, programacin orientada a objetos, entorno de desarrollo de GUIs, editor de objetos grficos, etc.

-KGI&

p s i 6 1

Introduccin a MATLAB
fb MATrix LABoratory

Jess Peinado
b Pedro Alonso
~o
F 3

DBpartamenlo de S s t w
lnfomiaticos y Cmpulaa6n

ib Universidad Polil6cnica de

Valencla
1

DSIG

f f a .

Qu es MATLAB
fb MATLAB es una aplicacin interactiva para realizar clculos

cientificos y de ingeniera basada en matrices.


fb Permite la realizacin de clculos a travs de la lnea de co-

mandos y mediante programacin.

ib MATLAB est disponible en diversos entornos: estaciones de trabajo Sun, Apolio, VAXstation, HP, PC's y compatibles y Appie Macintosh.
2

Qu es MATLAB

A % . _

p Entrar en MATLAB Doble-Click el icono


o bien

...

Invocar: c: >mtlab
ib Trabajar sobre 'command window'

~b Salir de MATLAB Comando quit


3

DSI~
-

Qu es MATLAB

-ex--&

...---..

~b El prompt '>>' indica que MATLAB est esperando una orden.

~b MATLAB es un lenguaje de expresiones.

ib

LOScomandos y expresiones son ejecutados o evaluadas y el resultado se muestra inmediatamente.

ib Si finalizamos con ';' el resultado no se muestra, pero la asig-

nacin si se realiza..
4

DSV~
ib Ejemplos:

Qu es MATLAB
C _ q _ '

.
>>2+2 ans = 4 >>x=2+2
X

=
4

>>y=2*2;

>> Y Y=
4
5

osid
-

Introduccin de matrices

. i i x

...----

Introduccin de matrices
s
MATLAB trabaja con un slo tipo de objeto: Matriz. Una matrlz 1 x 1 la llamamos 'escalar'. w Una matriz n x 1 1 x n la Ilamamos 'vectof. Una MATRIZ es un conjunto ordenado de nmeros, reales o complejos, ordenados por filas y columnas. No hay especificaciones de tipo. Los nijmeros se pueden representar en distintos formatos como el siguiente: [ m a n t i s a l e [exponentel. Ej: A=lOe24
7

1 3 1 Matrices simples
b Las matrices se pueden introducir de diferentes formas:

Mediante una lista explcita de elementos. Generadas por rdenes y funciones. Creadas en archivos .m. Cargadas de conjuntos de datos almacenados en un archivo externo.

(b

MATLAB no necesita especificar el tamao por adelantado.

El espacio de almacenamiento es asignado dinmicarnente hasta completar la memoria asignada a ia aplicacin o ia memoria disponible en el sistema.
8

l1

k1Matrices simples

-l-?-Z.

La lista explicita bs el mtodo ms sencillo para introducir los elementos de la matriz. w Los elementos estn separados por espacios. o Las columnas estn separadas por ';' o por 'CR'. Es equivalente:
. A =
A

[ 1 2 3 ; 4 5 6; 7 a 9 1
= [ 1 2 3
4 5 6

7 8 91

DSI~GI

Matrices simples
>> A = [1 2 3;4 5 6; 7 8 9 1

% -A -& -

A=

1
4
7
>>

2
5
8

3
6
9

10

DSV~

Matrices simples

. = . h T i : .

p Las matrices pueden generarse como el resultado de rdenes o

funciones.

w
w

Las matrices creadas tienen el tamafio adecuado para almacenar el resultado de la operacin.

El tamao de las matrices debe ser vlido para la operaan.


11

DS~C~
Ejemplo:
>> A=[l 2 31;

f f i i * .

,..---..

Matrices simples

>> 8=[1 2 3;45 6;7 8 9 1 ; >> C=A*B

C=
30 36 42
>> D=A+B(I ,:)

D=
2

6
12

os/cI
>> A+B(:,I)

. S

k : * = r : .

Matrices simples

ib Ejemplo de comando errneo:

??? Error using ==> +


Matrix dimensions must agree.
ib Esto sucede porque los vectores sumados no coinciden en sus

dimensiones, es decir, no se pueden sumar un vector fila y un vector columna..

13

E = % .

Matrices simples
ib Las matrices pueden generarse a partir de un archivo ASCI1

externo que se carga mediante el comando load.


p El archivo ASCll debe contener datos separados por espacios y

cada fila en una lnea.


R . Cada lnea separada por 'CR' de la siguiente se almacena en

una fila de la matriz.


p La extensin no puede ser .mat,ya que estos son un tipo de

ficheros binarios especiales.


p

Es posible importar ficheros que contienen datos ordenados de


modos especiales con el comando fscanf.
14

D S ~ '

Elementos de la matriz
ib Los elementos de la matnz se pueden generar mediante

A & .

expresiones MATLAB:

>> x=[-1.3 sqrt(3) (1+2+3)'4/5]


X

-1,3000 1.7321 4.8000 b Los elementos individuaes de la matnz pueden referenaarse especificando el ndice entre parntesis (n8tese que x(4) se pone a cero de manera automatica). >> x(5)=abs(x(l))
X

=
1.3000 1.7321 4.8000 0.0000 1.3000
15

*sI"

Elementos de la matriz
ra Se pueden construir matrices grandes usando matrices pequeiias como subelementos. Observese cmo podemos

x=eeA-A

aiiadir una fila a la matriz A:


>> A=[l 2 3;4 5 6;7 8 9 1 :

.>> r=[10 11 121;


2 > A=[A;r] A= 123 456 789 10 11 12

16

PSI~GI

*LWZS&.

Matrices simples
La transpuesta de una matriz se halla con la comilla simple '. >>A=[123;456;789] A= 123 456 789 >> A' ans = 147 258 369

17

DSI~CI

Funciones para construir matrices


eYe

.=Y&

. h .

zeros ones diag triu tril rand hilb magic toeplitz

Matriz identidad Matriz de ceros Matriz de unos Matriz diagonal Parte triangular superior Parte triangular inferior Matriz aleatoria Matriz de Hilbert Cuadrado mgico Matriz de Toeplitz
18
,

Funciones para construir DS//I~] matrices


b Ejemplo:

-S,=-%.

>> A = eye(4)

A=
1 O O O 0 1 0 0 0 0 1 0 0 0 0 1
19

rdenes y variabls

~svGi

X f & .

rdenes y variables

b MATLAB es un lenguaje de expresiones. b Cada expresin tecleada por el usuario se interpreta, evala y,,por defecto se muestra su resultado. b El formato tipico es: v a r i a b l e = expresin.

b La evaluacin de la expresin produce una matriz, que es mostrada en la pantalla y asignada a la variable e s p e d i i d a
para su uso posterior.

b Si omitimos la variable y el signo'=', el resultado se asigna a la variable ans.


1900/81 ans = 23.4568

21

~ o ~ lrdenes d y variables

e & .

-----

b Si el ltimo carcter de la orden es ';' la asignacin se realiza pero su resultado no se muestra en pantalla. til en archivos .m. til para operaciones que producen matrices grandes como resultado y no interesa mostrarlas en pantalla.

t b Si la expresin es tan complicada que no cabe en una iinea de

la pantalla, podemos usar '...' seguido de 'CR', lo que indica que la orden sigue en la columna siguiente. Ejemplo: s=1 112 + 113 - 114 + 115 - 1/6 + 117 ... - 118 + 119 - 1/10 + 1/11 - 1/12;

22

rdenes y variables
FO Las variables y los nmeros de funcibn estn formados por una

letra seguida por cualquier nmero de letras o nmeros o del carcter underscore '-'.
FO Solo se utilizan los 19 primeros caracteres del nombre de la

funcibn.
p MATLAB es case sensitive: w A y a no son la misma variable.

El comando casesen hace que MATLAB sea case insensitive. Debe usarse con precaucin.
23

Todos los nombres de funcibn deben estar en minscula.

osjcl

c . % & -

Espacio de trabajo

24

DSIG

Espacio de trabajo

& A -. .

-----

fb Las rdenes utlizadas hasta ahora crean variables que se

almacenan en el espacio de trabajo.


fb La orden who lista las variables aimacenadas.

B Informacin ms detallada puede obtenerse con la orden whos


rrmr
. H
A
2

rize
4 3

~lementi

B Y C . .
48 72
24

-LLY

capler
No Ho So
HO

L
9

N11
NI1

B
C

D
%x

1 4 3 1 4 5
1 4 3 3 by 3
280 b F s a

3
5

Nll

(0
24

mil mil
N:l

si
HC

?2

Oran* ioial i r 15 elerencs U i n g

25
leaving 7452080 byres of maa>ry Cree

o s 1 6 1

A * . -

-----

Espacio de trabajo

!a Las variables pueden borrarse con la orden clear.


fb Cada elemento de una matriz real usa 8 bytes de memoria..
fb

Las variables ans y eps son variables permanentes, tienen

un significado especial para MATLAB, y no pueden borrarse. . ans es el resultado de la ltima orden realizada sin asignacin explcita a variable. aps es la tolerancia utilizada por MATLAB para determinar si un resultado es O entre otras cosas, y debera ser utilizado por los usuarios wrno criterio de convergencia. Para la ariirnetica IEEE utilizada en la mayoria de wdenadores personales y estauones d e trabajo e p s = 2.2204e-16. El valor de eps puede modificarse a cualquier valor, incluso O.
26

DSI~GI

Espacio de trabajo
w
Mediante el comando save se puede guardar el espacio de trabajo (las variables) para otras ocasiones.

= O &

>> save
Saving to: matlab.mat

b Con save fichero el espacio de trabajo se guarda en el fichero fichero.rnat. b Para recuperar las variables de una sesi6n anterior se utiliza el comando load:
>> load fichero
27

DS~ GI'

Nmeros y expresiones

28

o m G i

* T e >

Nmeros

p Para la expresin de nmeros se utiliza la notacin decimal tpica, optativamente: Signo menos '-' al principio. Potencia de 10 como facior de escala, especificada como sufijo 'eXX'.

b Algunos ejemplos de nmeros validos:


3 9.6397238 -99 0.0001 1.602103-20 6.02252e23

p En ordenadores que utilizan la aribnetica IEEE, el error relativo de cualquier nmero es eps, lo cual equivale, aproximadamente, a 16 cifras significativas.

b El rango numerico es desde loA-308hasta 10A+308.

29

Expresiones aritmticas
Las expresiones aritmticas pueden construirse usando los operadores aritmticos tipicos y con las reglas de precedencia comnmente utilizadas. Operadores:

adicin substraccin multiplicacin / divisibn a derechas \ divisin a izquierdas

-C-C-~Z,

* a ' 6 J Expresiones aritmticas

b Para escalares la divisin a derechas y divisin a izquierdas

realiza lo mismo.
b Para matrices, sin embargo, no son iguales.

x = A\b es la solucin de A ' x = b. x = blA es la solucion de x'A = b.


31

o * & -

-----

DS"~

Expresiones aritmticas.
b Los parentesis se usan del modo tipico para alterar la

precedencia de las operaciones.


ib Las funciones matemticas elementales estn incorporadas en

MATLAB. P. e.: abs, sqrt, log

b .Algunas funciones devuelven valores especiales:


P

La funcin p i devuelve litatan (1). La funcin i n f devuelve infinito, que es el resultado de l / o . Le variable NaN, Nota Number es un valor especial recogido en la aritmtica lEEE que indica que el resultado de una operacin es una indeterminacin.como o/o o i n f / i n .

Si usamos una variable que tenga el mismo nombre que una 32 funcin existente, la funcin deja de estar disponibfe. Ojolll

PSGI

Help

A A x

-----

b La funcin h e l p provee Informacin en lnea.

w
w

Para obtener la lista de temas acerca de los que se puede obtener ayuda, use > > h e l p . Para obtener ayuda acerca de un tema. use > > h e l ptema. Para obtener ayuda acerca de los operadores: > > h e l p ops .

B Para obtener ayuda acerca de la ayuda: > i h e l p h e l p .

33

Help
ib Ejemplo del uso del comando help

>> help mean

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 valueof each column. See also MEDIAN, STD, MIN, MAX.
34

DS//G/

-.-A-&

-----

Construcciones Estructuradas

35

Construcciones Estructuradas

SFA--&

-----

B Las sentencias de control del flujo en MATLAB operan como en la mayora de los lenguajes infomlaticos:
For.
x = 0; for i = 1x1, x=[x,iA2]. end
o

x=O; for i = 1:n. x=[x,tA21. end

36

p s I Y c 1

Construcciones Estructuradas

= y *

ib while

n = O; while 2"n < a n=n+l; end n


37

DSIYCI

Construcciones Estructuradas

s f = f = 2 . A .

-----

ib if

ifncO panty = 0; elseif rem(n,2) == O panty = 2; else panty =l; end


38

QSI~G~
ib Relaciones

Construcciones Estructuradas

= q ; .

<

> <= >=

--=

menor que mayor que menor o igual que mayor o igual que igual que

distinto que ib Para combinar las relaciones: & Y

o no

39

Construcciones Estructuradas
ib break: Termina la ejecucin de un bucle FOR o WHILE. Si

. F E & .

.,,---..

existen bucles anidados, termina solamente el bucle interior

ib error('MSG'): muestra el mensaje 'MSG', en caso de que

exista, y aborta la funcin que se est ejecutando.

0~~61

-sez-

Funciones Escalares

41

Funciones escalares

. t = e L &

----..

lb Son funciones definidas en MATLAB que operan sobre escalares.

Si se aplican a matrices. actuarn sobre cada elemento: sin


COS

asin acos atan

exp los3 rem

abs sqrt sign

round floor

tan

ceil
42

Funciones escalares
ib La funcin sqrt por ejemplo halla la raz cuadrada de los

% & *

elementos de una matriz: >>A=[425;916];

>> sqrt(A)
ans =

2
3

43

DS~]

t r = ? L & .

*.---..

Funciones Vectoriales y Matriciales

44

os'61

Funciones Vectoriales

. t = % i &

...---

m Otras funciones actan sobre vectores (matrices n x 1 o 1 x n).


Si se aplican a matrices, el resultado es un vector fila con los resultados de la funcin aplicado a cada columna..

max min sort

sum prod std

median mean

any al1

45

o s d i
m

L : z T .

Funciones vectoriales
La funcin mean, por ejemplo, halla la media de los elementos de un vector:
>>x=[t;2;3];

.>> mean(x);
ans =

2
46

Funciones de Matrices
F C

Actan sobre matrices: elg chol svd inv valores y vectores propios factorizacin de Cholesky descomposicin en valores singulares inversa factorizacin LU factorizacin QR Forma de Hessenberg Descomposicin de Schur rango
47

lu
qr hess

schur rank

* = L * .

...----

D ~ S '

Funciones de Matrices

expm sqrtm
PO~Y

exponencial de matriz raz cuadrada de matriz polinomio caracteristico determinante tamao 1-norma, 2-norma, F-norma, -norma Nmero de condicin en 2-norma.
48

det slze norm cond

D ~ S ''

Funciones de matrices
b La funcin inv, por ejemplo, halla la inversa de una matriz:

_ _ A -* '

...----

> > A = [ i 2;34];

>> A*inv(A)
ans =

1.0000 0.0000

o
1.0000
49

? * a .

-"---

DS''~,

Funciones de Matrices

fb La funciones pueden devolver uno o ms datos, por ejemplo:

oy

= eig(A);

y es un vector que mnliene los valores propios. U es la matriz de vectores propios. D es una matriz diagonal cuyos elementos son los valores propios de A.

* [U,D] =,eig(A);

50

4sf61

La lnea de Comandos

% $ z A * .

...----

$ %

El cursor se posiciona en la lnea mediante las flechas izquierdalderecha y la tecla de borrar el carcter anterior. Mediante las flechas arribalabajo se recuperan comandos anteriores.

pl

ib Si se proporcionan unos caracteres, la bhsqueda de comandos

con las flechas ser de comandos que comiencen con dichos caracteres.

51

Submatrices. La notacin ':'

P S ~ '
w

Submatrices. Notacin ':'


El operador ':' es muy til en MATLAB. Sirve para generar vectores: ejemplo: 1:5 es equivalente al vector [l 2 3 4 5). ejemplo: 02:0.2:1.2 es [020.4 9.6 0.8 1.0 1.21. ejemplo: 5:-1:1 es [5 4 3 2 11.

L s i

En el siguiente ejemplo se genera una tabla de senos:


x = [0.0:0.1:2.0]';

y = sin(x);
Ix, Y1
53

D 'S '

Submatrices. Notacin ':'


B Tambin sirve para referenciar submatrices o segmentos de

e _ _ '

-----

vector: ejemplo: A(1:4,3) Es el vector columna formado por las cuatro primeras entradas de la tercera columna de lamatriz A. Es el vector columna formado por la tercera ejemplo: A(:,3) columna de la matriz A. w ejemplo: A(:,[:! 41) Son las columna 2 y 4 de la matriz A.

@ Estas expresiones pueden usarse en ambos lados de una

asignacin.

54

osllll
s
Sea la matriz A:

= .L e * -

Submatrices

>> A = [1:4;5:8;9:12;13;16]; La submatriz A([ 2 4],2:4) es la Siguienle: >> A([ 2 4],2:4) ans = 6
l 5 9
13

10

l * >

c m >
55

11

12

7 15

8
16

14

Archivos .m

DS/?G~

Archivos .m

z z

~b MATLAB puede ejecutar una secuencia de comandos

almacenados en disco. Estos ficheros se llaman ficheros .m y tienen la extensin .m.


~b Existen dos tipos de archivos o ficheros .m:

Ficheros script. Ficheros funcln.


57

DSGI

Archivos .m: scripts

= = L .

ib Un fichero .m de tipo script est formado por una secuencia de

sentencias MATLAB normales. Sea data.m el nombre de un fichero .m, se ejecuta desde la finea de comandos como:
>> data

y se ejecutan los comandos del fichero M data.m. Las variables son giobales al entorno de trabajo en el que se ejecute en script. Los scripts pueden referenciar a otros scripts recursivamente. p Sirven por ejemplo, para introducir datos en una matriz muy L grande.

58

DS//~]
l b

scripts

= A -

e---$

Por ejemplo. fichero datam:


A=[123
456

7891
>z data

A=

1 2 3
4 5 6

7 8 9
59

A -& -.

----..

Archivos .m: funciones

b En MATLAB pueden definirse funciones que resuelvan ciertos

problemas con el mismo estatus que las predefinidas.


ib Las variables de las funciones son locales.

b La definicin de una funcibn se almacena en un archivo

.m.
60

DSI~GI

Archivos .m: funciones (construccin)

= Y A & -

.....---

Los comentarios son lneas que comienzan por el signo '%'.

p La sintaxis de una funcin es functlon [varf,var',..] =nombre( paraml, param2 ... ). o 'Conjunto de instnirxiones MATLAB'.

w van es el nombre de las vafiables resultado.


ib nombre es el nombre de la funcin.

paramison los parmetros.


ib El nombre de la funcin debe ser el mismo que el del fichero .m.
61

DSI%~
1

Archivos .m: funciones (construccin)

z -

w Ejemplo:
function a = randint( m, n )

% RANDINT Generador de matriz de enteros aieatoria.


% %

randint(m,n) devuelve una matriz de m x n entradas entre O y 9.

a = floor(lO*rand(m,n));
jb

Invocacin desde MATLAB:


>> randint(4,2)

o
>> z = randint(4,2)
62

Ds%~

Archivos .m: funciones (construccin)

-L-F%=-&.

% !

La variable nargin contiene el nmero de parmetros proporcionados en la llamada a la funcin. La variable nargout contiene el nmero de parmetros de salida proporcionados por la funcin.

ro

tb Las primeras lneas de comentario aparecen cuando se llama al comando help.


p Algunas funciones de MATLAB son ficheros .m, otras son auto-

construidas (built-in). Con el comando type se averigua.

63

DS/I~I

Archivos .m: funciones (construccin)

_ . u _ '

-..---

tb Una funcin puede tener mltiples argumentos de salida:

function [mean, stdev] = stat(x)

La funci6n se puede llamar as:

>> [xm, xd] = stat(x)


o con un argumento slo

>> xm = stat(x)
M

DSK~

,..---_ . _ * .

Cadenas de texto

65

nsd

Cadenas de texto

. C % x

."---..

tb Las cadenas de texto en MATLAB se introducen entre comillas simples. Ejemplo:


>> S = 'Esto es un texto'

tb Las cadenas de texto se muestran en pantalla con el comando disp.


>> S
S

Esto es un texto
>> disp(s)

Esto es un texto

66

DSIGI
fb

Cadenas de texto

= a

----..

LOSmensajes de error se muestran mejor con el comando error. Se utiliza en funciones en ficheros .m. Es w m o la llamada dlsp, pero adems aborta la ejecucibn del programa.

p En un fichero .m se puede pedir la entrada de una cadena de

texto con el comando input. La cadena de entrada debe ir entre comillas simples.

67

DSI~~

A &

,.*--..

Manejo de Archivos .m

Ea

Manejo de ficheros .m
b Mediante el operador ?'se pueden ejecutar comandos del

A .& -

-----

sistema sin necesidad de salir de MATCAB. Por ejemplo. para editar un fichero .m se puede invocar el editor vi en un sistema UNIX: >> !vi statm FS Existe adems un depurador de ficheros .m. Ver help dbtype. b Mediante el comando dirse pueden listar los ficheros en el directorio actual. ~b Mediante el comando what se pueden listar los ficheros .m nicamente en el directorio actual. ib Con delete se borran ficheros. lb Con chdir se puede cambiar de directorio.
69

'~"l
-

Manejo de ficheros .m
>> dir

_ '

...----

M-book M-book Help MATLAB MATLAB Help


>> cd externlsrc

MATLAB Notebook folder stdout README toolbox diary extem

>> what M-files in the current directofy Macintosh HD:Mal.MATLAB 4.2c.l:extern:src yprime
70

Obtencin de Resultados.

A -& -.

...----

D S " ~

Ternporizacin y eficiencia

p Existen dos medidas bsicas para determinar la eficiencia d e un algoritmo:

Nmero de operaciones en coma flotante (flops) y, tiempo transcurrido en la ejecuci6n del algoritmo.

72

PSI~GI

% T e > .

Flops
Para averiguar el nmero de flops de un algoritmo se utiliza en primer lugar el comando
>> flops(0);

que pone la variable flops a cero, y despuds de la ejecucin del algoritmo se invoca el comando:
S>

flops

que devuelve el nmero de flops del algoritmo.


73

DS~A
b Ejemplo de flops.
>> A=[1:1000]; >> flops(0);

A * .

Flops

-----

>> mean(A) ans = 500.5000


>> flops

ans = 1000
74

Q G S I

Tiempo

A * -

*----

tb Para medir el tiempo de ejecucin de un algoritmo se uliza la funcin clock. Devuelve el tiempo actual con una precisin de centsimas de segundos.

Dados dos tiempos t i y 12, la funcin %time(12 ,ti ) devuelve el tiempo transcurrido entre ambos.

tb Ejemplo:
>> t = clock; x = A\b; time = etime( clock. t )

en time tenemos el tiempo empleado en resolver el sistema..

DSUC/

Comando Diary

Y & & -

,..-*--

fb diarylonloffl [fichero]: salva en un fichero la sesin de matlab

a partlr de ese momento. Por defecto se graba en el fichero d~ary. Para ponerlo en funcionamiento diary o diary on. Para pararlo diary off.

76

psilci

feval

.se--&.

b feval: si F es una tira conteniendo el nombre de una funcin (que puede estar definida en un fichero .m) entonces feval(F,xl, ...,xn) evala esa funci6n con sus argumentos.

Por ejemplo:
F = 'archivo'; FEVAL(F.9 64);

es lo mismo que
archivo(9 64):

77

. . u -

Formato de salida

-=*&---.

p El resultado de cualquier orden de asignacin se muestra en la pantalla, a menos que usemos ';' para que no sea as.

El formato numrico utilizado puede ser seleccionado de entre una serie de posibilidades.
f o m t short
1.3333 0.0000

format short e
r 1.3333E+000 1.23458-006

f o m t 1ong
r r

1.333333333333338 0.000001234500000

format long e
1.331333333333338E+P00 1.234500000000003E-006

fomat hex
3FF5555555555555 3EB4B6231AWFDZ71

78

Grficos

OSA

Grficas planas

C _ a -

-----

ib Con el comando plot se pueden generar grficas planas. Dados

dos vectores x e y, el comando plot(x,y) abre una ventana y dibuja la grfica de los elementos de x versus y.

b Ejemplo:

>> x = -4:.01:4; y = sin(x): plot(x,y)

80

D S ~ '

Representacin del seno

81

& E ? l
%

Grficas planas

Ejemplo: '>> x = -1.5:.01:1.5; y = exp(-x.".Z); plot(x,y)

~sid
O

Representacin de la exponencial

= ; = ; T e z .

DS%~

Curvas planas

-..--..

i b El comando grld dibuja una malla en el grfico.

ib Otros comandos tiles son': titilo de la grfica. title . xlabel etiqueta del eje de las x. etiqueta del eje de las y. ylabel texto introducido con el rat6n. gtext texto introducido en coordenadas dadas. text

m Por defecto los ejes se autoescalan, pero esta escala se puede


controlar mediante el comando axis.
e 4

DSI~

Curvas planas

& S

-----

tt En una grfica se pueden combinar distintos grafos de dos


maneras: Con varios vectores en plot y con el comando hold

--

tt Tambibn se puede cambiar el carcter para el trazo de la


grfica.
,

tt Ejemplo: >> x = 0:.01:2'pi; y = sin(x): y2 = sin(2'x): y3 = sin(4'x);


plot(x,y ,'--',x,y2,':'.x.y3.'+')
85

L-r-T-* A -

Mltiples grficas planas

Captulo 5

Grficos 2D
5 . ' 1

Ventanas grficas

Al realizar un grfico con MATLAB se abre automticamente una ventana grfico (figure) (ver
figura 5.1). Tambin se puede crear una ventana grfica que no contenga ningn grfico con la orden:

Figura 5.1: Ventana grfica

f i g u r e Genera una ventana grfica. f i g u r e (n) Genera la ventana grfica nmero n; si ya existe, la activa. Para cerrar ventanas grficas se utilizan las rdenes:
m m
i

close Cierra la ventana grfica activada.

a ventana grfica nmero n. close (n) Cierra i


closa a i l Cierra todaa las ventanas grfficas. . . . . .
.
>

:, i.......:

...

Es posible borrar el contec!do de una ventana gffica sin cerrarla, utilizando la orden:

r c l f Borra el contenido de la ventana grfica activada, mantenindola abierta.

Cada grfico se realiza, por defecto, en una ventana grfica diferente. Para superponer varios dibujos en la misma ventana grfica se utilizan las rdenes:
m

hold on Mantiene activa la ventana grfica actual.

r hold

off Cada gr6co se realiza en una ventana diferente. Es la opcin por defecto. off

r hoid Intercambia hoid on y hold

Utilizando las opciones del men de la ventana grfica, una figura se puede copiar, imprimir o guardar en un fichero m. Este fichero contiene la informacin que permite reconstruir la figura cuando es ejecutado.

5.2

La orden p l o t

La orden bsica para trazar grficos bidimensionales es p l o t , cuya sintaxis es:


r p l o t (x,y ) Si x e y son nmeros, dibuja el punto de coordenadas cartesianas (x, y). Si se trata de los vectores x = (xi,. . . ,x,), y = (yi,. . . ,y,), dibuja el conjunto de puntos {(q, y,), . . , (x,,, Yn)} y los eulaza con segmentos. Si x e y son matrices de la misma

dimeosiu, dibuja un conjunto de Tantos por cada par de colu~~inas correspondientes.


u

p l o t (x,y, S) Hace lo mismo que plot (x ,y) pero con las opciones especificadas en S. En S puede aparecer un smbolo de cada una de las columnas de la siguiente tabla, encerrados entre apstrofos:

1b
g
r c m y
k

azul verde rojo cyan magenta amarillo negro blanco

.
o x
+

d v

punto crculo aspa cruz asterisco cuadrado rombo tringulo (abajo) tringulo (arriba) tiingulo (izquierda) tringulo (derecha) estrella 5 puntas estrella 6 puntas

1 -

--

continuo discontinuo punto y guin discontinuo

Los smbolos de la primera columna especifican el color, los de la segunda la marca que se utiliza para seialar cada punto y los de la tercera el tipo de trazo que se emplea para unir los diferentes puntos. El orden en el que se escriben los smbolos dentro de S es indiferente. Es posible especificar menos de tres smboios en S. Por defecto, el color que se utiliza es el azul, el trazo continuo y no se utiliza marca para los puntos.

5.2. LA ORDEN PLOT


p

39

lot(xi,yl,Si,x2,y2,S2,~3,y3,S3, ...) Dibuja,enuna&maventanagrfica,los grficos definidos por las ternas (zi,yi, Si). Si no se especifican los parmetros S,, el dibujo se realiza con trazo continuo y un color distinto para cada grfica, utilizando los siete primeros colores de la primera columna de la tabla, en el orden sealado. Si se necesitan ms colores, se repiten cclicamente.

Ejemplo 5.1 Observar el resultado de aplicnr las siguientes drdenes:


EDU>> c i e a r , c l c

i-1

EDUH x=[i

3 41; y=C1 2 41;

EDU>> p l o t (x,y)
EDU>> figure(2)

m EDU>> f igure(3) EDU>>plot(x,y,'kp:> ) m EDU>> f i g u r e (4) m EDU>>p l o t (x,y) m EDU>> hold on a EDU>>p l o t ( x , y , m FDU>>holdoff m EDU,> close a l 1 m
EDU>> p l o t ( x , y , ' r * > )
I r * ' )

SuLdivisi6n d e una ventana grfica Una ventana grca se puede subdividir en varias ms pequeas con la orden: subplot (rn,n,p) Divide la ventana grfica en m x n subventanas distribuidas en m filas y n columnas y coloca el grfico actual en la ventana psima, contando de izquierda a derecha y de arriba abajo. Ejemplo 5.2 Repetir el ejemplo anterior realizando los grficos en una misma ventano grfica con tres subuentanas dispuestas verticalmente. Sol.:
EDU>>c l e a r , clc
EDUn plot(x,y)

EDUn subplot (3,1, 1)


EDU>> subplot (3,1,2) E D U plo<(x, ~ y , 'r*')

.EDU>> subplot ( 3 , l ,S)


E D U n p l o t (x, y)

E D U n hold on E D U n hold of f EDU>> close

If-j If-j

plot(x,y, Ir*>)

5.3

Grficos de funciones en coordenadas cartesian5s

Para dibujar la grfica de una funcin de una variable y = f (z) en el intervalo [a,b] se siguen los siguientes pasos:
t Se genera un vector x = (a = z1,z2, ...,x, = b) mediante x=linspace(a,b,n) o bien x=a:h:b.

t Se genera el vector y = (f (xi),f (zz),. .. ,f (2,)) escribiendo y=f (x).


t Con p l o t (x,y) se dibuja el conjunto de puntos {(si,f (si)):.. . , (xnr f (S,,))},que constituye la grfica de f .

Ejemplo 5.3 Dibujar la grfica de la funcin f (z) = Sol.:


WU>> clear, cic

sen(rz3) en el intervalo [-3,3].

m m

EDU,, x=linupace (-3,3,400) ; EDU>> p l o t (x, y) EDU>> close

EDU>>y-exp(-x.-2) .*sin(pi*x.-3) ;

i+-I

Ejemplo 5.4 Representar en una misma ventana grfica las funciones f ( z ) = e-z2, g ( ~ = ) e-522 en el intervalo [-2,2].

(a) Con trazo continuo. ( b ) La grfica de f con asteriscos mjos y la de g con cruces verdes.

Sol.:
E~'JU>> ciear, clc

EDu>>x=-2:0.1:2;
EDU>> y=exp(-x. -2) ;

y2=exp(-5*x. -2) ;
EDU>> p l o t ( x , y l , x , y 2 ) EDU>> f i g u r e ( 2 )

~~~>>~ot(x,~l,~r*~,x,y2,'g+~)

EDU>> close a l 1

Ejemplo 5.5 Representar en cuatm subventanas de una misma ventana orfica las orficns de las funciones fi(x) = senx, f 2 ( ~ = ) x + senx, f3(x) = 1x1, f4(x) = xsen($), en el intervalo [-10,10].
u .

Sol.: Se pueden escribir las rdenes en la ventana de comandos tal wmo se ha hecho en los ejemplos anteriores. Tambin se pueden escribir las rdenes necesarias en un fichero m, tal como se hace a continuacin: c l e a r , c l c , close a l 1 x=linspace(-10,10,1000) ; yl=sin(x) ; y2=x+sin(x) ; y+abs(x); y4=x.*sin(100./x) ; subplot (2,2, i ) , plot(x,Yi) subplot (2,2,2) plot(x,Y2) subplot(2,2,3), ~ l o t ( x , Y 3 ) subplot (2,2,4), p l o t ( x ~ y 4 ) pause, close Advertencia: Al dibujar la grca de funciones en las que aparecen races de nmeros negativos pueden presentarse dificultades. Por ejemplo, si para dibujar la grca de la funcin f (x) = ?fi. con x E [-1,1], escribimos EDu>>x=-:0.01:1;
EDU>> y=x.-(1/3) ;
EDU>> p l o t (x, y)

m m

EDU>> close

(t>l

se observa que el grfico obtenido no es el que cabria esperar. Esto es debido a que el programa no elige la raz real de fi para x < O. (Toma una de las races imaginarias y representa su parte real.) Para obtener la grfica correcta de esta funcin se puede hacer el dibujo por tramos:
EDu>> xl=(-1:O.Ol:O); x2=(0:0.01:1);
EDU>>yl=-((-x1) .-(1/3)); y212."(1/3);

1-1

EDU>>plot(xl,y1,x2,y2,'y')
EDU>> close

i-1

Jt>l
Dibuja la funcin en el intenalo de variacin de x

Otia orden para dibujar la grfica de una funcin es f p l o t , cuya sintaxis es:
e

f p l o t ( ' f u n c i 6 n J , Cxmin, -1) dado.

*
3

fplot('funcibn', [xmin, m a r , ymin, ymaxl , S) Dibuja la funcin en el intervaio de variacin de x e y dados, con las opciones especificadas en S, En las rdenes anteriores, funcin puede ser una funcin predefinida, una funcindefinida por e1 usuario en un fichero m o una cadena de caracteres que d e h a una funcin.

Ejemplo 5.6 Grfica de la funcin f (x) = xsen(2) en el intervalo [-lo, 101. Dependiendo del resultado obtenido, hacer tanteos en los intervalos de variacin de x e y hasta obtener una grfica mejomda.
Sol.:

1
5.4

EDU>>c l e a r , c l c EDU>>fplot(Jx.*sin(l./x)',C-10,101) EDU>>f p l ~ t ( ~ x . * s i n ( l . / x ) 'C-0.5,0.5,-0.4,0.41) , EDUn close @

Ttulos, etiquetas y textos

MATLAB dispone de las siguientes rdenes para poner textos en un grco:


t i t l e ( ' t e x t o J ) Sita el texto como ttulo del grco en la parte superior del mismo. x l a b e l ( ' t e x t o ' ) Sita el texto al lado del eje x.
a

ylabel( 'texto'

Sitiia el texto al lado del eje y.

t e x t (I,y, > t e x t o ' ) Sita el texto en el punto ( x , Y) del grfico. g t e x t ( ' t e x t o J ) Permite situar el texto en un punto seleccionado con el ratn en un grfico. (Solo se puede utilizar en grficos 2D.)

Ejemplo 5.7 Representar sobre los mismos ejes las grficos de las funciones y = h ( x ) e y = log(x) en el intervalo [O, 10). Poner etiquetas a los ejes, colocar el rtulo de cada funcin y dar ttulo a la figum.

Sol.: EDUn c l e a r , c l c I-] EDU>>x=linspace (aps ,10,100) ; EDU>> y=iog(x) ; y2=iog10 (x) ;

1(eps

para eviiar I ~ ( o ) )

mu>> plot(x,yi,x,y2)
EDU>>r l a b e l ( > E j e X J ) EDU>>ylabel('Eje Y ' )

j F J

EDUw g t e x t (>y,=log(x)> ) EDU>>title(>Gr&ficas l o g a r i t m i c a s ' ) ; D U > >close j r l

Jr/

5.5

Manipulaciones geomtricas

Las siguientes rdenes permiten situar una malla sobre el grfico, manipular de diversos modos sus ejes y ampliar una parte de la figura.
g r i d on Dibuja una malta en un grfico 2D 3D. g r i d off Elimina la malla. g r i d Conmuta entre on y o f f . a x i s ( C d n xmax ymin ymaxl) Establece los valores mnimo y mximo para los ejes x e y en la figura actual. a x i s auto Toma m i n = min(x), xmaz = max(x) e y libre. Es la opcin por defecto.

q ejes en los valores actualm, d e tal forma que al situar axiscaxis) Fija la escaia de l otro grfico sobre los mismos ejes (con hold en on), la escala no cambie.
a x i s Devuelve un vector de cuatro coordenadas, con los valores de xmin, xmax, ymin, ymax del grfico actual. a x i s xy Sita el origen de coordenadas cartesianas en la parte inferior izquierda del grfico.

*
e

a x i s i j Sita el origen de coordenad:~cartesianas en la parte superior izquierda del gfico. a x i s square Convierte el rectnguio destinado a un gr6co en un cuadrado, con lo que se pierde la igualdad de escala en ambos ejes y por tanto, en general, las figuras se deforman. a x i s equai Obliga a usar el mismo factor de escala para ambos ejes. a x i s normal Elimina las opciones square y equal. a x i s off Elimina la malla y Ice ejes con sus etiquetas, manteniendo el ttulo del grfico y los textos situados en l con t e x t y g t e x t . a x i s on Coloca de nuevo las etiquetas, mi.
y rejillas de los ejes.

zoom on Permite ampliar un grafito o una parte de l seleccionada con el ratn.


e

zoom off Desactiva el zoom. Es la opcin por defecto. zoom Conmuta entre on y of f .

El siguiente ejemplo sugiere un procedimiento grfico para determinar las coordenadas del punto de interseccin de las curvas y = senx, y = l n z utilizando algunas de las rdenes anteriores. Ejemplo 5.8 Dibujar las grficas de las funciones y = senx, y = l u z en el intervalo [-5,5]. Utilizar la orden grid pam estimar un intervalo en el que se encuentre el punto de interseccin. Con la orden axrs para ver con mayor claridad la parte de la figum en la que se encuentra el punto de interseccin. Haciendo uso del zoom compmbar que las coordenadas del punto de interseccin son (2.218,0.796).

44
Sol.: EDU>>x=-5:.1:5; EDU>> y=sin(x) ; EDU>> p l o t (x, y)
EDU>>hold on

m m m

EDU>>a=eps:O.l:S;
EDU>> b=log(a) ; EDU>> p l o t (a,b) EDU>> g r i d on
EDU>> zoom on

m m

I r (

EDU>> axis(CO,3,-2,21)
EDU>> c l o s e

It<l

5.6

Grficos de curvas en paramtricas

La orden p l o t permite dibujar una curva y dada por stis ecuaciones paramtricas. Ejemplo 5.9 Representar la cuma

-,'z x(t) = e-% cos(t) y(t) = e-$ sen(t)


Sol.:
EDU>> c l e a r , c l c

t E [O, 80j

EDU>>t=O:.01:80;

m m m
It>J

EDU>> x=exp(-t/20) .*cos(t) ;


EDU>> y = e q ( - t / 2 0 ) . * s i n ( t ) ;

EDU>> p l o t (x, y) EDU>>c l o s e

5.7

Grficos en coordenadas polares

La orden p o l a r permite representar gr6cas de funciones dadas en coordenadas polares. Su sintaxis es: p o l a r ( a , r ) Representa la curva r = r(a) en coordenadas polares.
'a

p o l a r ( a , r , S ) Representa la curva r = r(a) en coordenadas polares con el tipo dc trazo y color dado por S, cuyos posibles valores ya se han especificado al describir la ordcri p l o t .

P d
is
k 3

bo

5.8. GRFICOS DE BARRAS E MSTOGRAMAS


Ejemplo 5.10 Representar las cuntas

EDU>> c l e a r , c l c

EDU>> a=O: O 1 :2*pi ;


EDU>>p o l a r ( a , r )
EDU>>r=4* (l+cos (a)) ;

EDU>>r=sin(2*a) .*cos(2*a) ;

EDU>>polar(a,r,> r > )
EDUN ciose

EDU>> title(JCARDIOIDE')

5.8

Grficos de barras e histogramas

MATLAB dispone de los siguientes comandos que facilitan la generacin de grficos de barras e
hitogramas de becuencias:
e

stom(x,y) Dibuja el conjunto de puxitm ( z i , ~ i y ) une cada punto (crculo vaco) con el eje de abscisas mediante una lnea vertical. s t e m ( x , y , > f i l l e d l ) Hace lo mismo pero representa los puntos con crculos ilenos.
bar(y) Dibuja el grfico de barras relativo al vector y.

bar(x,y) Dibuja el grco de barras relativo al vector y cuyos elementos se especifican a travs del vector x. s t a i r s c y ) Dibuja el grfico escalonado relativo al vector y. Dibuja el grco escalonado relativo al vector y cuyos elementos son especificados a travs del vector x.

r s t a i r s (x, y)

hist (v) Dibuja el histdgrama relativo al vector u utilizando 10 rectngulos verticales de igual base.

h i s t (v,n) Dibuja el histograma relativo al vector v utilizando n rectngulos verticales de igual base. h i s t ( v , x ) Dibuja el histograma relativo al vector v utilizando rectngulos verticales cuyas bases miden lo especificado en los elementos del vector x.

El funcionamiento de estas rdenes se muestra en el siguiente ejemplo.


Ejemplo 5.11
EDU>>c l e a r , clc

..-

EDU>>x=C-l,O,2,5,6,71

mu>> y=C2,-3,3,7,4,51
EDU>>stem(x,y, ' f i l l e d ' ) EDU>>bar(y) EDU>>s t a i r s ( y ) EDU>>v-randn(1.5000) ; EDU>>x=-3.5:0.1:3.5; EDU>>h i s t (v,x) EDU>>close

1+11]

m m

5.9

Polgonos

Para dibujar un polgono se utiliza la orden f i l l : f i l l ( x , y , C ) Dibuja el polgono de vrtices (xi, yl), (x2, yz), . . . , (xnryn).x e y son los vectore~ x = (xl, 22,. . . ,S,), y = (yl, y2,. ..,y,). El color de relleno se especifica con el paimetro C, que puede ser un carcter de la tabla de la seccin 5.2, o un vector tr g bl en el que se especifican las cantidades de rojo, verde y azul mediante nmeros entre O y 1'. Los argumentos x e y pueden ser matrices, en cuyo caso se representa un poigono par cada par de columnas correspondientes.
e f ill ( x l , y 1,Ci ,x2,y2 ,C2,

. . .)

Hace lo mismo que la ,anterior para cada una de las

teruas (zi, yi,C i ) . Ejemplo 5.12 Dibujar el rectngulo de vrfices (0,0), (2,0), (2, l), ( 0 , l ) de color rojo y el rzctngulo de vrtices (0, l), (2, l), (2,2), (0,2) de color aguamarina. (El vector Cr g b l que define este color es [&, 1, %l.) Sol.: E n un fichero m se escribe: c l e a r , c l c , close a l 1 xl=CO 2 2 01; yi=CO O 1 11; x2= CO 2- 2 O] ; y2=[1 1 2 21; fill(~l,~ 'rJ l , ,x2,y2, C1/127 1 221/255]) a x i s square, pause, c l o s e Ejemplo 5.13 Dibujar un pentgono regular de color verde. Sol.: E n un fichero m Se escribe: c l e a r , c l c , close a l 1
'Para ms informacin sobre el color, ver el ap6ndice B.

Potrebbero piacerti anche