You are on page 1of 11

Introduccin al Uso de

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.

MATLAB y su descripcin general, incluyendo tutoriales est disponible a


travs de:
The MathWorks Inc.

1. Iniciando una sesin de MATLAB


MATLAB se invoca tecleando matlab lo que abre una ventana con varias
secciones (o varias ventanas si as se ha especificado).
En la ventana de comandos aparece un seguidillo (prompt) >> que indica que el
programa est listo y esperando comandos.
La siguiente es una ventana tpica, aunque de una versin anterior (6.1).

El smbolo "%" se usa al principio de un comentario.

Para obtener ayuda teclear "help" (da una lista de temas) o bien "help
topic"

Si no sabes el tema exacto o el comando que buscas, escribe "lookfor


keyword" (ej, "lookfor regression")

Cuando escribas una lnea de comandos, escribe ";" al final para que
matlab no despliegue el resultado,

si omites ";" matlab despliega el resultado del comando.

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

Si copiamos la lnea anterior obtendremos una variable A que corresponde a una


matriz de 3 x 3 y se har caso omiso de lo especificado por %.
Otros comandos que se parecen a los de emacs y tcsh:

C-a te pone al principio de una lnea (C-e al final)


C-f te mueve hacia adelante un caracter (C-b hacia atrs)
C-d borra un caracter, C-k borra la lnea a la derecha del cursor
C-p va hacia atrs en la historia de comandos
C-n va hacia adelante (equivalente a las teclas de flechas)
Tab te completa el comando.

2. Objetos Bsicos de Matlab


Veamos algunos objetos (variables o constantes) por medio de ejemplos:
N
v

= 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'

% vector columna(o matriz de n X 1)


% transpuesta de una matriz

= [1:.5:3]

= pi*[-4:4]/4

v
m
v
m
v

=
=
=
=
=

%
%
%
%
%
%
%
%
%
%
%

[]
zeros(2,3)
ones(1,3)
eye(3)
rand(3,1)

un vector de rango especificado:


[inicio:fin] o tambien
[inicio:incremento:fin]
un vector de -4 a 4 dividido por
4 y multiplicado por Pi
vector vaco
una matriz de ceros
una matriz de unos
matriz identidad
matriz aleatoria con valores de
0 a 1 (ver tambin randn)

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):

Por medio de una lista explcita de elementos


De archivos externos (cargndolas con el comando load por
ejemplo)
Generadas a travs de un proceso o rutina

Ejemplos de escritura directa:


A = [ 1

A
1
4
7

= [
2 3
5 6
8 9 ]

3;

6;

9 ] % en este caso
% el ; cambia de rengln

% en este caso el cambio de regln


% lo hacemos nosotros directamente

las dos formas anteriores son equivalentes

Ejemplo de lectura de un archivo externo con datos en forma de tabla ascii


>> load A.txt

% en este caso el archivo A.txt se


% encuentra en el directorio de
% trabajo o en la ruta de acceso o path

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

(donde b es un vector columna)

x = b/A es la solucin de x * A = b (donde b es un vector rengln)


Ejemplo:
[ 1

].* [ 1

que sera lo mismo que:

4 ]

16 ]

[ 1

].^2

4 ]

16 ]

y que no es lo mismo que:


[ 1

]* [ 1

porque obtendramos un error:


??? Error using ==> mtimes
Inner matrix dimensions must agree.
pero s podramos hacer:
[ 1

1
2
3
4

]'* [ 1

2
4
6
8

3
6
9
12

4
8
12
16

4 ]

ya que al tomar la transpuesta de la primera matriz (o de la segunda) la


operacin es concordante.
Ntese que tomando la transpuesta de la segunda matriz se obtiene, como es de
esperar:
[ 1
5.

]* [ 1

4 ]'

30

Notacin con el uso de dos puntos, o colon (:)

En MATLAB el smbolo : (dos puntos) juega un papel muy importante.


Se usa para definir rangos de una variable o matriz o para indicar la totalidad de
una columna o rengln, o el contenido total de una matriz.
Ejemplos:
A ( 1:3

4:6

% proporciona la submatriz definida por


% los renglones 1 a 3 y por las
% columnas 4 a 6

x = [ 0.0 : 0.1 :1.0] % proporciona un vector rengln que


% va desde 0.0 hasta 1.0 en
% incrementos de 0.1
A ( 2:5 , 4 )

% nos da la los elementos 2 al 5,


% de la columna 4

A ( : , 3 )

A(:, [2

6.

% nos da la todos los elementos de


% la columna 3
5]) = B(: , 1:3) % cambia las columnas 2, 4 y 5
% de A por las tres primeras
% columnas de B

Uso del smbolo : en operaciones lgicas

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

Si ahora queremos obtener los elementos de la columna 3 de A que cumplen con


una condicin especfica, podemos hacer:
>> i =

A( : , 3 ) >= 5.0

% nos da la todos los elementos


% de la columna 3 de la matriz A
% que son mayores o iguales a 5.0

Si no ponemos ; al final obtenemos la respuesta:


i =
0
1
1
En el ejemplo anterior obtendramos un vector i (identificador) que contiene
tantos elementos como hay en la columna 3 de A, pero con ceros, en donde no
se cumple la condicin, y unos en donde si se cumple. Ahora bien, Matlab

permite incluir el resultado de una operacin lgica como subndices virtuales


de la matriz para obtener el resultado. Esto es, usando los resultados anteriores:
>> A(i,3)

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

% Ahora tendremos un vector B que contiene slo los


% elementos de A que cumplieron con la condicin.

Para hacer la comparacin de la secuencia normal que habramos tenido que


seguir, el ejemplo anterior correspondera a lo siguiente:
>> i =

A( : , 3 ) >= 5.0

% igual que en el 1er paso


% anterior

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.

Como se ve es posible estructurar la programacin con resultados embebidos.


Considerando el ejemplo anterior podramos hacer la comparacin de los pasos
que se habran requerido para obtener el mismo resultado usando un bucle
(Loop) con, por ejemplo, un IF , y de ah ver la capacidad y ventaja en el uso de la
sintxis de Matlab.
7.

Ms sobre creacin de matrices.

Matlab tiene una propiedad que permite la asignacin de filas o columnas de


una matriz directamente hacia otra matriz.
Por ejemplo, tomemos el caso de que se requiere usar los datos de la columna 2 a
la columna 4 de la matriz A y ponerlas junto a las columnas 1 y 2 de la matriz B,
siendo el resultado una nueva matriz C:
La forma lgica sera como sigue:

Primero tenemos las matrices.


A =
35
3
31
8

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 =

La construccin de C se consigue haciendo:


>> C = A(:,2:4)
C =
1
32
9
28

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

Consiguiendo el resultado deseado.

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

You might also like