Beruflich Dokumente
Kultur Dokumente
Comunicaciones
Digitales
Avanzadas
Jorge Ibaez
Emiliano Bernus
Alfonso Ortega
Manual de MatLab_____________________________________________________________________
NDICE
3....1. INTRODUCCIN.
3....II. COMANDOS BASICOS.
4....III. EL ENTORNO DE PROGRAMACIN.
4..........III.1. INTRODUCCIN DE RDENES.
5..........III.2. VARIABLES DEL ENTORNO Y NMEROS COMPLEJOS.
6....IV. MATRICES.
6..........IV. 1. GENERACIN DE MATRICES.
7..........IV.2. GENERACIN DE VECTORES.
7..........IV.3. ACCESO A BLOQUES DE ELEMENTOS DE UNA MATRIZ.
9..........IV.4. DIMENSIONAMIIIENTO DINAMICO DE MATRICES.
10........IV.5. MATRICES BSICAS.
11...V. ARITMTICA BSICA Y FORMATO NMERICO.
11........V.1. ARITMETICA BSICA.
12........V.2. FORMATO NUMERICO.
13...VI. ARITMETICA MATRICIAL.
15...VII. LGICA.
15.......VII.1. OPERADORES DE RELACIN.
15.......VII.2. OPERACIONES LOGICAS.
16.......VII.3. FUNCIONES LGICAS.
16...VIII. FUNCIONES Y FICHEROS *.m
18...IX. CONTROL DE FLUJO.
18...X. ENTRADA Y SALIDA DE DATOS. FUNCIONES DE TEXTO
19...XI. GRFICOS.
20.........XI.I. GRAFICOS EN DOS DIMENSIONES.
21.........XI.2. GRFICOS EN TRES DIMENSIONES.
Manual de MatLab_____________________________________________________________________
I. INTRODUCCIN
MatLab es un potente entorno de programacin especializado en el campo del
procesamiento de datos. Cuenta con las siguientes capacidades:
- Tratamiento de matrices y vectores
- Nmeros complejos
- Representacin grfica
- Infinito, indeterminaciones
Todo ello permite resolver con facilidad problemas de clculo numrico, estadstica,
procesado digital de seales, simulacin,
Matlab es un entorno de programacin que no permite realizar programas ejecutables,
es decir no es comparable a lenguajes de programacin tipo C o Pascal. El sistema tiene
una ventana de comandos desde la cual se puede ejecutar un comando o bien comenzar
un programa o funcin almacenada en un fichero de texto con extensin .m.
Este sistema es utilizado en diversas asignaturas de Ingeniera de Telecomunicacin
por su fcil aprendizaje y por su versatilidad en multitud de aplicaciones en distintas
reas de dicha ingeniera: procesado de seal en sus mltiples variantes (imagen, audio,
etc.), comunicaciones, etc.
Para cancelar una orden en ejecucin o parar un programa *.m que se ejecuta:
CTRL + C.
Manual de MatLab_____________________________________________________________________
Manual de MatLab_____________________________________________________________________
Si una orden es demasiado extensa para que quepa en una sola lnea, puede continuar en
la siguiente lnea aadiendo al final tres puntos seguidos ...
c=3456.765*87648.56*988476/1234 ...
*345+36737-98734984
c=
8.3731e+013
Manual de MatLab_____________________________________________________________________
Para conocer el contenido de una variable basta con escribir su nombre en la lnea de
comandos y pulsar ENTER.
A veces interesa realizar operaciones en un instante y esperar un tiempo para seguir
utilizando los resultados obtenidos. En estos casos es posible guarda en ficheros las
variables usadas para poder recuperarlas cuando interese:
save + ENTER: almacena en el fichero matlab.mat todas las variables actuales.
save X Y.Z . ..+ENTER: guarda slo las variables X, Y, Z,
save nombrefichero X + ENTER: guarda la variable X en el fichero
nombrefichero.mat
load nombrefichero + ENTER: recupera todas las variables del fichero
nombrefichero.mat.
Los ficheros *.mat son lo ficheros de datos de MatLab y estn escritos en modo binario.
Para Matlab todas sus variables son matrices y los escalares son matrices de 1x1
elementos. Esto permite trabajar con vectores de forma muy sencilla, ya que estos son
matrices de Nx1 elementos. Adems esto implica que todas las operaciones definidas
por Matlab son operaciones entre matrices (incluida la divisin, slo que cuando esta se
ejecuta entre matrices de 1x1 su resultado es equivalente al de una divisin entre
escalares).
Los nmeros complejos son elementos de las matrices con parte real e imaginaria.
Existen varias formas de introducir un nmero complejo:
Por ejemplo: x=13.7 + 5i
x=13.7 + 5j
x=13.7 + 5*sqrt(-1) etc.
En general. >X=Re[x] + Img[x]j i.
IV. MATRICES
IV.1. GENERACIN DE MATRICES
La matriz es el elemento bsico de trabajo en MatLab y es lo que aventaja a MatLab
sobre otros entornos de programacin aplicados a ingeniera. La dimensin de la matriz
no est prefijada de antemano, sino que dinmicamente se ajusta a las necesidades de la
aplicacin a diferencia de lo que sucede en otros lenguajes de aplicacin como el C o
Pascal. Para introducir una matriz MatLab define los siguientes procedimientos:
a) Lista explcita de elementos: los elementos de la matriz se introducen en filas
separados por espacios en blanco (o por comas ','). Las filas se separan mediante punto
y coma, y toda la matriz entre corchetes.
Manual de MatLab_____________________________________________________________________
y representa la matriz
M=
1
{4
7
2
5
8
3
6}
9
logaritmicamente
Manual de MatLab_____________________________________________________________________
B={
6
10
7
11
8
12 }
Cuando la submatriz se extiende a todas las filas o a todas las columnas de la matriz
original, basta con indicarlo mediante el smbolo de los dos puntos ':'.
Por ejemplo: Queremos acceder a las dos primeras filas de la matriz A, es decir,
necesitamos todas las columnas de A. En este caso se escribir:
B=A(l:2, :)
produce la matriz
B ={ 1
2 3
4
5
6
7
8}
Cuando slo queremos acceder a una fila o a una columna de la matriz, se indica slo el
nmero de fila o columna y en el otro lado pondremos los dos puntos.
Por ejemplo: Queremos acceder a la primera columna de la matriz A:
B=A(:, 1)
produce la matriz
1
B={ 5 }
9
c) El ndice de un vector puede ser otro vector. As, x(v) con 'v' vector es [x(v(l))
x(v(2))...x(v(n))]
Manual de MatLab_____________________________________________________________________
Manual de MatLab_____________________________________________________________________
1 2
B ={5
6
9
10
13 14
3 4
a b}
e d
15 16
10
Manual de MatLab_____________________________________________________________________
rand( )
randn( )
eye( )
11
Manual de MatLab_____________________________________________________________________
Muchas de estas funciones pueden aplicarse sobre matrices. Por ejemplo en el caso de
la funcin max, el resultado es el mximo de cada columna. Si queremos el mximo de
toda la matriz debemos ejecutar max(max()).
V.2. FORMATO NUMRICO.
El formato externo de presentacin de datos (internamente, MatLab realiza todos los
clculos en doble precisin), puede elegirse entre los siguientes:
Para la operacin
a=4/3
a) format short (formato por defecto):
1.3333
l.3333E+000
e) format long:
1.333333333333338
l.333333333333338E+000
e) format hex:
3FF5555555555555
f) format +:
+ / - / espacio en blanco
A= 1E+020 *[ 0
1]
MatLab adems permite manejar expresiones simblicas como infinito (Inf) y como
indeterminado (NaN, Not a Number).
IMPORTANTE: No hay que separar con espacio en blanco la base del exponente
puesto que MatLab los reconocera como dos nmeros diferentes.
Por ejemplo: 1.3 e+2 no se entiende como 1300 sino como 1.3 y 100.
Tampoco hay que hay que separar con espacio en blanco la parte real de la imaginara
en los nmeros complejos.
Por ejemplo: 1 + 2i no se entiende como (1+2i) sino como 1+0i y 0+2i.
12
Manual de MatLab_____________________________________________________________________
o B=A.' o transpose( )
13
Manual de MatLab_____________________________________________________________________
e) Potencias:
A^p es la matriz A elevada al escalar 'p'. A debe ser una matriz cuadrada. Si 'p' es
entero positivo, se calcula por multiplicacin repetida. Si 'p' no es entero positivo, se
calcula mediante valores y vectores propios, en la forma:
[V,D]=eig(A)
A^p = V*D.^p/V donde V y D contienen los vectores y valores propios de A
a^P es el escalar 'a' elevado a la matriz P. Se calcula mediante valores y vectores
propios. Para el escalar e=2.718281 est definida la funcin expm(A).
No tiene sentido A^P (matriz A elevada a matriz P).
f) Algunas funciones bsicas sobre matrices.
det(M) produce el determinante de la matriz cuadrada M.
rank(M) halla el rango de la matriz M.
poly(M) produce el polinomio caracteristico de la matriz M:
poly(M) = det(*I - A)
trace(M) produce la traza de la matriz M: suma de los elementos de su diagonal
principal.
rot90(M) produce la rotacin de la matriz M.
flipud(M) produce un giro de 180 en las filas de la matriz M.
fliplr(M) produce un giro de 180 en las columnas de la matriz M.
size(M) da el tamao de la matriz M.
length(A) da el tamao del vector A.
reshape(M, filas, columnas) cambia el tamao de la matriz M a filas x columnas.
En esta ltima funcin el numero de elementos de la matriz inicial y final deben
coincidir.
Para calcular una funcin cualquiera sobre una matriz, aunque no siempre produce
resultados correctos, se usa:
funm(M,'fun') que realiza la funcin `fun' sobre la matriz M.
Adems de expm(M), se encuentran ya implementadas aparte las funciones:
logm(M) produce el logaritmo neperiano de la matriz M.
sqrtm(M) produce la raz cuadrada de la matriz M.
g) Operaciones elemento a elemento.
Realizan operaciones sobre las matrices elemento a elemento en lugar de la operacin
matricial.
14
Manual de MatLab_____________________________________________________________________
16
16 }
A.*B={ 8
8
8
8}
En el caso de elevacin a una potencia, A^.B produce a(i, j) elevado a b(i, j).
Por ejemplo: A=[1 2 3]
2 .^A=[2^1 2^2 2^3]
VII. LGICA.
VIII. OPERACIONES DE RELACIN.
Comparan matrices de la misma dimensin:
menor que
<
mayor
>
igual
==
Si los elementos de una matriz no son unos y ceros, las operaciones lgicas consideran
como uno todos los elementos no nulos. Devuelven una matriz de unos y ceros con el
resultado de la operacin lgica elemento a elemento.
VII.3. FUNCIONES LGICAS.
15
Manual de MatLab_____________________________________________________________________
16
Manual de MatLab_____________________________________________________________________
MatLab vuelve a la lnea de comandos. Para que esta ejecucin se realice es muy
importante que el fichero est en el directorio de trabajo actual de MatLab o en uno de
los directorios del path de MatLab (para incluirlo en dicho path, ver el final de esta
seccin).
Las funciones son ficheros *.m realizados en MatLab y disponibles en el entorno. Se les
pueden pasar varios argumentos y pueden devolver varios resultados. La caracterstica
fundamental de todas las funciones es que NO MODIFICAN los argumentos que se les
pasan. El formato general para invocar una funcin es:
[resl, res2,...]= nombre_funcin (argl, arg2, ...)
Por ejemplo: theta=atan2(y, x)
dos argumentos y un slo resultado
[V, D]=eig(M) un argumento y dos resultados
Para crear una funcin, la primera lnea del fichero nombre_funcin.m debe ser de la
forma:
function var=nombre_funcin(argumentos)
Para obtener ayuda sobre una funcin, introduciendo help nombre_funcin + ENTER
se obtiene por pantalla las lneas de comentario (primer carcter de la lnea %) escritas
justo despus de function.
La variable nargin es una variable global que contiene el nmero de argumentos
suministrados a la funcin. Se accede a ella en la funcin para comprobar que el
nmero de argumentos es correcto. De manera anloga, nargout contiene el nmero de
resultados de salida.
Para obtener el fichero completo de una funcin, type nombre_funcin + ENTER.
Algunas funciones tiles en el desarrollo de las funciones son:
echo produce una salida de cada orden del fichero *.m por pantalla cuando se
ejecuta.
pause( n) espera n segundos hasta que se pulsa una tecla.
Para aadir una funcin al conjunto de funciones propias de MatLab slo hay que
aadirla a uno de los directorios c:\matlab\toolbox\matlab\* ya existentes, o crear un
nuevo directorio y aadirlo al path de bsqueda de funciones de MatLab que est en el
fichero matlabrc.m
17
Manual de MatLab_____________________________________________________________________
18
Manual de MatLab_____________________________________________________________________
Para que un vector de cdigos ASCII se convierta en un vector de texto: setstr( vector)
Para mostrar por pantalla un texto: disp('texto') o disp( s)
Se pueden concatenar varios textos con vectores de texto:
Por ejemplo: si s = `Mat';
s = [ s 'Lat'];
disp( s) produce MatLab
disp(s 'Lab') tambin produce MatLab
Valores numricos se pueden convertir en cadenas de texto mediante las funciones
num2str e int2str
Por ejemplo: f=70;
c=(f-32)/1.8;
disp(['Temperatura: ' num2str(c) ' grados centgrados, ' num2str(f) ' grados
Farenheit'])
Otra forma de aprovechar las cadenas de texto es mediante la funcin eval(texto), que
interpreta el texto como si fuera una instruccin MatLab.
Por ejemplo: Para generar la matriz de Hilbert(n)
t='1/(i+j-1)';
for i=1:n
for j=1: n
a(i,j)=eval (t);
end
end
Por ejemplo: Cargar diez ficheros de datos datal, data2.....data10.
fname='data';
for 1=1:10
eval(['load' fname int2str(i)]);
end
Para comprobar si una variable contiene texto: isstr(var)
Para comparar dos cadenas de texto: strcmp(sl, s2)
Para entrar una seleccin de un men de forma rpida y cmoda usar el comando
menu()
XI. GRFICOS.
MatLab permite crear grficos variados de forma rpida y sencilla. Los grficos son
tratados como ventanas diferentes a la de trabajo, lo que permite tener varios grficos
diferentes a la vez y operar con ellos (almacenarlos en ficheros, imprimirlos ...) de
manera independiente una vez que han sido generados.
19
Manual de MatLab_____________________________________________________________________
20
Manual de MatLab_____________________________________________________________________
plot(exp(v))
Para cambiar el tipo de lnea que exhibe MatLab en sus grficos se utiliza el comando
plot(n, y, s) con 's' una cadena de texto que indica tipo, color, ... del grfico. Entre los
tipos y colores estn:
+, *, :, o, x,-,...
r(rojo), g(verde), b(azul), w(blanco),
Por ejemplo: v=[1 2 1 2 1 2];
plot(v, 'w*') % representa el vector 'v' con lnea de color blanco y
formada por los smbolos *.
g) Para mantener el grfico actual y poder sobreescribir dentro de la misma ventana sin
que se borre el anterior se usa la funcin hold.
Por ejemplo: v=[1 2 3 4 5 4 3 2 1 ];
r=[ 7 8 9 6 7 8 9 4 3];
plot(v);
hold;
plot(r, '*')
Si se quiere quitar la funcin hold de una pantalla grfica, debemos volver a ejecutar el
comando hold. Tambin es posible usar hold on y hold off para activar y desactivar la
opcin.
f) Otro tipo de grficos disponibles son:
polar
grficos en polares
bar
grficos de barras
stairs
grficos apilados
contour
grfico de curvas de nivel tomando eje a como altura
21
Manual de MatLab_____________________________________________________________________
cov
corrcoef
covarianza
coeficientes de correlacin
sum
prod
cumsum
cumprod
sort
hist
polvfit
ordena la matriz
histograma
polinomio de ajuste
Para generar nmeros aleatorios, segn una distribucin normal o uniforme: rand(m, n)
genera una matriz m x n de nmeros aleatorios segn distribucin uniforme y randn(m,
n) genera una matriz m x n de nmeros aleatorios segn distribucin normal.
fft
ifft
fftshift
filter
freqz
crea un filtro a partir de los coeficientes FIR/IIR y filtra los datos dados
devuelve la respuesta frecuencial de un filtro digital
toeplitz
hankel
diff
gradient
del2
lin2mu
mu2lin
thc2thd
thd2thc
22
Manual de MatLab_____________________________________________________________________
trfcont
chol
qr
svd
factorizacin de Cholesky
factorizacin QR
descomposicin de una matriz en su forma cuadrtica Qx Dx Q*, con D
matriz diagonal
inv
pinv
diag
orth/null
matriz inversa
pseudoinversa
matriz diagonal
base ortonormal para el rango de la matriz
tiempo en segundos
tiempo de espera
comienzo de un timer
final y lectura del timer
En MatLab los parmetros de una ventana grfica pueden ser controlados por el
usuario. Para ello MatLab provee una serie de funciones con este cometido.
caxis
axes
cla
gca
reset
moveaxis
23
Manual de MatLab_____________________________________________________________________
hndlaxis
ginput
gtext
getline
getpts
getrect
24