Professional Documents
Culture Documents
MATLAB
Dr. Ramn Ziga
Posgrado en Ciencias de la Tierra, UNAM
Conceptos Generales
Matlab es un sistema de programacin y clculo basado en la manipulacin de
matrices. El nombre mismo del sistema o paquete de cmputo proviene de la
abreviacin MATriz LABoratory o Laboratorio de Matrices. Por lo tanto, la
filosofa detrs de la computacin por medio de este sistema es considerar a los
objetos (tanto matemticos como grficos) como matrices de forma que podamos
usar el lgebra matricial y otras propiedades para ahorrar tiempo de cmputo.
Se puede trabajar con MATLAB directamente por medio de la invocacin de
comandos en la ventana de trabajo (Command Window) que es la ventana en
donde se escriben los comandos o bien a travs de procesos estructurados
(rutinas o funciones con la extensin *.m). En todos los casos se puede incluir el
manejo de otras ventanas de despliegue de resultados o grficas. Las ventanas
pueden contener elementos adicionales como submens, botones, cursores para
facilitar la interaccin. En general todos los comandos MATLAB corresponden a
rutinas escritas en el propio lenguaje de MATLAB, aunque algunas pueden ser
implementaciones de otros lenguajes como C, Java, etc.
MATLAB es un gran programa de clculo tcnico y cientfico. Para ciertas
operaciones es muy rpido, cuando puede ejecutar sus funciones en cdigo
nativo con los tamaos ms adecuados para aprovechar sus capacidades de
vectorizacin. En otras aplicaciones resulta bastante ms lento que el cdigo
equivalente desarrollado en C/C++ o Fortran. Sin embargo, es una herramienta
muy til y de alto nivel para desarrollar aplicaciones tcnicas, fcil de utilizar y
que puede ayudar a aumentar significativamente la productividad de los
programadores respecto a otros entornos de desarrollo.
MATLAB dispone de un cdigo bsico y de varias libreras especializadas
(toolboxes). En estos apuntes se har referencia exclusiva al cdigo bsico.
MATLAB incluye una gran cantidad de funciones predefinidas, que ayudan a
realizar clculos de todo tipo as como para visualizacin de datos y resultados,
se recomienda usar los demos y las ayudas (help), as como los tutoriales para
conocerlas.
Para obtener ayuda teclear "help" (da una lista de temas) o bien "help
topic"
Cuando escribas una lnea de comandos, escribe ";" al final para que
matlab no despliegue el resultado,
Usa la tecla flecha-arriba para recordar commandos sin tener que reescribirlos (flecha-abajo te lleva a los comandos siguientes que hayas
escrito a partir del desplegado).
Nota:
En estos apuntes vamos a usar la sintxis de Matlab para mostrar los ejemplos,
en cualquier caso podemos copiar la lnea completa (sin el seguidillo >> de ser el
caso) a la ventana de comandos y ejecutarla directamente. Por ejemplo
>> A = [ 1
3;
6;
9 ] % en este caso
% definimos una matriz
% que se llama A
= 5
= [1 0 0]
% un escalar (o matriz de 1 x 1)
% vector fila (o matriz de 1 X n)
v
v
= [1;2;3]
= v'
= [1:.5:3]
= pi*[-4:4]/4
v
m
v
m
v
=
=
=
=
=
%
%
%
%
%
%
%
%
%
%
%
[]
zeros(2,3)
ones(1,3)
eye(3)
rand(3,1)
3. Ingreso de Datos
Ya que el objeto bsico de MATLAB son las matrices, es necesario conocer la
forma de introducir datos que corresponden a los elementos de stas. Las
matrices pueden ser reales, complejas, de caracteres, etc. En general las matrices
de 1x1 se interpretan como escalares y las de un slo rengln o columna como
vectores.
Las matrices se pueden definir de alguna de las siguientes formas (no son las
nicas):
A
1
4
7
= [
2 3
5 6
8 9 ]
3;
6;
9 ] % en este caso
% el ; cambia de rengln
4. Operadores Matemticos
MATLAB puede operar las matrices por medio de operadores y por medio de
funciones.
Los operadores matriciales de MATLAB son los siguientes:
+
adicin o suma
sustraccin o resta
*
multiplicacin
'
transpuesta
^
potenciacin
\
divisin-izquierda
/
divisin-derecha
.*
producto elemento a elemento
./ y .\
divisin elemento a elemento
.^
elevar a una potencia elemento a elemento
Estos operadores se aplican tambin a las variables o valores escalares, aunque
con algunas diferencias. Todos estos operadores son coherentes con las
correspondientes operaciones matriciales: no se puede por ejemplo sumar
matrices que no sean del mismo tamao. Si los operadores no se usan de modo
correcto se obtiene un mensaje de error.
Un caso muy particular en MATLAB es el operador divisin derecha e izquierda
ya que puede se usado para resolver las siguientes ecuaciones:
x = A\b es la solucin de A * x = b
].* [ 1
4 ]
16 ]
[ 1
].^2
4 ]
16 ]
]* [ 1
1
2
3
4
]'* [ 1
2
4
6
8
3
6
9
12
4
8
12
16
4 ]
]* [ 1
4 ]'
30
4:6
A ( : , 3 )
A(:, [2
6.
En MATLAB el smbolo : (dos puntos) tambin puede usarse para definir una
secuencia Booleana (condicional) y evitar la programacin de bucles (tipo IF).
Nuevamente vemoslo con un ejemplo, definamos una matriz:
>> A = [ 1
3;
6;
9 ]
matlab responde:
A =
1
4
7
2
5
8
3
6
9
A( : , 3 ) >= 5.0
Matlab responde:
ans =
6
9
A lo cual podramos llamar con otro nombre y tener disponible el resultado, es
decir:
>> B
= A(i,3)
B=
6
9
A( : , 3 ) >= 5.0
i =
0
1
1
Una vez obtenido el vector i podramos usar la funcin find de matlab para
obtener los subndices de los elementos que no son cero:
>> subi =
subi =
2
3
find(i)
Lo cual nos proporciona los subndices de los elementos que cumplen con la
condicin, y los renombra como el vector subi, si ahora hacemos:
>> A(subi,3)
ans =
6
9
nos vuelve a dar el resultado esperado.
Notar que en el primer caso nos habramos ahorrado un paso (el uso de la
funcin find).
Claro que si queremos de verdad ahorrarnos pasos, entonces podramos hacer
todo el ejemplo en una sola lnea como sigue:
>> B = A(A( : , 3 ) >= 5.0,3)
B =
6
9
Lo cual nos da el resultado deseado.
1
32
9
28
6
7
2
33
315
27
279
72
9
288
81
252
18
21
6
99
26
21
22
17
19
23
27
10
B =
6
7
2
33
26
21
22
17
Y posteriormente:
>> C(:,4:5) = B(:,1:2)
C =
1
32
9
28
6
7
2
33
26
21
22
17
315
27
279
72
9
288
81
252
24
25
20
15
Sin embargo, todo lo anterior se puede lograr con un slo paso si efectuamos,
(notar los parntesis):
>> C = [ A(:,2:4) B(:,1:2) ]
C =
1
32
9
28
6
7
2
33
26
21
22
17
315
27
279
72
9
288
81
252