Grupo FMI
Departamento de Matemática Aplicada, Universidad de Zaragoza
http://www.unizar.es/fmi
Índice
1. Aritmética elemental y asignaciones 3
2. Vectores y matrices 5
3. Listas implı́citas 7
4. Funciones 8
7. Detalles útiles 13
Esta guı́a ha sido desarrollada dentro del marco del Proyecto de Innovación Docente Guı́as de
aprendizaje de Matlab para alumnos y profesores por los siguientes miembros de grupo Formación
Matemática en Ingenierı́a: Francisco Javier Sayas (coordinador), Mercedes Arribas, Natalia Boal,
José Manuel Correas, Francisco José Gaspar, Dolores Lerı́s, Andrés Riaguas y Marı́a Luisa Sein-
Echaluce.
MATLAB (MATrix LABoratory) es un paquete interactivo para cálculo cientı́fico (aritmético
y simbólico), basado en matrices. MATLAB es fácil de emplear y, en principio, no requiere del
conocimiento de un lenguaje de programación. MATLAB concentra en un sólo programa un
buen número de posibilidades de cálculo cientı́fico y es, hoy por hoy, uno de los entornos de
trabajo más empleados en muy distintos campos de la Ingenierı́a. MATLAB sirve para:
realizar cálculo simbólico (con la posibilidad de hacer operaciones como derivar funciones,
calcular primitivas, etc) y exacto;
acceder a paquetes con aplicaciones tan diversas como el tratamiento de señales, la simu-
lación de circuitos, métodos numéricos avanzados, simulación de sistemas dinámicos, redes
neuronales etc.
trabajo interactivo (Workspace), donde el usuario realiza una consulta (escribe una ope-
ración) y el programa la ejecuta;
trabajo programado (M-files), donde el usuario genera uno o varios ficheros con conjuntos
de instrucciones MATLAB, que se pueden ejecutar repetidas veces (con distintos datos)
desde el modo interactivo. De esta forma, el usuario puede incrementar las funciones dis-
ponibles en MATLAB, añadiendo las suyas propias.
Esta guı́a permite realizar una visita general por algunas órdenes sencillas de MATLAB mientras
trabajamos de forma interactiva en el entorno Workspace, la sesión de trabajo que aparece por
defecto cuando se abre la aplicación. Para avanzar en el conocimiento de MATLAB, recomen-
damos continuar con el Curso de MATLAB que hemos desarrollado los miembros del Grupo
FMI.
Por defecto, la carpeta de trabajo es la carpeta work aunque ésta se puede cambiar (véase la
figura 1). A lo largo de esta guı́a de iniciación, cuando se muestran instrucciones en MATLAB,
esto es, lı́neas precedidas del sı́mbolo “ %”, por simplicidad de edición se han omitido todas las
tildes y caracteres no estándar (por ejemplo, la letra ñ).
2
Figura 1: Pantalla que se obtiene al iniciar una sesión de trabajo de MATLAB
>> 2+2
ans =
4
>> 3-4
ans =
-1
>> 2*2
ans =
4
>> 2/3
ans =
0.6667
>> (-2)^10
ans =
1024
3
>> a=3
a =
3
>> 5*a
ans =
15
>> b=a/7
b =
0.4286
>> b=3*a;
>> -b
ans =
-9
El efecto de escribir un punto y coma (;) al final de una instrucción es evitar que se
muestre por pantalla su resultado, aunque sı́ se ejecuta.
Advertencia. En muchos contextos es más común llamar j a la unidad imaginaria. Por defecto
MATLAB también tiene reservada esa letra para la unidad imaginaria. Si se realiza una asignación sobre
cualquiera de las variables se pierde su valor. Para recuperarlo se puede borrar su valor (instrucción clear
i) o reasignarlo (instrucción i=sqrt(-1)).
>> i
ans =
0 + 1.0000i
>> i^2
ans =
-1
>> (2+3i)/(4-i) % para multiplicar por i no hace falta *
4
ans =
0.2941 + 0.8235i
>> (1+i)^2
ans =
0 + 2.0000i
MATLAB distingue entre mayúsculas y minúsculas, razón por la cual la variable a y la variable A
son distintas. El nombre de las variables sigue las reglas habituales de un lenguaje de programa-
ción: debe comenzar por una letra, aunque puede contener números; no debe contener espacios
en blanco ni algún tipo de sı́mbolo reservado (coma, punto y coma, dos puntos, guión,...).
Advertencia. Aunque MATLAB sı́ distingue entre mayúsculas y minúsculas, y por tanto es seguro
emplear combinaciones de ambas en nombres de variables, las implementaciones en Windows no hacen
estas distinciones para los nombres de los ficheros y, por consiguiente, de las funciones definidas sobre
ficheros. Volveremos sobre este detalle en su momento.
2. Vectores y matrices
Por defecto, todas las variables en MATLAB se tratan como arrays con dos ı́ndices, esto es,
como matrices. No obstante, es más simple comenzar aprendiendo a manipular vectores, es
decir, arrays numerados con un único ı́ndice.
Advertencia. MATLAB distingue entre vectores fila y columna. Esto resulta poco natural si se
entienden los vectores como algo distinto de las matrices (como ocurre en la mayorı́a de los lenguajes de
programación), pero es conveniente acostumbrarse pronto a este detalle, puesto que es parte integrante
de la filosofı́a matricial de MATLAB.
5
ans =
5 3 -3
>> b/2 % vector / escalar
ans =
-2 5 -3
>> d=[-1; 2] % vector columna
d =
-1
2
>> c=b’ % b’ = transpose(b)
c =
-4
10
-6
>> c=[-4;10;-6] % forma directa de escribir un vector columna
c =
-4
10
-6
>> A=[3 1 5; 2 1 2] % o con comas para separar los elementos de una fila
A =
3 1 5
2 1 2
>> A’ % trasponemos la matriz, igual que ejecutar transpose(A)
ans =
3 2
1 1
5 2
>> A(1,3) % elemento en la posicion (1,3)
ans =
5
>> B=[2,-1,4;5,2,3] % ahora separando los elementos de una fila por comas
B =
2 -1 4
5 2 3
>> A+B % suma de matrices
ans =
6
5 0 9
7 3 5
>> C=[2 3 ; -1 3; 6 -2]
C =
2 3
-1 3
6 -2
>> A+C % cuidado con las dimensiones
??? Error using ==> + Matrix dimensions must agree.
>> A+C’ % dimensiones correctas para sumar
ans =
5 0 11
5 4 0
>> D = [1 -1; 5 -4; 1 6]
D =
1 -1
5 -4
1 6
>> 3*D
ans =
3 -3
15 -12
3 18
>> A*D % funciona el producto de matrices
ans =
13 23
9 6
>> A*B % de nuevo las dimensiones...
??? Error using ==> * Inner matrix dimensions must agree.
3. Listas implı́citas
las listas implı́citas son listas de números en las que se especifica el primer y último elementos y
el incremento entre cada elemento de la lista. Su empleo es muy común en MATLAB, tanto para
desarrollo de las capacidades gráficas como en cualquier nivel de programación. El resultado es
siempre un vector fila.
7
1 3 5 7 9
>> c=10:-1:1
c =
10 9 8 7 6 5 4 3 2 1
>> d=0:0.1:1
d =
Columns 1 through 6
>> linspace(0,20,11)
ans =
0 2 4 6 8 10 12 14 16 18 20
4. Funciones
Las funciones básicas (trigonométricas, exponencial, logaritmo) están incorporadas a MATLAB.
Puesto que el entorno MATLAB ha sido diseñado en un marco de fuerte componente matemática
y numérica, el logaritmo log es el neperiano, no el decimal.
8
1.0986
>> log(0)
Warning: Log of zero. ans =
-Inf
>> log(exp(4))
ans =
4
>> abs(-5) % valor absoluto
ans =
5
En el caso de vectores o matrices, estas funciones actúan sobre cada uno de los elementos. En el
argot de MATLAB se dice que estas funciones ya están vectorizadas. La sección siguiente trata
de este tema.
>> a=[1,2,3];
>> sqrt(a)
ans =
1.0000 1.4142 1.7321
>> sin(3*a)
ans =
0.1411 -0.2794 0.4121
>> log(5*a)
ans =
1.6094 2.3026 2.7081
>> A=[3 1 5; 2 1 2; 1 2 0];
>> sqrt(A) % raiz cuadrada elemento a elemento
ans =
1.7321 1.0000 2.2361
1.4142 1.0000 1.4142
1.0000 1.4142 0
>> abs([1,-2,3,-5])
ans=
1 2 3 5
Advertencia. En el caso de matrices cuadradas exp(A) y sin(A) no son las funciones analı́ticas
exponencial y seno ya que están funciones de MATLAB actúan elemento a elemento. Por la misma razón
sqrt(A)*sqrt(A) no es A.
9
de división tiene un significado más complejo, relacionado con el producto por la inversa del
denominador.
Para realizar productos y divisiones elemento a elemento (operaciones vectorizadas), hay que
emplear los sı́mbolos
.* ./
mientras que
.^2
(o expresiones parecidas con otros exponentes) sirve para elevar cada componente de una matriz
o vector al exponente indicado.
10
-47 12
-16 -47
>> C=[4 1; 1 9]
C =
4 1
1 9
>> C.^(1/2) % igual que ejecutar sqrt(C)
ans =
2 1
1 3
>> C^(1/2)
ans =
1.9899 0.2007
0.2007 2.9933
>> x=0:.01:2*pi;
>> y=sin(x).^2;
>> plot(y)
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 100 200 300 400 500 600 700
Observa la diferencia entre las figuras 2 y 3 y cuál es la diferencia entre las órdenes en MATLAB
utilizadas.
11
>> plot(x,y)
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 1 2 3 4 5 6 7
El menú gráfico que incluye la ventana de gráficos del MATLAB permite con gran sencillez
añadir texto, lı́neas y flechas a una gráfica, e incluso realizar un zoom
La siguiente gráfica es tridimensional (Figura 4).
>> x=-3:0.2:3;
>> y=x;
>> [xx,yy]=meshgrid(x,y);
>> z=xx.^2+3*yy.^2;
>> plot3(xx,yy,z)
40
35
30
25
20
15
10
0
3
2
3
1 2
0 1
−1 0
−1
−2 −2
−3 −3
12
Veamos la misma gráfica con la orden surf (Figura 5). Para cambiar el punto de vista se puede
emplear el icono correspondiente a rotación del menú gráfico.
>> x=-3:0.2:3;
>> y=x;
>> [xx,yy]=meshgrid(x,y);
>> z=xx.^2+3*yy.^2;
>> surf(x,y,z)
40
35
30
25
20
15
10
0
3
2
3
1 2
0 1
−1 0
−1
−2 −2
−3 −3
La cuestión gráfica en MATLAB llega a altos grados de sofisticación, ası́ que le dedicaremos un
capı́tulo entero del curso que amplı́a esta guı́a.
7. Detalles útiles
La orden clc limpia la pantalla de comandos.
La orden clear elimina todas las variables no permanentes. Es posible borrar únicamente
algunas de las variables del espacio de trabajo con la orden
clear nombre_variable
Y si tienes dudas sobre alguna función de MATLAB, tenemos la orden
help nombre_funcion
para consultar cualquier función del programa. Además hay un menú de ayuda más deta-
llado en la parte superior derecha de la barra de menús.
Se interrumpe una ejecución con Ctrl + C.
Las teclas ↑ y ↓ permiten recuperar órdenes ejecutadas anteriormente. Tecleando primero
un grupo de caracteres y empleando las flechas se puede recuperar un histórico de órdenes
ejecutadas anteriormente que comienzan por esos caracteres.
13
Si se quiere guardar todo lo hecho, la orden
diary nombre_fichero.txt
permite grabar en un fichero texto la sesión de trabajo. Con diary off y diary on de-
sactivamos y activamos la grabación en el fichero.
pi es el número π.
>> eps
ans =
2.2204e-016
inf Infinito
NaN (not–a–number) es una magnitud no numérica y se obtiene, por ejemplo, como resul-
tado de indeterminaciones matemáticas del tipo (0/0) ó (∞ − ∞).
realmin y realmax los números reales positivos, más pequeño y más grande respectiva-
mente, que se pueden utilizar.
MATLAB no tiene aritmética entera incorporada. Las operaciones con enteros son realizadas
exactamente mientras ocurran dentro de la precisión máquina (hasta unas dieciséis cifras). Aún
ası́, MATLAB reconoce en cierto modo que se trata de números enteros y devuelve los resultados
como si estuviera realizando aritmética entera.
En general MATLAB trabaja en aritmética de coma flotante de doble precisión. El usuario elige
el usuario el formato de salida. Algunos formatos:
format short es el formato por defecto; punto fijo y cuatro dı́gitos decimales
14
>> 2/3
ans =
0.6667 % formato por defecto
>> format long
>> 2/3
ans =
0.66666666666667
>> format long e
>> 2/3
ans =
6.666666666666666e-001
>> format short
>> 2/3
ans =
0.6667
>> format short e
>> 2/3
ans =
6.6667e-001
>> format rat
>> 2/3
ans =
2/3
>> format short
>> 3^(-32)
ans =
5.3966e-016
>> format long
>> 3^(-32)
ans =
5.396595277354290e-016
>> format rat
>> 3^(-32)
ans =
1/1853020188851841
15