Está en la página 1de 45

INTRODUCCIN A MATLAB

1.

Qu es MATLAB?

MATLAB es un lenguaje de alto rendimiento para clculos tcnicos. Integra el


clculo, la visualizacin, y la programacin en un ambiente fcil de utilizar donde los
problemas y sus soluciones se expresan usando notacin matemtica. Las aplicaciones
tpicas incluyen:
1. Matemticas y clculo
2. Desarrollo de algoritmos
3. Modelado, simulacin y prototipos
4. Anlisis de datos, exploracin y visualizacin
5. Grficos cientficos y de ingeniera
6. Desarrollo de aplicaciones, incluyendo interfaz grfica.
MATLAB es un sistema interactivo cuyo elemento bsico de datos es un arreglo que
no requiere de dimensionamiento. Esto permite resolver muchos problemas tcnicos de
clculo, especialmente aquellos que tienen que ver con matrices y vectores, en una fraccin
del tiempo que tomara para escribir un programa en un lenguaje no interactivo escalar tal
como C o FORTRAN. El nombre MATLAB significa MATrix LABoratory.
MATLAB se ha desarrollado durante aos con el aporte de muchos usuarios. En
ambientes universitarios, es la herramienta educativa estndar para los cursos introductorios
y avanzados en matemticas, ingeniera, y ciencias. En la industria, MATLAB es la
herramienta que se escoge para la investigacin, desarrollo, y el anlisis de altaproductividad.
MATLAB ofrece una familia de soluciones especficas llamadas Cajas de
herramientas o herramientas, las cuales son muy importantes para la mayora de los
usuarios de MATLAB. Las herramientas permiten aprender y aplicar tecnologa
especializada. Estas son colecciones comprensivas de funciones de MATLAB (archivosm) que extienden el ambiente de MATLAB para resolver determinadas clases de
problemas. Las reas en las cuales las herramientas estn disponibles incluyen
procesamiento de seales, sistemas de control, redes neurales, lgica difusa, simulacin, y
muchas otras.

2.

El sistema MATLAB
El sistema MATLAB consta de cinco partes principales:

El lenguaje de MATLAB: Es un lenguaje de alto nivel de matriz/arreglo con


declaraciones de flujo de control, funciones, estructuras de datos, entrada-salida, y
caractersticas de programacin orientadas a objeto. Permite "programar a pequea escala"
para crear rpidamente programas desechables, y " programar a gran escala " para crear
programas de aplicacin grandes y complejos.
El entorno de trabajo de MATLAB Es el conjunto de herramientas y de recursos con
que se trabaja como usuario o programador de MATLAB. Incluye los recursos para
manejar las variables en su espacio de trabajo e importar y exportar datos. Tambin incluye
herramientas para desarrollar, manejar, poner a punto, y personalizar los archivos-m
(aplicaciones de MATLAB).

Manejo de grficos. Es el sistema grfico de MATLAB. Incluye los comandos de alto


nivel para la visualizacin de datos en 2 y 3 dimensiones, procesamiento de imagen,
animacin, y los grficos de presentacin. Tambin incluye comandos de bajo nivel, los
cuales permiten que se modifique completamente el aspecto para requisitos particulares de
grficos as como para construir interfaces de usuario en sus aplicaciones de MATLAB.
La biblioteca matemtica de funciones de MATLAB. Es una coleccin extensa de
algoritmos de clculo que va desde funciones elementales como suma, seno, coseno, y
aritmtica compleja, a funciones ms sofisticadas como la matriz inversa, valores propios
de la matriz, las funciones de Bessel, y la transformacin rpida de Fourier.
La interfaz de programacin de aplicaciones de MATLAB (API). Es una biblioteca
que permite que usted escriba programas de C y de FORTRAN que interacten con
MATLAB. Incluye recursos para llamar rutinas desde MATLAB (conexin dinmica), o
llamar a MATLAB como un motor de cmputo, para lectura y escritura de los archivos-m.

3.

Simulink

Simulink, es un programa compaero de MATLAB, es un sistema interactivo para


simular sistemas dinmicos no lineales. Es un programa grfico que permite que se modele
un sistema trazando un diagrama de bloque en la pantalla y manipulndolo dinmicamente.
Puede trabajar con sistemas lineales, no lineales, tiempo continuo, tiempo discreto,
multivariable, etc.
Los bloques son conjuntos aadidos a Simulink para proporcionar bibliotecas
adicionales para aplicaciones especializadas como lo son comunicaciones, procesamiento
de seal, y sistemas de potencia.
Real-Time Workshop es un programa que permite que se genere cdigo C de sus
diagramas de bloque y que lo ejecute en una variedad de sistemas en tiempo real.

1.

Ejecutando MATLAB

Esta gua se pens para ayudar a aprender MATLAB. Contiene un nmero de


ejemplos, as que se deben ejecutar en MATLAB y seguir adelante. Para ejecutar
MATLAB en una PC, Haga doble-click sobre el icono de MATLAB. Para salir de
MATLAB en cualquier momento, escriba quit en el smbolo de MATLAB.
Si siente que necesita ms ayuda, teclee help en el smbolo de MATLAB, o
despliegue hacia abajo el men de ayuda en una Computadora Personal.

2.

Matrices

La mejor manera para que comience a usar MATLAB es aprender a manejar


matrices. Esta seccin le muestra cmo hacerlo. En MATLAB, una matriz es un arreglo
rectangular de nmeros.
Un significado especial se asocia a veces a las matrices 1-por-1, que son escalares, y
a las matrices con solamente una fila o columna, que son vectores. MATLAB tiene otras
maneras de salvar datos numricos y no numricos, pero en principio, es mejor pensar en
todo como una matriz. Las operaciones en MATLAB se disean para que sean tan

naturales como sea posible. Donde otros lenguajes de programacin trabajan con nmeros,
uno a la vez, MATLAB permite trabajar con matrices enteras de forma rpida y fcil.

Introduciendo matrices
Se pueden introducir matrices en MATLAB de varias maneras:

Incorporando una lista de elementos explcitos

Cargando las matrices desde archivos de datos externos

Generando las matrices mediante funciones incorporadas.

Creando las matrices con sus propias funciones en archivos-m.


Comience incorporando la siguiente matriz como una lista de elementos. Se deben
seguir algunas convenciones bsicas:

Separe los elementos de una fila con espacios en blanco o comas

Utilice un punto y coma ; para indicar el fin de cada fila

Escriba la lista de elementos entre corchetes [ ]


Para incorporar la matriz escriba:
A = [ 16 3 2 13;

5 10 11 8;

9 6 7 12;

4 15 14 1 ]

MATLAB visualiza la matriz que se acaba de incorporar,


A =
16
5
9
4

3
10
6
15

2
11
7
14

13
8
12
1

Una vez que haya incorporado la matriz, sta se almacena automticamente en el


espacio de trabajo de MATLAB, referida como A.

Suma, transpuesta, y diagonal


Existen diversas maneras de sumar los elementos de una matriz. Si se desea sumar
todos los elementos de las columnas de A, el comando a probar es
sum(A)

MATLAB responde:
ans =
34 34 34 34

Cuando no se especifica una variable de salida, MATLAB utiliza la variable ans,


para salvar los resultados de un clculo.
Cmo sumar filas? MATLAB tiene como preferencia por omisin trabajar con las
columnas de una matriz, as que la manera ms fcil de conseguir las sumas de las filas es
transponer la matriz, calcular las sumas de las columnas de la transpuesta, y despus
transponer el resultado.

La operacin de transponer se denota por un apstrofe ', esta voltea una matriz
sobre su diagonal principal, cambiando los vectores fila por columna.
As que A' produce
ans =
16
3
2
13

5
10
11
8

9
6
7
12

4
15
14
1

Y sum(A')' produce un vector columna que contiene las sumas de la filas


ans =
34
34
34
34

La suma de los elementos de la diagonal principal se obtiene fcilmente con la ayuda


de la funcin diag, que escoge los elementos de la diagonal.
diag(A)

produce
ans =
16
10
7
1

y sum(diag(A)) produce
ans =
34

La otra diagonal, llamada antidiagonal, no es tan importante matemticamente, as


que MATLAB no tiene una funcin confeccionada para ella Pero una funcin pensada
originalmente para usarla en grficos,fliplr, voltea una matriz de izquierda a derecha,
sum(diag(fliplr(A)))
ans =
34

Las secciones siguientes continan utilizando la matriz A para ilustrar las capacidades
adicionales de MATLAB.

Subndices
El elemento en la fila i, columna j de A es denotado por A(i,j)). Por ejemplo,
A(4,2) es el nmero en la cuarta fila y la segunda columna; A(4,2) es 15. As que es
posible calcular la suma de los elementos de la cuarta columna de A escribiendo
A(1,4) + A(2,4) + A(3,4) + A(4,4)

Esto produce
ans =
34

Pero no es la manera ms elegante de sumar una columna. Tambin es posible


referirse a los elementos de una matriz con un solo subndice A(k). sta es la manera usual
de referirse a los vectores fila y columna. Pero puede tambin aplicarse a una matriz de
dos dimensiones, en tal caso, el arreglo se mira como un vector de una sola columna
formado por las columnas de la matriz original. As pues, A(8) es otra manera de
referirse al valor 15 guardado en A(4,2).
Si se intenta utilizar el valor de un elemento fuera de la matriz, ocurre un error:
t = A(4,5)
Index exceeds matrix dimension

Por otra parte, si se salva un valor en un elemento fuera de la matriz, el tamao


aumenta para acomodar al nuevo elemento:
X = A;
X(4,5) = 17
X =
16
5
9
4

3
10
6
15

2
11
7
14

13
8
12
1

0
0
0
17

El operador dos puntos


Los dos puntos, :, es uno de los operadores ms importantes de MATLAB. Aparece
de diversas maneras. La expresin
1:10

es un vector fila que contiene los nmeros enteros a partir del 1 al 10


1 2 3 4 5 6 7 8 9 10

Para obtener un espaciamiento no unitario, especifique un incremento. Por ejemplo


100:-7:50

Produce
100 93 86 79 72 65 58 51

Y
0:pi/4:pi

Produce
0 0.7854 1.5708 2.3562 3.1416

Expresiones con subndices que implican dos puntos se refieren a partes de una matriz.
A(1:k, j)

son los primeros k elementos de la j-sima columna de A. As que


sum(A(1:4,4))

calcula la suma de la cuarta columna. Pero hay una manera mejor. Los dos puntos por s
mismo refieren a todos los elementos en una fila o columna de una matriz y la palabra clave
end se refiere a la ltima fila o columna. As
sum(A(:, end))

calcula la suma de los elementos de la ltima columna de A.


ans = 34

3.

Expresiones

Como la mayora de los otros lenguajes de programacin, MATLAB permite el uso


de expresiones matemticas, pero contrario a estos, estas expresiones implican matrices
enteras Los bloques de construccin de las expresiones son:
Variables
Nmeros
Operadores
Funciones

Variables
MATLAB no requiere declarar ni el tipo ni la dimensin de las variables. Cuando
MATLAB encuentra un nuevo nombre de variable, crea automticamente la variable y
aparta la cantidad apropiada de memoria. Si ya existe la variable, MATLAB cambia su
contenido y, en caso de ser necesario, aparta ms memoria. Por ejemplo
num_estudiantes = 25

crea una matriz 1 por 1 llamada num_estudiantes y almacena el valor 25 en su nico


elemento.
Los nombres de las variables consisten de una letra, seguida por cualquier nmero de
letras, dgitos, o caracteres de subrayado. MATLAB reconoce solamente los primeros 31
caracteres de un nombre de variable.
MATLAB distingue entre las letras maysculas y minsculas. A y a no son la misma
variable. Para ver la matriz asignada a la variable, teclee el nombre de la variable.

Nmeros
MATLAB utiliza la notacin decimal convencional, con una coma y un signo + o para los nmeros La notacin cientfica utiliza la letra e para especificar una potencia de
diez. Los nmeros imaginarios utilizan i o j como sufijo. Algunos ejemplos de nmeros
legales son:
3
9,6397238
1i -3.14159j

-99
1.602110e-20
3e5i

0.0001
6.02252e23

Se guardan todos los nmeros internamente usando el formato largo especfico al estndar
de punto flotante de la IEEE. Los nmeros de punto flotante tienen una precisin finita de
16 dgitos decimales significativos y de un rango finito de 10-308 a 10+308.

Operadores
Las expresiones utilizan operadores aritmticos familiares y reglas de prioridad.

Funciones
MATLAB proporciona una gran cantidad de funciones matemticas elementales
estndares, incluyendo abs, sqrt, exp, y sin. Tomar la raz cuadrada o el logaritmo de
un nmero negativo no es un error; el resultado complejo apropiado se produce
automticamente. MATLAB tambin proporciona muchas ms funciones matemticas
avanzadas, incluyendo funciones Bessel y Gamma. La mayora de estas funciones aceptan
argumentos complejos. Para una lista de funciones matemticas elementales, escriba
help ops
+ adicin
- Substraccin
* Multiplicacin
/ Divisin
\ Divisin por la izquierda (descrita en la seccin de matrices y
lgebra lineal al usar MATLAB)
^ Potencia
Nmero complejo conjugado
() Especifica orden de la evaluacin.

Para una lista de funciones matemticas y de matrices ms avanzadas, escriba


help elmat
help elfun

help elmat

Algunas de las funciones, como sqrt y sin, son internas. Son parte de la base de MATLAB
as que son muy eficientes, pero los detalles de cmputo no son fcilmente accesibles.
Otras funciones, como gamma y sinh, estan implementadas en archivos-m, donde se puede
ver el cdigo y hacer modificaciones. Varias funciones especiales proporcionan valores de
constantes tiles.
Infinito (Inf) es generado dividiendo un valor diferente de cero por cero, o evaluando las
expresiones matemticas bien definidas que se desbordan, es decir, exceden el mximo
valor real.
No-es-un-nmero (Nan) es generado intentando evaluar las expresiones como 0/0 o Inf
Inf que no tienen valores matemticos bien definidos.
Los nombres de la funcin no son reservados. Es posible sobre grabar cualesquiera de ellos
con una nueva variable, tal como
eps = 1.e-6

y despus utilizar ese valor en clculos subsecuentes.


La funcin original se puede restablecer con
clear eps

pi 3.14159265
i unidad imaginaria,
j igual que i
eps Precisin de punto flotante relativa, 2-52
realmin Nmero ms pequeo en Punto Flotante, 2-1022
realmax Nmero ms grande en Punto Flotante, 21023

Expresiones
Ya se han visto varios ejemplos de las expresiones de MATLAB. Aqu tenemos
algunos ejemplos, y sus resultados
rho = (1+sqrt(5))/2
rho =
1.6180
a = abs(3+4i)
a =
5
z = sqrt(besselk(4/3,rho-i))
z =
0.3730+ 0.3214i

enorme = exp(log(realmax))
enorme =
1.7977e+308

4.

Trabajando con matrices


Esta seccin introduce otras maneras de crear matrices.

Generando de Matrices
MATLAB proporciona cuatro funciones que generan matrices bsicas.
ejemplos:

Algunos

Z = zeros(2,4)
Z =
0 0 0 0
0 0 0 0
F = 5*ones(3,3)
F =
5 5 5
5 5 5
5 5 5
N = fix(10*rand(1,10))
N =
4 9 4 4 8 5 2 6 8 0
R = randn(4,4)
R =
1.0668 0.2944 -0.6918
0.0593 -1.3362 0.8580
-0.0956 0,7143 1.2540
-0.8323 1.6236 -1.5937
zeros
ones
rand
randn

-1.4410
0.5711
-0.3999
0.6900

Todos los elementos son cero


Todos los elemento son 1
Elementos uniformemente distribuidos al azar
Elementos normalmente distribuidos al azar

Comando load
El comando load lee archivos binarios que contienen matrices generadas por sesiones
anteriores de MATLAB, o lee los archivos de texto que contienen datos numricos. El
archivo texto debe ordenarse como un tabla rectangular de nmeros, separado por espacios
en blanco, con una fila por lnea, y un nmero igual de elementos en cada fila. Por
ejemplo, fuera de MATLAB, cree un archivo de texto que contenga estas cuatro lneas:
16.0
5.0
9.0
4.0

3,0 2.0
10.0 11.0
6.0 7.0
15.0 14.0

13.0
8.0
12.0
1.0

Guarde el archivo bajo el nombre de matriz.dat. Despus el comando


load matriz.dat

lee el archivo y crea una variable, matriz, que contiene la matriz del ejemplo.

Archivos-m
Se pueden crear matrices usando los Archivos-m, que son archivos tipo texto que
contienen cdigo de MATLAB. Solo cree un archivo que contenga las mismas
declaraciones que se escribirian en la lnea de comando de MATLAB.
Guarde el archivo bajo un nombre que termine en .m.
Nota: Para tener acceso a un editor de textos en una PC, escoja Open o New del menu File
o pulse el botn apropiado en la Barra de Herramientas. Por ejemplo, cree un archivo que
contenga estas cinco lneas:
A = [
16.0
5.0
9.0
4.0

3.0
10.0
6.0
15.0

2.0
11.0
7.0
14.0

13.0
8.0
12.0
1.0];

Salve el archivo bajo el nombre de matriz.m. Despus ejecute el comando matriz,


para leer el archivo y crear la variable A del ejemplo.

Concatenacin
La concatenacin es el proceso de unir matrices pequeas para hacerlas ms grandes.
De hecho, la primera matriz fue creada concatenando sus elementos individualmente.
El par de corchetes [ ] es el operador de concatenacin. Por ejemplo, comience
concatenando
B = [A

A+32; A+48 A+16]

El resultado es una matriz 8-por-8, obtenida al unir las cuatro submatrices.


B =
16
5
9
4
64
53
57
52

3
10
6
15
51
58
54
63

2
11
7
14
50
59
55
62

13
8
12
1
61
56
60
49

48
37
41
36
32
21
25
20

35
42
38
47
19
26
22
31

34
43
39
46
18
27
23
30

45
40
44
33
29
24
28
17

Suprimiendo filas y columnas


Se pueden suprimir filas y columnas de una matriz usando apenas un par de
corchetes. Comienza con
X = A;

Para suprimir la segunda columna de X, utilice


X(:, 2) = [ ]

Esto cambia X a
X =
16
5
9
4

2
11
7
14

13
8
12
1

Si se suprime un solo elemento de una matriz, el resultado no seguir siendo una matriz.
As pues, la expresin
X(1,2) = [ ]

resulta en un error. Sin embargo, usar un solo subndice suprime un solo elemento, o la
secuencia de elementos, y re-estructura los elementos restantes en un vector fila. As
X(2:2:10) = [ ]

da lugar a
X =
16 9 2 7 13 12 1

5.

La ventana comando

Hasta ahora se ha usado la lnea de comando de MATLAB para escribir comandos y


expresiones, o para ver los resultados en dicha ventana
Esta seccin describe algunas maneras de alterar el aspecto de la ventana de
comando. Si su sistema permite que usted seleccione la fuente o la tipografa de la ventana
del comando, le recomendamos que utilice una fuente de ancho fijo, tal como Fixedsys o
Courier, para proporcionar el espaciamiento apropiado.

El comando format
El comando format controla el formato numrico de los valores visualizados por
MATLAB. El comando afecta solamente cmo se visualizan los nmeros, no cmo
MATLAB los calcula o guarda. Aqu estn los diversos formatos, junto con la salida que
resulta de un vector x con componentes de diversas magnitudes.

x = [ 4/3 1.2345e-6 ]
format short
1.3333 0.0000
format short e
1.3333e+000 1.2345e-006
format short g
1.3333 1.2345e-006
format long
1.33333333333333 0.00000123450000
format long e
1.333333333333333e+000 1.234500000000000e-006
Format bank
1,33

0.00

format rat
4/3 1/810045
format hex
3ff5555555555555 3eb4b6231abfd271

Si el elemento ms grande de una matriz es mayor a 103 o menor a 10-3, MATLAB


aplica un factor de posicionamiento comn para los formatos cortos y largos. Adems de
los comandos de formato mostrados
format compact

suprime muchas de las lneas blancas que aparecen en la salida. Esto le deja visualizar
mayor informacin en una pantalla o ventana. Si usted desea ms control sobre el formato
de la salida, utilice las funciones sprintf y del fprintf.

Suprimiendo la Salida
Si usted escribe una declaracin y presiona Return o Enter, MATLAB visualiza
automticamente los resultados en pantalla. Sin embargo, si usted termina la lnea con un
punto y coma, MATLAB realiza el cmputo pero no visualiza la salida. Esto es
particularmente til cuando usted genera matrices grandes.
Por ejemplo
A= zeros(100);

Lneas largas de comando


Si una declaracin no cabe en una lnea, utilice tres puntos ..., seguido por Return o
Enter para indicar que la declaracin contina en la lnea siguiente. Por ejemplo
s = 1 -1/2 + 1/3 -1/4 + 1/5 -

1/6 + 1/7...

-1/8 + 1/9 -1/10 + 1/11 -

1/12;

Los espacios en blanco alrededor de =, +, y los signos son opcionales, pero mejoran
legibilidad.

Editando la lnea de comando


En el teclado las flechas y las teclas de control permiten recordar, corregir, y editar
los comandos que se han introducido anteriormente. Por ejemplo, supngase que entra
equivocadamente
rho = (1 + sqt(5))/2

Donde ha deletreado sqrt mal. MATLAB responde con


Undefined function or variable 'sqt'

(la funcin o variable sqt no est definida ')


En vez de escribir de nuevo la lnea entera, presione simplemente la tecla . Se despliega
de nuevo el comando mal deletreado. Utilice la tecla para mover el cursor encima e
insertar la r faltante. Pulsar varias veces la tecla recuerda lneas anteriores. Si escribe
algunos caracteres y pulsa la tecla , se encuentra una lnea anterior que comience con esos
caracteres.
La lista de comandos de edicin disponibles es diferente en diversos PC.
Experimente para ver cules de los claves siguientes estn disponibles en su mquina.

ctrl-
ctrl-
home
end
esc
del
backspace

6.

ctrl-p
ctrl-n
ctrl-b
ctrl-f
ctrl-r
ctrl-l
ctrl-a
ctrl-e
ctrl-u
ctrl-d
ctrl-h
ctrl-k

Recordar la lnea anterior


Recordar la lnea siguiente
Mover el cursor un carcter hacia la izquierda
Mover el cursor un carcter hacia la derecha
Mover el cursor a la derecha una palabra
Mover el cursor a la izquierda una palabra
Mover el cursor al comienzo de la lnea
Mover el cursor al final de la lnea
Borrar lnea
Borrar el carcter despus del cursor
Borrar el carcter antes del cursor
Borra hasta el final de lnea

Grficos

MATLAB tiene recursos extensos para visualizar vectores y matrices como grficos,
as como hacer anotaciones e imprimir estos grficos. Esta seccin describe algunas de las
funciones ms importantes de los grficos y proporciona ejemplos de algunas aplicaciones
tpicas.

Crear un Grfico
La funcin plot se puede invocar de diversas maneras, dependiendo de los
argumentos de entrada. Si y es un vector, plot(y) produce un grfico lineal por partes
con los elementos de y contra el ndice de los elementos de y. Si se especifica dos vectores
como los argumentos, plot(x, y) produce un grfico de y contra x.
Por ejemplo, para trazar el valor de la funcin seno a partir de cero hasta 2
t = 0:pi/100:2*pi;
y = sin(t);
plot(t, y)

Mltiples pares x-y crean grficos mltiples con una sola llamada a plot.
MATLAB cambia el color automticamente a travs de una lista predefinida de colores
(pueden ser definidos por el usuario) para distinguir entre cada conjunto de datos. Por
ejemplo, las siguientes declaraciones trazan tres funciones dependientes de t, donde cada
curva se distingue por un color diferente
y2 =sin(t-.25);
y3 = sin(t-.5);
plot(t, y, t, y2, t, y3)

Es posible especificar color, el tipo de lnea, y marcas tales como: signos, crculos,
etc con:
plot(x, y, 'color_style_marker ')

donde color_style_marker es una cadena de 1 a 3 caracteres (entres apstrofes)


formadas por color, estilo de lnea y el tipo de marca.
Las cadenas de color son: ' c ', ' m ', ' y ', ' r ', ' g ', ' b', ' w', y 'k'. stas se corresponden
con cian, magenta, amarillo, rojo, verde, azul, blanco, y negro.
Las cadenas de estilo de lnea son ' ' para slido, '' para rayado, ': ' para punteado, '
.' para raya-punto, y ' none ' para no usar lnea.
Los tipos ms comunes de marca son ' + ', ' o ', ' * ', y 'x '.
Por ejemplo, la declaracin:
plot(x, y, 'y:+ ')

traza una lnea punteada amarilla y como marcas usa el signo ms en cada punto de
referencia. Si usted especifica un tipo de la marca pero no un estilo de lnea, MATLAB
traza solamente la marca.

La ventanas figure
La funcin plot abre automticamente una nueva ventana de figura si no existe una
ya en la pantalla. Si existe una figura, las aplicaciones usan esta ventana por omisin. Para
abrir una nueva ventana de figura y hacerla la figura actual escriba,
figure

Para hacer que una figura existente la sea la figura actual,


figure(n)

donde n es el nmero de la figura en la barra de ttulo. Los resultados de los comandos


grficos subsecuentes se visualizan en esta ventana.

Aadir grficos a una figura existente


El comando hold permite que se agreguen grficos a una figura existente. Cuando
escribe
hold on

MATLAB no borra el grfico existente; agrega los nuevos datos al grfico actual, cambia
la escala en caso de necesidad. Por ejemplo, estas declaraciones crean primero un grfico
de contorno con la funcin peaks, despus sobreponen un grfico con un pseudocolor
(pcolor) de la misma funcin:
[x, y, z ] = peaks;
contour(x, y, z, 20,'k ')
pcolor(x, y, z)
shading interp

El comando hold hace que el grfico pcolor sea combinado con el grfico del
contorno en una figura.

Grficos mltiples
La funcin subplot permite que usted visualice grficos mltiples en la misma
ventana o que los imprima en el mismo pedazo de papel. Al escribir
subplot(m,n,p)

la ventana se convierte en una matriz m-por-n de subgrficos; y selecciona el subgrfico p


de la figura actual. Los diagramas se enumeran: primero el de la fila superior de la figura
ventana, luego el de la segunda fila, etctera. Por ejemplo, para trazar datos en cuatro
subgrficos diferentes de una figura ,
t =0:pi/10:2*pi;
[ X, y, z ] = cylinder(4*cos(t));
subplot(2,2,1)
mesh(X)
subplot(2,2,2); mesh(Y)
subplot(2,2,3); mesh(Z)
subplot(2,2,4); mesh(X, Y, Z)

Datos imaginarios y complejos


Cuando los argumentos a trazar son nmeros complejos, la parte imaginaria es
ignorada a menos que plot se de con un argumento complejo. Para este caso especial, el

comando es un atajo para un diagrama de la parte real contra la parte imaginaria. Por lo
tanto,
plot(Z)

donde Z es un vector o una matriz compleja, es equivalente a


plot(real(Z), imag(Z))

por ejemplo :
t = 0:pi/10:2*pi;
plot(exp(i*t), '-o ')

traza un polgono de 20 lados con crculos pequeos en los vrtices-0.8

Control de ejes
La funcin axis tiene un nmero de opciones para modificar el escalamiento, la
orientacin, y la relacin de aspecto de los grficos.
Normalmente, MATLAB encuentra los mximos y los mnimos de los datos, elige el
rectngulo apropiado y etiqueta los ejes. La funcin axis reemplaza el valor por omisin
fijando los lmites de los eje deseados,
axis([xmin xmax ymin ymax])

La funcin axis tambin acepta palabras claves para el control de los ejes. Por ejemplo
axis square

hace que los ejes x e y sean de igual longitud y


axis equal

hace que las marcas de incremento en los ejes x e y tengan la misma longitud. As
plot(exp(i*t))

seguido por axis square o axis equal transforma el valo en un crculo.


axis auto

regresa los valores del eje a su valor por omisin,


axis on

despliega etiquetas y marcas en los ejes

axis off

oculta las etiquetas y las marcas en los ejes.


grid off

oculta las cuadrculas


grid on

muestra las cuadriculas

Etiqueta de los ejes y ttulos


Los comandos xlabel, ylabel, y zlabel agregan las etiquetas a los ejes x, y, y
z. La funcin title agrega un ttulo en la parte superior de la figura y la funcin text
inserta un texto dondequiera en la figura. Un subconjunto de la notacin usada por TeX
produce las letras griegas, los smbolos matemticos, y las fuentes alternas. El ejemplo
siguiente utiliza a \leq para , \pi para y \it para la fuente itlico.
t=-pi:pi/100:pi;
y=sin(t);
plot(t,y)
axis([-pi pi -1 1])
xlabel('-\pi \leq {\itt} \leq \pi')
ylabel('sin(t)')
title('Grafico de la funcin seno')
text(1, -1/3, '\it{Note la simetra impar.}')

INTRODUCCIN A MATLAB (Parte 2)


1.

AYUDA Y DOCUMENTACIN EN LNEA

Existen varias maneras de acceder a la ayuda que describe las funciones de MATLAB:

El comando help
La ventana de ayuda
El escritorio de ayuda de Matlab
Pginas web de referencia
Enlaces a MathWorks, inc.

El comando help
El comando help es la manera ms simple de conocer la sintaxis y el comportamiento
de una funcin determinada La informacin se visualiza directamente en la ventana de
comando. Por ejemplo:
help magic
imprime:
MAGIC Magic square.
MAGIC(N) is an N-by-N matrix constructed from
the integers 1 through N^2 with equal row,
column, and diagonal sums.
Produces valid magic squares for N=1,3,4,5....
NOTA: Las entradas de la ayuda en MATLAB utilizan caracteres en mayscula para las
funciones y los nombres variables y as resaltarlas del resto del texto. Sin embargo, a la
hora de escribir las funciones use siempre los caracteres en minscula correspondientes ya
que MATLAB distingue entre maysculas y minsculas; todos los nombres de funciones
estn realmente en minsculas.
Todas las funciones de MATLAB se ordenan en grupos lgicos, y la estructura del
directorio de MATLAB se basa en este orden. Por ejemplo, todas las funciones de lgebra
lineal residen en el directorio matfun. Para enumerar todos los nombres de las funciones
en este directorio, con una pequea descripcin de cada una:
help matfun
Matrix functions - numerical lineal algebra.
Matrix analysis.
norm - Matrix or vector norm.

normest - Estimate the matrix 2-norm


...
El comando
help
lista todos los directorios, con una descripcin de cada categora que representa
matlab/general
matlab/ops
...

La ventana ayuda
La ventana de ayuda de MATLAB est disponible en los PC seleccionando la opcin
de Ventana de Ayuda bajo el men de Ayuda, o haciendo clic el signo de interrogacin en
la barra de men. Est tambin disponible en todos los ordenadores pulsando
helpwin
Para utilizar la ventana de ayuda en un tpico determinado, pulse
helpwin topic
La ventana de ayuda le da acceso a la misma informacin que el comando help, pero la
ventana de interfaz le proporciona a conexiones convenientes a otros tpicos.

El comando lookfor
El comando lookfor permite que usted busque funciones basadas en una palabra
clave. Busca a travs de la primera lnea del texto de la ayuda, el cual se conoce como
lnea H1, que tiene cada funcin de MATLAB, y devuelve las lneas H1 que contienen la
palabra clave especificada. Por ejemplo, MATLAB no tiene una funcin llamada inverse.
As que la respuesta de.
help inverse
es
inverse.m not found.
Pero
lookfor inverse

encuentra cerca de una docena de funciones Dependiendo de qu Toollboxes haya


instalado, encontrar entradas como:
INVHILB
ACOSH
ERFINV
INV
PINV
IFFT
IFFT2
ICCEPS
IDCT

Inverse Hilbert matrix.


Inverse hyperbolic cosine.
Inverse of the error function.
Matrix inverse.
Pseudoinverse.
Inverse discrete Fourier transform.
Two-dimensional inverse discrete Fourier
Inverse complex cepstrum.
Inverse discrete cosine transform.

transform.

Agregando la palabra clave all al comando lookfor, como en


lookfor -all

busca en toda la ayuda, no solo en la lnea H1.

El escritorio de Ayuda
El escritorio de ayuda de MATLAB proporciona el acceso a una amplia gama de
informacin de ayuda y referencia almacenada en un disco o en un CD-ROM de su sistema
local. Muchos de los documentos subyacentes utilizan el lenguaje de HiperTexto (HTML)
y pueden ser vistos con un explorador de Internet tal como Netscape o Microsoft Explorer.
El escritorio de ayuda puede arrancar en un PC seleccionando la opcin Help Desk bajo
men el de ayuda, o, en todas las calculadoras, escribiendo
helpdesk

Todos los operadores y funciones de MATLABs tienen pginas de la referencia en el


formato HTML, al cual usted puede acceder desde el escritorio de ayuda. Estas pginas le
proporcionan a ms detalles y ejemplos que las entradas de la ayuda bsica. Las versiones
HTML de otros documentos, incluyendo este manual, estn tambin disponibles. Un motor
de bsqueda, ejecutndose en su propia mquina, puede buscar cualquier material de
referencia en lnea.

El comando doc
Si sabe el nombre de una funcin especfica, puede ver las pginas de referencia
directamente. Por ejemplo, para conseguir las pginas de referencia para la funcin eval,
escriba
doc eval

El comando doc arranca su explorador, si ste no se est ejecutando ya.

Imprimiendo las pginas de referencia en lnea


Las versiones de las pginas de referencia en lnea, as como el resto del conjunto de
documentacin de MATLAB, estn disponibles en el formato de documento portable (pdf)
a travs del escritorio de ayuda. Estas pginas son procesadas por el programa Acrobat
Reader. Reproducen el aspecto y la sensacin de la pgina impresa, completas con fuentes,
grficos, formato, e imgenes. sta es la mejor manera de conseguir copias impresas del
material de referencia.

Enlace a MathWorks
Si su computadora est conectada a Internet, el Escritorio de Ayuda le proporciona
una conexin con MathWorks, el hogar de MATLAB. Usted puede utilizar el correo
electrnico para hacer preguntas, para hacer sugerencias, y para sealar fallos de
funcionamiento posibles. Usted puede tambin utilizar el Motor de Bsqueda de
Soluciones en el sitio Web de MathWorks para preguntarle a una base de datos actualizada
sobre la informacin tcnica de ayuda.

2.

EL AMBIENTE DE MATLAB

El ambiente de MATLAB incluye el conjunto de variables almacenadas durante una


sesin de MATLAB y el conjunto de archivos de disco que contienen los programas y los
datos que se usan entre sesiones.

El Espacio de Trabajo
El espacio de trabajo es el rea de la memoria accesible desde la lnea de comando de
MATLAB. Dos comandos, who y los whos, muestran el contenido actual del espacio de
trabajo. El comando who muestra una lista corta, mientras que whos adems da tamao y
almacenamiento de la informacin.
A continuacin se muestra la salida producida por whos en un espacio de trabajo que
contiene algunos resultados de los ejemplos de esta gua. Muestra diversas estructuras de
datos de MATLAB.
whos
Name
A
D
M
S
h
n
s
v

Size
4x4
5x3
10x1
1x3
1x11
1x1
1x5
2x5

Bytes
128
120
3816
442
22
8
10
20

Class
double array
double array
cell array
struct array
char array
double array
char array
char array

Grand total is 471 elements using 4566 bytes.

Para suprimir todas las variables existentes en el espacio de trabajo, escriba


clear

Comando save
Los comandos save almacenan el contenido del espacio de trabajo en un archivoMAT que puede ser ledo con el comando load en una sesin posterior de MATLAB. Por
ejemplo
save August17th

salva el contenido del espacio de trabajo en el archivo August17th.mat. Si se desea, puede


salvar solamente ciertas variables especificando los nombres de las variables despus del
nombre de archivo.
Normalmente, las variables se salvan en un formato binario que puede ser ledo
rpidamente (y exactamente) por MATLAB. Si usted desea tener acceso a estos archivos
fuera de MATLAB, usted puede desear especificar un formato alternativo.
-ascii
Utiliza el formato de texto de 8 dgitos
-ascii -double
Utiliza el formato de texto de 16 dgitos
-ascii -double -tabs
Delimita el arreglo con tabs
-v4
Crea un archivo para la versin 4 de Matlab
-append
Agrega datos a un archivo-M existente

Cuando usted salva EL contenido del espacio de trabajo en un formato de texto, debe
salvar solamente una variable al tiempo Si salva ms de una, MATLAB crear el archivo
del texto, pero usted no podr cargarlo de manera fcil nuevamente dentro de MATLAB.

El camino de bsqueda
MATLAB utiliza el camino de bsqueda, lista de directorios ordenados, para
encontrar las funciones que usted quiere ejecutar. Cuando usted llama una funcin
estndar, MATLAB ejecuta la primera funcin del archivo-M en el camino que tiene el
nombre especificado. Usted puede reemplazar este comportamiento usando directorios y
funciones privadas especiales. El comando.
path

muestra el camino de bsqueda en cualquier plataforma. En las PC, escoga Set Path del
menu Archivo para ver o modificar el camino de bsqueda.

Manipulacin de archivo de disco

Los comando dir, type, y cd, implementan un conjunto de comandos del sistema
operativo genrico para manipular archivos La tabla siguiente muestra cmo estos
comandos se asocian con otros sistemas operativos.
MATLAB
dir
type
delete
cd

MS-DOS
dir
type
del or erase
chdir

UNIX
ls
cat
rm
cd

VAX/VMS
dir
type
delete
set default

La mayora de estos comandos pueden usar directorios, comodines, y nombres de unidades


de disco de la manera usual.

El comando diary
El comando diary crea un diario de su sesin de MATLAB en un archivo de disco.
Usted puede ver y editar el archivo del texto resultante usando cualquier procesador de
textos. Para crear un archivo llamado diary que contiene todos los comandos que usted
incorpora, as como la salida impresa de MATLAB (pero no la salida grficar), escriba.
diary

Para guardar la sesin de Matlab en un archivo con nombre particular, use


diary filename

Para dejar de guardar la sesin, use


diary off

Ejecutando programas externos


El signo de exclamacin ! es una concha que indica que el resto de la linea de
entrada es un comando del sistema operativo. Esto es til para invocar utilidades o para
ejecutar otros programas sin salir de MATLAB. En VMS, por ejemplo,
!edt magik.m
invoca un editor llamado edt para el archivo llamado magik.m. Cuando usted sale del
programa externo, el sistema operativo devuelve el control a MATLAB.

3.

MS SOBRE MATRICES Y ARREGLOS

Esta seccin muestra algo ms sobre como trabajar con matrices y arreglos,
enfocndose en
lgebra lineal

Arreglos
Datos multivariados

lgebra lineal
Informalmente, los trminos matriz y el arreglo se utilizan a menudo alternativamente
Una matriz es un arreglo numrico de dos dimensiones que representa una transformacin
lineal. Las operaciones matemticas definidas en matrices son el tema del lgebra lineal.
El Cuadrado mgico de Drer
A =
16
5
9
4

3
10
6
15

2
11
7
14

13
8
12
1

proporciona varios ejemplos que de las operaciones matriciales de MATLAB. Ya ha visto


la matriz transpuesta, A'. Agregar una matriz a su transpuesta produce una matriz
simtrica.
A + A'
ans =
32
8
11
17

8
20
17
23

11
17
14
26

17
23
26
2

El smbolo de multiplicacin, *, denota la multiplicacin de matrices que implican


productos internos entre filas y columnas. Multiplicando una matriz por su transpuesta
tambin produce una matriz simtrica.
A'*A
ans =
378
212
206
360

212
370
368
206

206
368
370
212

360
206
212
378

El determinante de esta matriz particular resulta ser cero, indicando que la matriz es
singular.
d = det(A)
d =
0

La forma reducida por filas de A no es la identidad.

R = rref(A)
R =
1
0
0
0

0
1
0
0

0
0
1
0

1
-3
3
0

Puesto que la matriz es singular, no tiene inversa. Si intenta calcular la inversa con
X = inv(A)
Obtendr el mensaje de alerta
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.175530e-017.

El error de redondeo ha evitado que el algoritmo de inversin de la matriz detecte la


singularidad exacta. Pero el valor rcond, que significa condicin recproca estimada, es
del orden eps, la precisin relativa de punto flotante, as que la inversa calculada es poco
probable que sea de mucho uso.
Los valores propios del cuadrado mgico son interesantes.
e = eig(A)
e =
34.0000
8.0000
0.0000
-8.0000

Uno de los valores propios es cero, a consecuencia de la singularidad. El valor propio ms


grande es 34, la suma mgica. Esto ocurre ya que el vector de todos los elementos uno es
un vector propio.
v = ones(4,1)
v =
1
1
1
1
A*v
ans =
34
34
34
34

Cuando un cuadrado mgico es dividido por su suma mgica,


P = A/34

el resultado es una matriz doble estocstica cuyas sumas de fila y columna son todas uno.
P =
0.4706
0.1471
0.2647
0.1176

0.0882
0.2941
0.1765
0.4412

0.0588
0.3235
0.2059
0.4118

0.3824
0.2353
0.3529
0.0294

Tales matrices representan las probabilidades de transicin en un proceso de Markov.


Potencias repetidas de la matriz representan repetidos pasos del proceso. Para nuestro
ejemplo, la quinto potencia
P^5

es
0.2507
0.2497
0.2500
0.2496

0.2495
0.2501
0.2498
0.2506

0.2494
0.2502
0.2499
0.2505

0.2504
0.2500
0.2503
0.2493

Esto muestra que al aproximarse k al infinito, todos los elementos de la potencia ksima, Pk, se acercan a 1 / 4
Finalmente, los coeficientes del polinomio caracterstico
poly(A)

son
1

-34

-64

2176

Esto indica que el polinomio caracterstico det(A - I) es 4 -343 -642 + 2176


El trmino constante es cero, porque la matriz es singular, y el
coeficiente del trmino cbico es -34, porque la matriz es mgica!

Arreglos
Cuando se quitan del mundo del lgebra lineal, las matrices se convierten en
arreglos numricos de dos dimensiones. Las operaciones aritmticas en arreglos se hacen
elemento por elemento. Esto significa que la adicin y la substraccin son iguales para
matrices y arreglos, pero que las operaciones multiplicativas son diferentes.

MATLAB utiliza un punto, o punto decimal, como parte de la notacin para las
operaciones multiplicativas del arreglo.
La lista de operadores incluye:
+
.*
./
.\
.^
.'

Suma
Resta
Multiplicacin element a elemento
Divisin elemento a elemento
Divisin por la izq elemento a elemento
Potencia elemento a elemento
Transpuesta sin conjugar

Si el cuadrado mgico de Drer es multiplicado por s mismo


A.*A

el resultado es un arreglo que contiene los cuadrados de los nmeros enteros a partir de 1
hasta 16, en una orden inusual
ans =
256
25
81
16

9
100
36
225

4
121
49
196

169
64
144
1

Las operaciones del arreglo son tiles para crear tablas. Suponga que n es el vector
columna
n = (0:9)';

Entonces
pows = [n

n.^2

2.^n]

crea la tabla de cuadrados y potencias con base 2.


pows =
0
1
2
3
4
5
6
7
8
9

0
1
4
9
16
25
36
49
64
81

1
2
4
8
16
32
64
128
256
512

Las operaciones matemticas fundamentales operan en los arreglos elemento por elemento
As

format short g
x = (1:0.1:2)';
logs = [x log10(x)]

crea la tabla de logaritmos


logs =
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0

0
0.04139
0.07918
0.11394
0.14613
0.17609
0.20412
0.23045
0.25527
0.27875
0.30103

Datos multivariados
MATLAB utiliza el anlisis orientado a columna para los datos estadsticos
multivariados. Cada columna en un conjunto representa una variable y cada fila una
observacin. El (i, j)-esimo elemento es la observacin i de la variable j variable.
Como ejemplo, considere un conjunto con tres variables:

Ritmo cardaco
Peso
Horas de ejercicio por semana

Para cinco observaciones, el arreglo que resultante es


D =
72
81
69
82
75

134
201
156
148
170

3.2
3.5
7.1
2.4
1.2

La primera fila contiene el ritmo cardaco, peso, y las horas del ejercicio para el
paciente 1, la segunda fila contiene los datos para el paciente 2, etctera. Ahora usted
puede aplicar muchas de funciones de anlisis de datos de MATLABs a este conjunto de
datos. Por ejemplo, obtener la desviacin estndar y la media de cada columna:
mu = mean(D), sigma = std(D)
mu =
75.8
sigma =

161.8

3.48

5.6303 25.499 2.2107

Para una lista de las funciones de anlisis de datos disponibles en MATLAB, escriba:
help datafun

Si tiene acceso al toolbox de estadstica, escriba


help stats

Expansin escalar
Las matrices y los escalares se pueden combinarse de varias maneras. Por ejemplo,
un escalar es restado de una matriz restndola de cada elemento. El valor promedio de los
elementos de nuestro cuadrado mgico es 8,5, as que
B = A -

8,5

forma una matriz cuyas sumas de las columna son cero.


B =
7.5
-3.5
0.5
-4.5

-5.5
1.5
-2.5
6.5

-6.5
2.5
-1.5
5.5

4.5
-0.5
3.5
-7.5

sum(B)
ans =
0

Con la expansin escalar, MATLAB asigna un escalar especfico a todos los ndices en un
rango Por ejemplo:
B(1:2,2:3) = 0

ceros en una porcin de B.


B =
7.5
0
-3.5
0
0.5 -2.5
-4.5 6.5

0
0
-1.5
5.5

4.5
-0.5
3.5
-7.5

Subndices lgicos
Los vectores lgicos creados de operaciones lgicas y de relaciones se pueden
utilizar para referirse a subarreglos Suponga que X es una matriz ordinaria y L es una
matriz de igual tamao que es resultado de una cierta operacin lgica. Entonces X(L)
especifica los elementos de X donde los elementos de L no sean cero.

Esta clase de subndice puede hacerse en un paso especificando la operacin lgica


como la expresin del subndice. Suponga que usted tiene el conjunto siguiente de datos.
x =
2.1 1.7 1.6 1.5 NaN 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8

La etiqueta NaN indica que una observacin falta, tal como fallar al responder un
item de un cuestionario. Para quitar los datos que faltan con la subndices lgicos utilice
finite(x), el cual es cierto para todos los valores numricos finitos y falso para NaN e Inf.
x = x(finite(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 5.1 1.8 1.4 2.2 1.6 1.8

Note que la observacin, 5,1, parece ser diferente de las otras. Es un outlier. La siguiente
declaracin quita outliers, en este caso aquellos elementos que se desvan de la media en
ms de tres veces la desviacin estndar.
x = x(abs(x-mean(x)) < = 3*std(x))
x =
2.1 1.7 1.6 1.5 1.9 1.8 1.5 1.8 1.4 2.2 1.6 1.8

En otro ejemplo, destaque la localizacin de los nmeros primos del cuadrado mgico de
Drer usando la indexacin lgica y la expansin escalar para fijar los nmeros no primos a
0.
A(~isprime(A)) = 0
A =
0
5
0
0

3
0
0
0

2
11
7
0

13
0
0
0

La funcin find
La funcin find determina los ndices de los elementos del arreglo que coinciden
con una condicin lgica dada En su forma ms simple, find devuelve un vector columna
de ndices. Se transpone ese vector para obtener un vector fila de ndices. Por ejemplo
k = find(isprime(A))'

selecciona las puestos, usando indexacin unidimensional, de los nmeros primos del
cuadrado mgico.
k =
2

10

11

13

Despliegue los nmeros primos,como un vector fila en el orden determinado por k, con

A(k)
ans =
5 3 2 11 7 13

Cuando use k como un ndice en una declaracin de asignacin, la estructura matricial se


preserva
A(k) = NaN
A =
16
NaN
9
4

4.

NaN
10
6
15

NaN
NaN
NaN
14

NaN
8
12
1

CONTROL DE FLUJO
MATLAB tiene cinco estructuras para el control de flujo:

Declaraciones if
Declaraciones switch
Bucles for
Bucles while

Declaraciones if
La declaracin if evala una expresin lgica y ejecuta un grupo de declaraciones
cuando la expresin es verdadera. Las palabras claves opcionales elseif y else permiten la
ejecucin de grupos alternos de declaraciones. La palabra clave end, que se corresponde
con if, termina el grupo de declaraciones. Los grupos de declaraciones son delineados por
las cuatro palabras claves no hay parntesis o corchetes implicados.
El algoritmo de MATLAB para generar un cuadrado mgico de orden n implica
tres diversos casos: cuando n es impar, cuando n es par pero no divisible por 4, o cuando n
es divisible por 4. Esto se describe por
if rem(n,2) ~= 0
M = odd_magic(n)
elseif rem(n,4) ~= 0
M = single_even_magic(n)
else
M = double_even_magic(n)
end

En este ejemplo, los tres casos son mutuamente excluyentes, pero si no lo fueran, la
primera condicin verdadera sera ejecutada.

Es importante entender cmo los operadores relacionados y las declaraciones if


trabajan con matrices. Cuando usted desee saber si hay igualdad entre dos variables, usted
puede que utilice
if A == B ...

ste es cdigo legal de MATLAB, y hace lo que usted espera cuando A y B son escalares.
Pero cuando A y B son matrices, A == B no prueba si son iguales, l prueba donde son
iguales; el resultado es otra matriz de 0 y de 1 que muestran igualdad elemento a
elemento. De hecho, si A y B no son del mismo tamao, entonces A== B es un error.
La manera apropiada de saber si hay igualdad entre dos variables es utilizar la
funcin isequal,
If

isequal(A, B)...

Aqu est otro ejemplo para enfatizar esta punto. Si A y B son escalares, el programa
siguiente nunca alcanzar la situacin inesperada. Pero para la mayora de los pares de
matrices, incluyendo nuestros cuadrados mgicos con las columnas intercambiadas,
ninguna de las siguientes condiciones A > B, A < B o A==B sea verdadero para todos los
elementos y as que se ejecuta la clusula otra.
if A > B
'greater'
elseif A < B
'less'
elseif A == B
'equal'
else
error('Unexpected situation')
end
Several functions are helpful for reducing the results of matrix
comparisons to
scalar conditions for use with if, including
isequal
isempty
all
any

switch y case
La declaracin del interruptor ejecuta grupos de declaraciones basadas en el valor de
una variable o de una expresin El caso de las palabras claves y delinea de otra manera a
grupos. Solamente se ejecuta el primer caso que corresponde con. Debe siempre haber un
extremo para corresponder con el interruptor
La lgica del algoritmo de los cuadrados de la magia se puede tambin describir
cerca.
switch (rem(n,4)==0) + (rem(n,2)==0)
case 0
M = odd_magic(n)

case 1
M = single_even_magic(n)
case 2
M = double_even_magic(n)
otherwise
error(This is impossible)
end

Nota para los programadores de C: A diferencia de la declaracin switch del lenguaje C,


MATLABs no necesitan la declaracin break . Si la primera declaracin case es
verdadera, las otras declaraciones case no se ejecutan.

for
El lazo for repite un grupo de declaraciones un nmero predeterminado de veces.
Una declaracin end delimita las declaraciones.
for n = 3:32
r(n) = rank(magic(n));
end
r

El punto y coma que termina la declaracin interna suprime la salida impresa, y la r


despus del bucle visualiza el resultado final.
Es una buena idea ordenar los bucles para la legibilidad, especialmente cuando se
anidan.
for i = 1:m
for j = 1:n
H(i,j) = 1/(i+j);
end
end

while
El bucle while repite un grupo de declaraciones un nmero indefinido de veces bajo
el control de una condicin lgica. Una declaracin end delimita las declaraciones.
Aqu est un programa completo, ilustrando las declaraciones, if, else, y end que
utiliza la biseccin del intervalo para encontrar el cero de un polinomio.
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end

end
x

El resultado es la rez del polinomio x3 -2x-5


x =
2.09455148154233

Las precauciones que implican las comparaciones de matrices que se discutieron en la


seccin if en si tambin se aplican a la declaracin while.

break
La declaracin break le permite salir de un bucle while. En bucles anidados,
break sale del bucle interno solamente.
Aqu est una mejora en el ejemplo de la seccin anterior. Por qu el uso de
break es una buena idea?
a = 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x

5.

OTRAS ESTRUCTURAS DE DATOS


Esta seccin le introduce a otras estructuras de datos en MATLAB, incluyendo:

Matrices multidimensionales
Arreglos de celdas
Caracteres y texto
Estructuras

Matrices multidimensionales
Las matrices multidimensionales en MATLAB son matrices con ms de dos
subndices Pueden ser creadas llamando las funciones zeros, ones, rand, o randn con
ms de dos argumentos. Por ejemplo
R = randn(3,4,5);

crea un arreglo 3 por 4 por 5 con un total de 3x4x5 = 60 elementos al azar distribuidos
normalmente.
Un arreglo tridimensional puedo representar datos fsicos tridimensionales, sea la
temperatura en un cuarto, muestreado en una rejilla rectangular. O, puede ser que
represente una secuencia de matrices, de A(k), o de muestras de una matriz
dependiente del tiempo, A(t). En este caso, el (i,j)-simo elemento de la matriz ksima, o la tk-sima matriz, se denota por A(i,j,k).
Las versin de MATLAB y de Drer del cuadrado mgico de orden 4 se diferencian por
un intercambio de dos columnas.
Muchos cuadrados mgicos diferentes pueden ser
generados al intercambiar columnas. La declaracin
p = perms(1:4);

genera los 4! = 24 permutaciones de 1:4. La permutacin k-sima es el vector fila, p(k,:).


Entonces
A = magic(4);
M = zeros(4,4,24);
for k = 1:24
M(:,:,k) = A(:,p(k,:));
end.

guarda la secuencia de 24 cuadrados mgicos en un arreglo tridimensional, M.. El tamao


de M es
size(M)
ans =
4 4 24

Resulta que la matriz 22 en la secuencia es la de Drer:


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

La declaracin
sum(M, d)

calcula sumas s variando el subndice d. As que


sum(M, 1)

es un arreglo 1 por 4 por24 que contiene 24 copias del vector fila


34 34 34 34
y
sum(M, 2)

es un arreglo 4 por 1 por 24 que contiene 24 copias del vector columna


34
34
34
34

Finalmente,
S = sum(M, 3)

agrega las 24 matrices en la secuencia El resultado tiene tamao 4 por 4 por 1, as que
parece un arreglo 4 por 4,
S =
204
204
204
204

204
204
204
204

204
204
204
204

204
204
204
204

Arreglos de Celda
Los arreglos de celda en MATLAB son arreglos multidimensionales cuyos
elementos son copias de otras arreglos. Un arreglo de celda de matrices vacas puede
crearse con la funcin cell. Pero, a menudo, los arreglos de celda son creadas incluyendo
una coleccin miscelnea de cosas entre llaves, { }. Las llaves tambin son usadas con
subndices para tener acceso al contenido de varias celdas. Por ejemplo
C = {A

sum(A)

prod(prod(A)) }

crea un arreglo de celda de 1 por 3. Las tres celdas contienen el cuadrado mgico, el vector
fila de las sumas de la columna, y el producto de todos sus elementos. Cuando se visualiza
C, usted ve
C =
[ doble 4x4 ] [ doble 1x4 ] [ 20922789888000 ]

Esto es porque las primeras dos celdas son demasiado grandes para imprimirlas en
este espacio limitado, pero la tercera celda contiene solamente un nmero, 16!, as que hay
sitio para imprimirlo.

Aqu estn dos puntos importantes a recordar Primero, para extraer el contenido de
una de las celdas, use subndices dentro de las llaves. Por ejemplo, C{1} extrae el cuadrado
mgico y C{3} es 16!. En segundo lugar, los arreglos de celda contienen las copias de otros
arreglos, no punteros a esos arreglos. Si usted cambia posteriormente A, nada le sucede a
C.
Los arreglos tridimensionales se pueden utilizar para salvar una secuencia de
matrices del mismo tamao. Los arreglos de celda se pueden utilizar para guardar
secuencias de matrices de diversos tamaos. Por ejemplo,
M = cells(8,1);
for n = 1:8
M{n} = magic(n);
end
M

produce una secuencia de cuadrados mgicos de orden diferente,


M =
[
[
[
[
[
[
[
[

2x2
3x3
4x4
5x5
6x6
7x7
8x8

1]
double]
doubl ]
double]
double]
double]
double]
double]

Usted puede extraer la matriz de Drer con


M{4}

Caracteres y texto
Aada texto a MATLAB usando apstrofes. Por ejemplo,
s = ' hola '

El resultado no es la misma clase de matriz o arreglo numrico que hemos estado


tratando hasta ahora. Es un arreglo de caracteres 1 por 5.
Internamente, los caracteres se salvan como nmeros, pero no en formato
puntoflotante. La declaracin
a = double(s)

convierte el arreglo de caracteres en una matriz numrica que contiene las representaciones
floating-point de los cdigos ASCII para cada carcter. El resultado es
a =
72 101 108 108 111

La declaracin
s = char(a)

invierte la conversin.
Convertir nmeros a caracteres permite investigar las fuentes disponibles en su
ordenador. Los caracteres imprimibles del juego de caracteres bsico de ASCII son
representados por los nmeros enteros 32:127. (los nmeros enteros menores que 32
representan caracteres de control noimprimibles) Estos nmeros enteros se acomodan en
un arreglo apropiado 6 por 16 con
F = reshape(32:127,16,6)';

Los caracteres imprimibles en el juego de caracteres extendido de ASCII son representados


por F+128. Cuando estos nmeros enteros se interpretan como caracteres, el resultado
depende de la fuente que es usada actualmente. Escriba las declaraciones
char(F)
char(F+128)

y despus vare la fuente que es utilizada para la ventana de comandos de MATLAB. En


una PC, seleccione Preferences bajo el men de File. Este seguro de probar Symbol y
fuentes Wingdings, si usted las tiene en su computador Aqu est un ejemplo de la clase
de salida que usted puede obtener

La concatenacin con corchetes une variables de texto en cadenas ms grandes. La


declaracin
h = [ s, ' mundo ' ]

ensambla las cadenas horizontalmente y produce


h =
hola mundo

La declaracin
v = [ s; 'mundo' ]

ensambla las cadenas verticalmente y produce


v =
hola
mundo

Observe que un espacio en blanco tiene que ser insertado antes de ' m ' en h y que ambas
palabras en v tienen que tener la misma longitud. Los arreglos resultantes son areglos de
caracteres; h es 1 por 11 y v es 2 por 5.
Para manipular un texto que contiene lneas de diversas longitudes, usted tiene dos
opciones un arreglo de caracteres o un arreglo de celdas de cadenas. La funcin char
acepta cualquier nmero de lneas, agrega espacios en blanco a cada lnea para hacerlas
todas de la. la misma longitud, y forma un arreglo de caracteres con cada lnea en una fila
separada Por ejemplo
S = char('A,'rolling','stone,'gathers,'momentum.')

produce una matriz de caracteres 5 por 9


S =
A
Rolling
Stone
Gathers
momentum

Hay bastantes espacios en blanco en cada uno de las primeras cuatro filas de S para hacer
que todas las filas sean de la misma longitud. Alternativamente, usted puede guardar el
texto en un arreglo de celda. Por ejemplo
C = {'A;'rolling';'stone;'gathers;momentum.'}

Es un arreglo de celda 5 por1


C =
'A
'rolling'
'stone
'gathers
momentum.'

Usted puede convertir un arreglo de caracteres a un arreglo de celdas con


C = cellstr(S)

e invierta el proceso con

S = char(C)

Estructuras
Las estructuras son matrices multidimensionales de MATLAB cuyos elementos se
accesan mediante designadores de campo. Por ejemplo,
S.name = ' Ed Plum ';
S.score = 83;
S.grade = ' B+ '.

crea una estructura escalar con tres campos.


S =
nombre: Ed Plum':
score: 83:
grade: 'B+'

Como todo en MATLAB, las estructuras son matrices, as que usted puede insertar
elementos adicionales. En este caso, cada elemento del arreglo es una estructura con varios
campos. Los campos pueden ser uno a la vez agregado,
S(2).name = 'Toni Miller';
S(2).score = 91;
S(2).grade = 'A-';

O, un elemento entero se puede agregar con una sola declaracin.


S(3) = struct('name, Garcia Jerry',...
'score, 70,'grade, 'C ')

La estructura es lo bastante grande que solamente un resumen se imprime


S =
1x3 struct array with fields;
name
score
grade

Existen diversas maneras de ensamblar los campos en otros arreglos de MATLAB. Todas
se basan en la notacin de una lista separada por comas. Si usted escribe
S.score

es igual que escribir


S(1).score, S(2).score, S(3).score

Esta es una lista separada por comas. Sin ninguna otra puntuacin, no es muy til. Asigna
las variables, una a la vez, a la variable ans por defecto e imprime el resultado de cada
asignacin. Pero cuando usted incluye la expresin en corchetes,
[S.score ]

es igual que
[S(1).score, S(2).score, S(3).score ]

el cul produce un vector fila numrico contiene todas los valores


ans =
83 91 70

Similarmente, escriba
S.name

asigna los nombres, uno al tiempo, a la variable ans. Pero incluyendo la expresin entre
llaves
{S.name}

crea un arreglo 1 por 3 que contiene los tres nombres


ans =
' Ed Plum ' ' Toni Miller ' ' Jerry Garcia '

Y
char(S.name)

llama la funcin char con tres argumentos para crear un arreglo de caracteres de los
campos conocidos,
ans =
Ed Plum
Toni Miller
Jerry Garcia

6.

PROGRAMAS Y FUNCIONES

MATLAB es un lenguaje de programacin de gran alcance as como un ambiente de


cmputo interactivo. Los archivos que contienen cdigo en el lenguaje de MATLAB se
llaman archivos-M. Usted crea archivos-M usando un editor de textos, entonces los utiliza
como cualquier otra funcin o comando de MATLAB.

Existen 2 tipos de archivos-M:

Programas, que no aceptan argumentos de entrada o no regresan argumentos de salida.


Operan sobre los datos en el espacio de trabajo.

Functions, que puede aceptar argumentos de entrada y regresar argumentos de salida.


Las variables internas son locales a la funcin.

Si uestd es un nuevo programador de MATLAB, apenas cree los archivos-M que usted
desea probar en el directorio actual. Mientras desarrolla ms de sus propios archivos-M,
desear ordenarlos en otros directorios y cajas de herramientas personales que puede
agregar al camino de bsqueda de MATLAB.
Si usted duplica nombres de funcin, MATLAB ejecuta el que aparece primero en el
camino de bsqueda.
Para ver el contenido de un archivo-M, por ejemplo, myfunction.m, use
type myfunction

Programas
Cuando usted invoca un programa, MATLAB ejecuta simplemente los comandos
encontrados en el archivo. Los programas pueden operar con datos existentes en el espacio
de trabajo, o pueden crear nuevos datos sobre los cuales trabajar
Por ejemplo, cree un archivo llamado magicrank.m que contenga estos comandos
de MATLAB:
% Investigate the rank of magic squares
r = zeros(1,32);
for n = 3:32
r(n) = rank(magic(n));
end
r
bar(r)

Al escribir la declaracin
magicrank

hace que MATLAB ejecute los comandos, para calcular el rango de los primeros 30
cuadrados mgicos, y para trazar un grfico de barra del resultado. Despus de que la
ejecucin del archivo est completa, las variables n y r siguen existiendo en el espacio de
trabajo.

Funciones
Las funciones son archivos-M que pueden aceptar argumentos de entrada y regresar
argumentos de salida El nombre del archivo-M y de la funcin debe ser igual. Las
funciones operan sobre variables dentro de su propio espacio de trabajo, separado del
espacio de trabajo al que usted tiene acceso en la lnea de comando de MATLAB.
Un buen ejemplo es proporcionado por rank.
disponible en el directorio

El archivo-M rank.m est

toolbox/matlab/matfun

Puede ver el archivo con


type rank

Aqu est el archivo


function r = rank(A,tol)
% RANK Matrix rank.
% RANK(A) provides an estimate of the number of lineally
% independent rows or columns of a matrix A.
% RANK(A,tol) is the number of singular values of A
% that are larger than tol.
% RANK(A) uses the default tol = max(size(A)) * norm(A) * eps.
s = svd(A);
if nargin==1
tol = max(size(A)) * max(s) * eps;
end
r = sum(s > tol);

La primera lnea de una funcin archivo-M comienza con el nombre de la funcin.


Da el nombre de la funcin y el orden de los argumentos. En este caso, hay hasta dos
argumentos de entrada y un argumento de salida.
Las lneas siguientes, hasta la primera lnea en blanco o lnea ejecutable, son lneas
de comentario que proporcionan ayuda al texto. Estas lneas se imprimen cuando usted
escribe
help rank

La primera lnea del texto de ayuda es la lnea H1, que MATLAB despliega cuando
usted utiliza el comando lookfor o solicita ayuda de un directorio.

El resto del archivo es el cdigo ejecutable de MATLAB que define la funcin La


variable s introducida en el cuerpo de la funcin, as como las variables en la primera lnea,
r, A y tol, son locales a la funcin; estn separadas de cualquier variable en el espacio de
trabajo de MATLAB.

Este ejemplo ilustra un aspecto de las funciones de MATLAB que no se encuentra


normalmente en otros lenguajes de programacin un nmero variable de argumentos. La
funcin rank se puede utilizar de varias maneras:
rank(A)
r = rank(A)
r = rank(A,1.e-6)

Muchos archivos-M trabajan de esta manera. Si no se provee ningn argumento de salida,


el resultado se guarda en ans. Si el segundo argumento de entrada no se provee, la funcin
calcula un valor por defecto. Dentro del cuerpo de la funcin, dos cantidades llamadas
nargin y nargout estn disponibles, las cuales dicen el nmero de argumentos de entrada
y de salida implicados en cada uso determinado de la funcin. La funcin rank utiliza
nargin, pero no necesita utilizar nargout.

Variables Globales
Si usted quisiera que ms de una funcin compartiera una copia de una variable,
declare simplemente la variable como global en todas las funciones. Haga lo mismo en la
lnea de comando si usted quisiera que el espacio de trabajo tenga acceso a la variable. La
declaracin global debe ocurrir antes de que la variable se utilice en una funcin. Aunque
no se requiere, usar las maysculas para nombres de variables globales ayuda a
distinguirlas de otras variables. Por ejemplo, cree un archivo-M llamado falling.m:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;

Luego escriba:
global GRAVITY
GRAVITY = 32;
y = falling((0:.1:5)');

Las dos declaraciones globales hacen que el valor asignado a GRAVITY en la lnea de
comando est disponible dentro de la funcin Usted puede entonces modificar GRAVITY
recprocamente y obtener nuevas soluciones sin editar ningn fichero.

Dualidad Command/Function
Los comandos de MATLAB son declaraciones como
load
help

Muchos comandos aceptan modificantes


Load August17.dat

Help magic
Type rank

Otra mtodo de proveer modificantes es hacerlos argumentos de cadenas de funciones


load(August17.dat)
help(magic)
type(rank)

Esta es la dualidad command/function de MATLAB. Cualquier comando de la forma


Command argument
Puede tambin escribirse en la forma funcional.
command('argument')

La ventaja de la aproximacin funcional viene dada cuando el argumento de la cadena se


construye de pedazos El ejemplo siguiente procesa los ficheros de datos mltiples,
August1.dat, August2.dat, etctera. Utiliza la funcin int2str, que convierte un nmero
entero a una cadena de caracteres, para ayudar a construir el nombre del archivo.
for d = 1:31
s = ['August' int2str(d) '.dat']
load(s)
% Process the contents of the d-th file
end