Sie sind auf Seite 1von 28

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

Das könnte Ihnen auch gefallen