Escolar Documentos
Profissional Documentos
Cultura Documentos
1.
Qu es MATLAB?
2.
El sistema MATLAB
El sistema MATLAB consta de cinco partes principales:
3.
Simulink
1.
Ejecutando MATLAB
2.
Matrices
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:
5 10 11 8;
9 6 7 12;
4 15 14 1 ]
3
10
6
15
2
11
7
14
13
8
12
1
MATLAB responde:
ans =
34 34 34 34
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
produce
ans =
16
10
7
1
y sum(diag(A)) produce
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
3
10
6
15
2
11
7
14
13
8
12
1
0
0
0
17
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)
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))
3.
Expresiones
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
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.
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
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.
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
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
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];
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
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
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
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
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);
1/6 + 1/7...
1/12;
Los espacios en blanco alrededor de =, +, y los signos son opcionales, pero mejoran
legibilidad.
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
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 ')
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
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)
comando es un atajo para un diagrama de la parte real contra la parte imaginaria. Por lo
tanto,
plot(Z)
por ejemplo :
t = 0:pi/10:2*pi;
plot(exp(i*t), '-o ')
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 las marcas de incremento en los ejes x e y tengan la misma longitud. As
plot(exp(i*t))
axis off
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.
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
transform.
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
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
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 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
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
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.
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
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
3.
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
8
20
17
23
11
17
14
26
17
23
26
2
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
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 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
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
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
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]
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)]
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
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
Para una lista de las funciones de anlisis de datos disponibles en MATLAB, escriba:
help datafun
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
-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
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.
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
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.
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
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
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
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.
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);
La declaracin
sum(M, d)
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
2x2
3x3
4x4
5x5
6x6
7x7
8x8
1]
double]
doubl ]
double]
double]
double]
double]
double]
Caracteres y texto
Aada texto a MATLAB usando apstrofes. Por ejemplo,
s = ' hola '
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)';
La declaracin
v = [ s; '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.')
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.'}
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+ '.
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-';
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
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 ]
Similarmente, escriba
S.name
asigna los nombres, uno al tiempo, a la variable ans. Pero incluyendo la expresin entre
llaves
{S.name}
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
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
toolbox/matlab/matfun
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.
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
Help magic
Type rank