Professional Documents
Culture Documents
MATLAB es un potente paquete de software para computacin cientfica, orientado al clculo numrico, a
las operaciones matriciales y especialmente a las aplicaciones cientficas y de ingeniera.
Puede ser utilizado como simple calculadora matricial, pero su inters principal radica en los cientos de
funciones tanto de propsito general como especializadas que posee, as como en sus posibilidades para la
visualizacin grfica.
MATLAB posee adems un lenguaje de programacin propio, muy prximo a los habituales en clculo
numrico (Fortran, C,) que permite al usuario escribir sus propios scripts (conjunto de comandos
escritos en un fichero, que se pueden ejecutar con una nica orden) para resolver un problema concreto y
tambin escribir nuevas funciones con, por ejemplo, sus propios algoritmos. MATLAB dispone, adems, de
numerosas Toolboxes, que le aaden funcionalidades especializadas.
Numerosas contribuciones de sus miles de usuarios en todo el mundo pueden encontrarse en la web de
The MathWorks: www.mathworks.es
1. DOCUMENTACIN Y AYUDA ON-LINE
A travs del navegador del Help se pueden descargar, desde The MathWorks, guas detalladas, en formato
pdf, de cada captulo.
2. SCRIPTS Y FUNCIONES. EL EDITOR INTEGRADO
2.1 Scripts
Un script es un conjunto de instrucciones (de cualquier lenguaje) guardadas en un fichero (usualmente de
texto) que son ejecutadas normalmente mediante un intrprete. Son tiles para automatizar pequeas
tareas. Tambin puede hacer las veces de un "programa principal" para ejecutar una aplicacin.
As, para llevar a cabo una tarea, en vez de escribir las instrucciones una por una en la lnea de comandos
de MATLAB, se pueden escribir una detrs de otra en un fichero. Para ello se puede utilizar el Editor
integrado: icono hoja en blanco del men de herramientas, opcin New M-file del Men File o
bien usando la orden
>> edit
Los scripts de MATLAB deben guardarse en un fichero con sufijo .m para ser reconocidos.
Para ejecutar un script que est en el directorio de trabajo, basta escribir su nombre (sin el sufijo) en la
linea de comandos.
2.2 Funciones
Una funcin (habitualmente denominadas M-funciones en MATLAB), es un programa con una "interfase"
de comunicacin con el exterior mediante argumentos de entrada y de salida.
Las funciones MATLAB responden al siguiente formato de escritura (la clusula end del final no es
obligatoria, excepto en el caso de funciones anidadas, que se explica ms adelante):
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
eco
en
Las funciones deben guardarse en un fichero con el mismo nombre que la funcin y sufijo .m . Se pueden
incluir en el mismo fichero otras funciones, denominadas subfunciones, a continuacin de la primera,
pero slo sern visibles para las funciones del mismo fichero.
Tambin es posible definir funciones anidadas, esto es, funciones insertadas dentro del cdigo de otras
funciones. (Se exponen aqu para conocer su existencia. Su utilizacin es delicada.)
EJEMPLO : fichero tresxcuadrado.m
function z=tresxcuadrado(x)
% Ejemplo de una funcion anidada
%
%%%%%%%%
function [y]=cuadrado(x)
y=x*x;
end
%%%%%%%
z=3*cuadrado(x);
end
2.3 Funciones on-line (annimas)
Algunas funciones sencillas, que devuelvan el resultado de una expresin, se pueden definir mediante
una sla instruccin, en mitad de un programa (script o funcin) o en la lnea de comandos. Se llaman
funciones annimas:
handle = @(argumentos) expresion
EJEMPLO
>> ...
>> mifun = @(x) sin(2*x);
>> mifun(pi/4)
ans =
1
Pueden tener varias variables y hacer uso de variables previamente definidas:
EJEMPLO
>> a=2;
>> mifun = @(x,t) sin(a*x*t);
>> mifun(pi/4,1)
ans =
1
Si, con posterioridad a la definicin de la funcin mifun, se cambia el valor de la variable a, la funcin no
se modifica: en el caso del ejemplo, seguir siendo mifun(x,t)=sin(2*x*t).
2.4 Workspace y mbito de las variables
Workspace (espacio de trabajo) es el conjunto de variables que en un momento dado estn definidas en la
memoria del MATLAB
Las variables creadas desde la linea de comandos de MATLAB pertenecen al base workspace (espacio de
trabajo base). Los mismo sucede con las variables creadas por scripts que se ejecutan desde la linea de
comandos. Estas variables permanecen en el base workspace cuando se termina la ejecucin del script
y se mantienen all durante toda la sesin de trabajo o hasta que se borren.
Sin embargo, las variables creadas por una funcin pertenecen al espacio de trabajo de dicha funcin,
que es independiente del espacio de trabajo base. Es decir, las variables de las funciones son LOCALES :
MATLAB reserva una zona de memoria cuando comienza a ejecutar una funcin, almacena en esa zona las
variables creadas por esa funcin, y borra dicha zona cuando termina la ejecucin de la funcin.
Para hacer que una variable de una funcion pertenezca al base workspace, hay que declararla GLOBAL:
la orden
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
NaN
El lenguaje de MATLAB es interpretado, esto es, las instrucciones se traducen a lenguaje mquina una a
una y se ejecutan antes de pasar a la siguiente. Es posible escribir varias instrucciones en la misma lnea,
separndolas por una coma o por punto y coma. Las intrucciones que terminan por punto y coma no
producen salida de resultados por pantalla.
MATLAB distingue entre maysculas y minsculas: Log no es lo mismo que log.
MATLAB conserva un historial de las instrucciones escritas en la lnea de comandos. Se pueden recuperar
instrucciones anteriores, usando las teclas de flechas arriba y abajo. Con las flechas izquierda y derecha
nos podemos desplazar sobre la lnea de comando y modificarlo.
Se pueden salvaguardar todas las instrucciones y la salida de resultados de una sesin de trabajo de
MATLAB a un fichero:
>> diary nombre_fichero
>> diary off
% suspende la salvaguarda
-.567d-21
caracteres
||
raiz cuadrada
mdulo
complejo conjugado
parte real
parte imaginaria
exponencial
logaritmo natural
logaritmo decimal
aprox. racional
resto de dividir x por y .
Iguales si x,y>0 . Ver help
para definicin exacta
Redondeo hacia 0
Redondeo hacia + infinito
Redondeo hacia - infinito
Redondeo al entero ms
prximo
sin(x)
cos(x)
tan(z)
cotg(x)
asin(x)
acos(x)
atan(x)
cosh(x)
sinh(x)
tanh(x)
seno (radianes)
coseno (radianes)
tangente (radianes)
cotangente (radianes)
arcoseno
arcocoseno
arcotangente
cos. hiperblico
seno hiperblico
tangente hiperblica
acosh(x)
asinh(x)
atanh(x)
arcocoseno hiperb.
arcoseno hiperb.
arcotangente hiperb.
who
whos
clear
clear a b c
3.5 Formatos
Por defecto, MATLAB muestra los nmeros en formato de punto fijo con 5 dgitos. Se puede modificar esto
mediante el comando format:
format
format
format
format
format
format
short
long
short e
long e
rat
Las explicaciones sobre las funciones/comandos que se presentan en estas notas estn muy resumidas
y slo incluyen las funcionalidades que, segn el parecer subjetivo de la autora, pueden despertar ms
inters. La mayora de las funciones tienen mas y/o distintas funcionalidades que las que se exponen
aqu. Para una descripcin exacta y exhaustiva es preciso consultar la Ayuda on-line.
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
4. MATRICES
Como ya se ha dicho, las matrices bidimensionales de nmeros reales o complejos son los objetos bsicos
con los que trabaja MATLAB. Los vectores y escalares son casos particulares de matrices.
4.1 Construccin de matrices
La forma ms elemental de introducir matrices en MATLAB es describir sus elementos de forma exhaustiva
(por filas y entre corchetes rectos [ ]) : elementos de una fila se separan unos de otros por comas y una
fila de la siguiente por punto y coma.
EJEMPLOS (construcciones elementales de matrices)
>> v=[1,-1,0,sin(2.88)]
>> w=[0;1.003;2;3;4;5*pi]
>> a=[1,2,3,4;5,6,7,8;9,10,11,12]
% matriz 3x4
>> mat=[Hola,Mari;Como,estas?]
Observaciones:
El hecho de que, al introducirlas, se escriban las matrices por filas no significa que internamente,
en la memoria del ordenador, estn as organizadas: en la memoria las matrices se almacenan
como un vector unidimensional ordenadas por columnas, como siempre.
Otras rdenes para crear matrices son:
>> v1=a:h:b %
%
>> v2=a:b
%
>> v3=v2
%
>> v4=v2. %
Se pueden tambin utilizar los vectores/matrices como objetos para construir otras matrices (bloques):
EJEMPLOS (construcciones elementales de matrices)
>> v1=1:4
>> v2=[v1,5;0.1:0.1:0.5]
>> v3=[v2',[11,12,13,14,15]']
MATLAB posee, adems, decenas de funciones tiles para generar distintos tipos de matrices. Para ver una
lista exhaustiva consultar:
Help ! MATLAB
Matrices
FunctionsCategorical
List
Mathematics
Arrays
and
Las siguientes funciones generan vectores de elementos regularmente espaciados, tiles en muchas
circunstancias, especialmente para creacin de grficas.
linspace(a,b,n)
linspace(a,b)
logspace(e,f,n)
logspace(e,f)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
diag(v)
diag(A)
diag(A,k)
blkdiag(A,...,K)
triu(A)
tril(A)
triu(A,k)
tril(A,k)
zeros(n,m)
ones(n,m)
eye(n,m)
reshape(A,n,m)
rand(n)
rand(n,m)
randn(n)
randn(n,m)
compan(p)
magic(n)
pascal(n)
vander(v)
EJEMPLOS
>> A=[eye(2,2),ones(2,3);linspace(1,2,5);zeros(1,5)]
>> w=diag(A)
>> B=reshape(A,5,4)
>> C=diag(diag(A,1))+diag(diag(B, -2),1)
A y B
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
A^k
k./A
A.^k
k.^A
A.*B
A./B
A.^B
La mayora de las funciones MATLAB estn hechas de forma que admiten matrices como argumentos. Esto
se aplica en particular a las funciones matemticas elementales y su utilizacin debe entenderse en el
sentido de "elemento a elemento": si A es una matriz de elementos a ij , exp(A) es otra matriz cuyos
elementos son exp(a ij ). No debe confundirse con la funcin exponencial matricial que, a una matriz
cuadrada A, asocia la suma de la serie exponencial matricial, y que en MATLAB se calcula mediante la
funcin expm.
EJEMPLO (diferencia entre exp y expm)
>> A=[1,0;0,2]
>> B=exp(A)
>> C=expm(A)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
10
Si v es un vector es v i
Si A es una matriz, es a ij
Si A es una matriz, es el k-simo elemento de A, en el orden
en que est almacenada en la memoria (por columnas)
de
elementos
de
una
matriz
El smbolo : (dos puntos) en el lugar de un ndice indica que se toman todos. El smbolo end indica el
ltimo valor del subndice.
EJEMPLOS
>> A(:,2)
% la segunda columna de A
>> A(:,2:end)
>> A(:)
Si B es un vector booleano (sus elementos son true y false, que MATLAB muestra como 1 y 0)
entonces A(B) es la submatriz que se obtiene considerando o no cada elemento en funcin del valor
verdadero o falso del vector booleano:
de
elementos
de
una
matriz
>> v=linspace(1,5,9);
>> b=[true,true,true,false,f alse,true,true,false,false]
b =
1
1
1
0
0
1
1
0
0
>> w=v(b)
Esta sintaxis para designar conjuntos de elementos de un matriz puede usarse tanto para recuperar los
valores que contienen (para, por ejemplo, utilizarlos en una expresin), como para asignarles valores.
Cuando estas expresiones aparecen a la izquierda de un signo igual (es decir, en una instruccin de
asignacin) pueden tener distintos significados:
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
>> A(2,2)=0
>> A(5,2)=1
%
%
%
%
>> A(2:3,1:2)=1
>> A(:,2)=[]
>> A=[A,[1:5]']
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
11
15
grid on
grid off
muestra esconde la cuadrcula
axis on
axis off
axis([x1,x2,y1,y2,z1,z2])
Determina los lmites de la grfica. En grficos bidimensionales no se incluyen z1, z2.
axis auto
impone los lmites establecidos por defecto por MATLAB,
determinados en funcin de los lmites de la grfica actual
Ejemplo:
axis([-10,10,-10,10,0,4])
axis equal
determina los mismos factores de escala para todos los ejes
(esto hara, por ejemplo, que una circunferencia se vea
redonda en vez de elptica...)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
16
Z
Punto de observacin
view(r,e)
en las grficas tridimensionales permite cambiar el punto
de observacin del objeto representado.
Los valores por defecto son r=-37.5, e=30
>> view(10,50)
e
r
shading
determina la forma de utilizar los colores de las
superficies coloreadas:
shading flat
la funcin color es constante a trozos
(en cada segmento o panel)
shading interp
la funcin color es bilineal a trozos
(en cada segmento o panel)
shading faceted (es la opcin por defecto)
la funcin color es constante a trozos
(como en flat), pero adems se superpone
el dibujo de la malla con los segmentos
en negro
hold on
. . .
hold off
figure
figure(h)
gcf
shg
clf
close
close(h)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
17
33
Sentencia IF
En su forma ms simple se escribe en la forma siguiente:
if condicion
sentencias
end
Tambin se puede utilizar en la forma:
if condicion
sentencias-1
else
sentencias-2
end
Su forma ms compleja es:
if condicion-1
sentencias-1
elseif condicion-2
sentencias-2
elseif condicion-3
sentencias-3
else
sentencias-4
end
En estas instrucciones, condicion es una expresin con valor lgico (true o false). Si el valor de
la expresin es una matriz, slo se ejecuta el conjunto de sentencias si todos los elementos son
true (o, igualmente, distintos de cero).
Sentencia SWITCH
Es anloga a un conjunto de if ... elseif concatenados. Su forma general es:
switch expresion
case caso-1
sentencias-1
case caso-2
sentencias-2
case {caso-3, caso-4,caso-5,...}
sentencias-3
otherwise
sentencias-4
end
Aqu, expresion debe tener un valor numrico o de cadena de caracteres.
Ejemplo tonto de uso de SWITCH
%
% Ver ms adelante el uso de las instrucciones input y disp
%
resp=input('escribe un numer o del 0 al 9 :: ');
%
switch resp
case 0
disp('Has escrito 0 (cero)')
case 1
disp('Has escrito 1')
case {2,3,4,5}
disp('Has escrito un numero entre 2 y 5')
otherwise
disp('has escrito un numero mayor que 5')
end;
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
Sentencia FOR
Repite un conjunto de sentencias un numero predeterminado de veces. Su forma general es la
siguiente:
for variable=vector-fila
sentencias
end
Se ejecuta el conjunto de sentencias tantas veces como elementos tenga el vector-fila, y
en cada repeticin, la variable toma el valor del elemento correspondiente. Por ejemplo, se
puede usar en la forma:
for i=1:n
sentencias
end
que ejecutar el conjunto de sentencias n veces, para i=1,2,3,...,n.
En la forma:
for i=n:-1:1
sentencias
end
se ejecuta el conjunto de sentencias tambin n veces, pero en orden inverso: i=n,n-1,...,1.
Sentencia WHILE
Repite la ejecucin de un conjunto de sentencias mientras que una determinada condicin se
verifique. Su forma general es:
while condicion
sentencias
end
Se ejecutar el bloque de sentencias mientras que condicion tome el valor true, o mientras que
condicion sea distinto de cero.
Sentencia CONTINUE
Detiene la ejecucin de la iteracin actual en un bucle for o while y pasa el control a la siguiente
iteracin.
Sentencia BREAK
Detiene completamente la ejecucin de un bucle for o while. Si hay bucles anidados, se detiene
la ejecucin del ms interno.
false
(cero)
Cuando estos operadores se utilizan para comparar dos matrices de las mismas dimensiones, el
resultado es otra matriz de la misma dimensin y la comparacin se realiza elemento a elemento.
Cuando se utilizan para comparar un escalar con una matriz, el resultado es una matriz, y se
compara el escalar con cada uno de los elementos.
==
Igual a
~=
No igual a
<
Menor que
>
Mayor que
<=
>=
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
35
Operadores lgicos
Son operadores que actuan entre valores lgicos:
&
Y lgico
A&B produce los resultados que se reflejan en la tabla
A&B es equivalente a and(A,B)
O lgico
A|B produce los resultados que se reflejan en la tabla
A|B es equivalente a or(A,B)
Negacin lgica
~A produce los resultados que se reflejan en la tabla
~A es equivalente a not(A)
A
T F
T T F
B
F F F
&
A
T F
T T T
B
F T F
|
A
T F
NOT(A) F T
Funcin INPUT
Permite imprimir un mensaje en la linea de comandos y leer datos desde el teclado. La instruccin
>> resp=input(Mensaje que se imprime)
imprime Mensaje que se imprime en una linea de la ventana de comandos y se queda
esperando a que el usuario teclee un valor o una expresin.
Si se teclea un valor (escalar o matricial), MATLAB lo almacena en la variable resp.
Si se teclea una expresin, MATLAB la evalua con los valores actuales de las variables del
Workspace, y el resultado se almacena en la variable resp.
Si en el mensaje se incluye el comando \n, se produce un salto de linea.
Funcin DISP
Permite imprimir en la pantalla un mensaje de texto:
>> disp(Mensaje que se imprime)
Tambin permite imprimir el valor de una variable, sin imprimir su nombre:
>> a=[1,2;3,4];
>> disp(a)
1
2
3
4
Para mezclar texto con el valor numrico de una variable o expresin, hay que transformar el valor
numrico en la cadena de texto equivalente y concatenar las cadenas. Por ejemplo:
>> disp([ 'El numero pi vale : ' , num2str(pi) ])
El numero pi vale : 3.1416
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
36
37
Ejemplo:
>> x=0:pi/100:4*pi;
>>y=sin(x).*cos(x/3);
>> plot(x,y)
Ejemplo:
>> x=0:pi/100:4*pi;
>> y=sin(x).*cos(x/3);
>> z=sin(x).*cos(x/2);
>> plot(x,y,x,z)
Ejemplo:
>> x=0:pi/100:4*pi;
>>A=[sin(x);sin(x/2);sin(x/3);sin(x/4)];
>> plot(x,A)
El comando plot asigna, por defecto, determinados colores a las grficas. Estos colores, as como el
tipo de lnea a utilizar para dibujar (continua, de puntos, con marcadores, etc.) se pueden modificar.
plot(x,y,param)
plot3(x,y,z)
plot3(x,y,z,param)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
mesh(x,y,z)
meshc(x,y,z)
>> [x,y]=meshgrid(xp,yp)
meshgrid(xp,yp)
xp=linspace(pi/4,2*pi,50);
[x,y]=meshgrid(xp,xp);
z=(cos(x)./x).*(sin(y)./sqrt(y));
mesh(x,y,z)
surf(x,y,z)
surfc(x,y,z)
surfl(x,y,z)
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla
38
colormap(m)
permite cambiar el mapa de colores que se utiliza en la
representacin. En general, m es una matriz con tres
columnas, de modo que la i-sima fila determina las
proporciones, en la escala RGB, del i-simo color
utilizado.
39
cool
hot
pink
colorcube
autumn
summer
Rosa Echevarra Lbano Dpto. Ecuaciones Diferenciales y Anlisis Numrico Universidad de Sevilla