Sei sulla pagina 1di 24

Manual de MatLab

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.

21....APNDICE A. FUNCIONES ESTADSTICAS.


22....APNDICE B. FUNCIONES DE PROCESADO DE SEAL.
23....APNDICE C. FUNCIONES ALGEBRAICAS.
23... APNDICE D. FUNCIONES DE TIEMPO, DE EJES Y DE COMUNICACIN
CON EL RATN

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.

II. COMANDOS BSICOS


MatLab es un entorno que distingue entre maysculas y minsculas. En este texto se
escribirn en negrita los comandos o variables que se introducen por el teclado y en
MAYUSCULAS las teclas que realizan funciones
Para salir de MaLab: quit + ENTER.
Al ser un programa Windows, tambin es posible salir de MatLab como con cualquier
otra programa: desde el menu Archivo(File) o con las teclas ALT+F4.

Para cancelar la instruccin en curso: ESC.

Para cancelar una orden en ejecucin o parar un programa *.m que se ejecuta:
CTRL + C.

Para solicitar ayuda sobre funciones o variables prediseadas de matlab: help +


ENTER.

Para ver el directorio actual e el que nos encontramos: path+ENTER.

Manual de MatLab_____________________________________________________________________

Para cambiar de directorio: cd nuevo_directorio+ENTER.

MatLab es un programa cuya potente funcionalidad se debe a su carcter de


programa abierto. Es posible realizar y utilizar bibliotecas de funciones de forma
muy sencilla. Esto aumenta su potencia, ya que es posible tener bibliotecas de todo
tipo. A cambio, no existe ningn manual que contenga todas las posibles funciones
del programa. Por ello, si se busca alguna funcin que nos ayude con un problema
especfico es posible encontrarla mediante el comando: lookfor problema +
ENTER. El comando lookfor busca aquellas funciones cuyo help tenga contenida la
palabra problema y nos las presenta. Si por ejemplo buscamos funciones que
tengan que ver con matrices, nos bastar poner : lookfor matrix +ENTER.

Para borrar las variables de memoria e inicializar el entorno: clear + ENTER Es


posible borrar una sola variable poniendo clear nombre_variable+ENTER.

Para desactivar la diferencia entre maysculas y minsculas, ejecutar el comando:


casesen+ENTER

Para ejecutar un programa externo desde el entorno MatLab se usa el signo de


admiracin:
!nombreprograma + ENTER

III. EL ENTORNO DE PROGRAMACIN


III.1. INTRODUCCIN DE RDENES.
Cuando se ejecuta MatLab, aparece la ventana de comandos y el smbolo >> que
indica que MatLab se encuentra esperando rdenes. La ventana del programa es una
ventana de modo texto, y aunque podemos desplazarnos con la barra de la ventana
hacia arriba o abajo para recorrer las ordenes anteriores, cuando se pulsa cualquier tecla
se abandona la posicin actual de la ventana y el cursor se posiciona en la ltima lnea
de comandos.
La ventana de comandos permite utilizar las flechas de arriba y abajo para desplazarse
por el histrico de los comandos realizados.
MatLab acepta rdenes desde la lnea de comandos o desde un fichero de rdenes
(*.m); las cuales se ejecutan inmediata y secuencialmente hasta que se encuentra un
error, se alcanza el fin de ejecucin o se para por orden del usuario mediante las teclas
CTRL+C. En caso de error, MatLab indica tanto el tipo de error como su posicin en el
fichero y devuelve el control a la lnea de comandos.
El fichero de comandos es un fichero ASCII y puede generarse con cualquier editor de
textos. Dependiendo de la versin de MatLab, este lleva incorporado un editor de
textos. Si no fuera as un programa sencillo para escribir ficheros *.m es el NOTEPAD
(o Block de Notas) de Windows.

Manual de MatLab_____________________________________________________________________

Todas las sentencias introducidas se ejecutan inmediatamente y el resultado es


presentado por pantalla, tanto si el comando es introducido desde la lnea de comandos
como si lo es desde un archivo. Muchas veces no interesa que el resultado salga por
pantalla. Por ejemplo, imaginemos que se trabaja con matrices de 256 x 256 datos o que
el programa ejecuta doscientos o ms comandos (debido a la velocidad del ordenador y
al pequeo tamao de la pantalla de comandos apenas si da tiempo a ver los resultado),
esto se evita terminando el comando con un punto y coma ;. Esto indica a Matlab que
no debe sacar por pantalla el resultado de dicho comando.
Veamos un pequeo ejemplo:
a=45*45
a=
2025
a=45*45;

Si una orden produce un resultado que no es asignado a una variable, MatLab


automticamente lo asigna a la variable ans (answer).
35*45
ans =
1575
ans
ans =
1575

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

III.2. VARIABLES DEL ENTORNO Y NMEROS COMPLEJOS.


Desde la lnea de comandos se puede obtener informacin acerca del estado de las
variables usadas en ejecuciones anteriores, siempre y cuando no hayan sido borradas
con la funcin clear o no sean variables que estn dentro de una funcin, ya que estas
son slo variables locales que desaparecen una vez acaba la funcin .
who + ENTER: lista los nombres de las variables ya usadas.
whos + ENTER: lista las variables, sus atributos y la memoria total ocupada.

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_____________________________________________________________________

Por ejemplo.: M=[l 2 3; 4 5 6; 7 8 9] es equivalente a M=[1,2,3; 4,5,6; 7,8,9]

y representa la matriz

M=

1
{4
7

2
5
8

3
6}
9

b) Elementos generados por expresiones MatLab.


Por ejemplo: M=[17 sqrt(3) (1+2+3)* (4/5); 4 5 6]
c) Generada en ficheros *.m: se escribe en el fichero *.m la definicin de la matriz
anloga a como se introduce desde la lnea de comando. La ventaja de este
procedimiento es que, si esa matriz se introduce varias veces al tenerla en un fichero no
hace falta reescribirla.
d) Cargada desde ficheros ASCII externos.
IV.2. GENERACIN DE VECTORES
La definicin de vectores es anloga a la las matrices, teniendo en cuenta que los
vectores son matrices de Nx1 o 1xN elementos. Los procedimientos son anlogos a los
explicados en el apartado anterior. Pero adems existe la posibilidad de estos otros
mtodos para casos especficos:
a) Para definir un vector fila con elementos enteros consecutivos:
x =a:b con b>a, genera un vector [a a+1 a+2 ... b-1 b]
b) Si el incremento entre elementos del vector no es la unidad, se especifica entre los
lmites del vector: x= a: i : b
Por ejemplo: x = 1:0.2:2
genera el vector [1 1.2 1.4 1.6 1.8 2]
x = -1:3
genera el vector [-1 0 1 2 3]
x = 5 : -1:1
genera el vector [5 4 3 2 1]
x = 0 : pi/4:pi
genera el vector [0 0.7854 1.5708 3.1416]
c) Se puede especificar el nmero de puntos en lugar del incremento, mediante
linspace(principio, fin, nmero de puntos).
Por ejemplo: x = linspace(-pi, pi. 4) produce el vector
[-3.1416 -1.0472 1.4072 3.14]
Otra funcin similar es logspace() que genera vectores
equiespaciados.

logaritmicamente

IV.3. ACCESO A BLOQUES DE ELEMENTOS DE UNA MATRIZ.


En este apartado se explican varios mtodos para acceder a los elementos de una matriz
definida.

Manual de MatLab_____________________________________________________________________

a) Para acceder a un nico elemento se coloca entre parntesis la posicin de ese


elemento en la matriz, teniendo en cuenta que el primer elemento de una matriz siempre
es el (1.1), no el (0,0), y en la forma (fila, columna).
Por ejemplo:
Continuando con la matriz anterior M=[17 sqrt(3) (1+2+3)* (4/5); 4 5 6]
M( 1, 1 )= 17
M(2, 1)=sqrt(3)
M(0,0) ERROR Index exceeds matrix dimensions.
b) Tambin es posible acceder a un bloque de elementos conexos. Se indica el rango de
filas y de columnas que se desean, para ello se separa mediante dos puntos la
fila/columna inicio de la fila/columna final.
Por ejemplo:
Si se tiene la siguiente matriz A:
1
2
3
4
A= { 5
6
7
8 }
9 10 11 12
y se quiere acceder a la submatriz formada por los elementos 6,7,8,10,11 y 12. Se
consigue mediante la expresin:
B=A(2:3, 2:4)
que produce como resultado la matriz

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_____________________________________________________________________

Se puede acceder a elementos no contiguos de la matriz indicando los ndices mediante


otros vectores:
M(v, w) accede a los elementos m(v(i), w(j))
Por ejemplo: M1(:, [3 5 10]) =M2(:, 1:3) reemplaza las columnas 3, 5 y 10
de M1 con las columnas 1, 2 y 3 de la matriz M2.
d) Se puede transformar una matriz de cualquier dimensin en una matriz columna:
Por ejemplo: Si tenemos la matriz A[1 2; 3 4] entonces
M = A(: ) produce la matriz M = [1; 2; 3; 4]
Tambin se puede mantener la forma de la matriz pero cambiar sus elementos.
Por ejemplo: A(:) = 11:14 produce la matriz de tamao 2x2 A=[11 13; 12 14]
e) Se pueden elegir elementos de una matriz mediante vectores de unos y ceros. La
matriz resultante contiene los elementos cuyos ndices coinciden con los ndices de los
elementos no nulos de los vectores.
Por ejemplo: Si definimos L=[1 1 0] y existe la matriz M definida por :
M=[1 2 3 4; 5 6 7 8; 9 10 11 12]
Entonces
A=M(L, :) produce la matriz A=[1 2 3 4; 5 6 7 8]
La potencialidad de este mtodo de seleccin es mucho mayor de lo que aparenta.
Vemoslo con un ejemplo:
Supongamos que x es un vector y se ejecuta la sentencia x = x(x <= 3*std(x)), este
comando elimina los elementos de x cuyo valor es mayor que 3 veces la desviacin de
todo el vector. La expresin que est entre parntesis (x <= 3*std(x)) es evaluada de
forma lgica (los operadores lgicos se ven con ms detalle en VII) para cada elemento
de x, resultando en una matriz de unos y ceros que indica qu valores de x son
aceptados y qu valores desechados. Vemoslo con otro ejemplo paso a paso:
Supongamos que tenemos la matriz A=[1 2;3 4] y ejecutamos la sentencia A=A(A<3).
Lo primero que MatLab hace es evaluar la expresin A<3, el resultado es una matriz [1
1,0 0] que nos indica que la primera fila sus elementos son menores que 3, mientras que
la segunda fila sus dos elementos no son menores que 3. El siguiente paso que MatLab
realiza es A=A([1 1;0 0]) luego el resultado es A=[1 2]. Es decir se seleccionan solo
aquellos elementos que cumplen la restriccin impuesta.

IV.4. DIMENSIONIENTO DINAMICO DE MATRICES.


Podemos variar el tamao de una matriz ya introducida aadiendo o eliminando
elementos de ella. Para ello se proponen dos mtodos:
a) Aadir el elemento que falta. Los elementos intermedios no definidos, MatLab los
hace nulos por definicin.

Manual de MatLab_____________________________________________________________________

Por ejemplo: Si A[1 2 3] y ejecutamos


A(5)=-A(1)
La nueva matriz es [1 2 3 0 -1]
b) Construir una matriz con otras matrices como elementos. En este caso es muy
importante que las dimensiones de las matrices sean acordes:
Por ejemplo: Si
A=[1 2 3] y
B=[6 7 8]
Aadir columnas:
M=[A B]
produce la matriz M=[1 2 3 6 7 8]
A=[A A B]
produce la matriz A=[1 2 3 1 2 3 6 7 8]
Aadir filas:
M=[A; B; B] produce la matriz
1
2
3
M= { 6
7
8}
6
7
8
Por ejemplo: Si A=[a b; c d] y B=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
Entonces B(2:3,3:4)=A(:, :)
produce la matriz

1 2
B ={5
6
9
10
13 14

3 4
a b}
e d
15 16

Pero si se ejecuta B(1:2,:)=A; el resultado ser un error.


El inconveniente que presenta el dimensionamiento dinmico es su lentitud, puesto que
MatLab debe reservar espacio en memoria para la nueva matriz, copiar todos los
elementos de la matriz antigua y eliminar sta. Por ello, para aumentar la eficiencia de
los programas es conveniente dimensionar todas las variables al inicio del programa a
su mximo tamao. Esto suele hacerse con ayuda de la funcin zeros(M,N), que crea
una matriz de tamao MxN y cuyos elementos son todos ceros.

IV.5. MATRICES BSICAS.


MatLab define varias funciones que permiten crear matrices especiales de forma muy
sencilla. Algunas de stas son:
a) Matrices vacas: una matriz vaca es una matriz de dimensin 0 x 0. Se define x=[ ] .
Su utilidad es eliminar filas o columnas de una matriz.
Por ejemplo: M(:, 1) = [ ] elimina la primera columna de la matriz M (y por lo
tanto cambia su dimensin).
b) zeros( )
ones( )

genera una matriz con todos sus elementos nulos.


genera una matriz con todos sus elementos con valor unidad.

10

Manual de MatLab_____________________________________________________________________

rand( )
randn( )
eye( )

genera una matriz con valor aleatorio distribuido segn distribucin


uniforme.
genera una matriz con valor aleatorio distribuido segn distribucin
normal.
genera la matriz identidad.

V. ARITMTICA BSICA Y FORMATO NUMRICO.


V.1. ARITMTICA BSICA.
El rango de valores que acepta MatLab se extiende desde 10^308 (lase como 10
elevado a 308 ver V.1) hasta 10^-308. El orden de prioridad de las operaciones es el
usual. Los parntesis ( ) se pueden usar para alterar el orden de las operaciones. Las
operaciones bsicas entre matrices que acepta MatLab son:
+
suma
resta
*
multiplicacin
/
divisin
\
divisin inversa:
x/y es equivalente a y\x
^ potencia
rem(dividendo divisor) resto de la divisin entera
Otras operaciones usuales se encuentran definidas como funciones en ficheros *.m
como por ejemplo:
sin
asn sinh asinh seno/arcoseno/seno hiperblico/arcoseno hiperblico
cos acos cosh acosb
coseno...
tan
atan tanh atanh
tangente...
sec sech asec asech
secante...
csc csch acsc acsch
cosecante...
cot coth acot acoth
cotangente...
abs angle real imag
mdulo/fase/parte real/parte imaginaria
sqrt exp log log10 raz cuadrada/exponencial/neperiano/logaritmo decimal
fix
redondeo hacia cero
floor
redondeo hacia menos infinito
ceil
redondeo hacia ms infinito
round
redondeo hacia el entero ms cercano
erf
funcin error
bessel funcin de Bessel
erfc
funcin error complementario
gamma funcin gamma
beta
funcin beta
pow2 potencia de dos
lcm
mnimo comn mltiplo
gcd mximo comn divisor
max
mximo
min mnimo
conj
complejo conjugado
sign signo

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

b) format short e (flotacin cientfica):

l.3333E+000

e) format long:

1.333333333333338

d) format long e (notacin cientfica):

l.333333333333338E+000

e) format hex:

3FF5555555555555

f) format +:

+ / - / espacio en blanco

Format + produce un '+' cuando el elemento es positivo, `-` cuando es negativo, y


espacio en blanco cuando es cero.
Si se quiere poner un nmero muy grande 7E5 es equivalente a 700.000. El E5 significa
105, as 7E5 significa 7*105. Y en negativo lo mismo, 4E-4 es 4*10-4.
Cuando un elemento de la matriz es superior a 1000 o inferior a 0.00 1, se aplica un
factor de escala comn a toda la matriz (salvo en notacin cientfica):
Por ejemplo: A=[1.33 1e20] produce en pantalla

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.

g) format compact: permite visualizar ms elementos de la matriz .

12

Manual de MatLab_____________________________________________________________________

VI. ARITMTICA MATRICIAL


Para trabajar con las matrices MatLab incluye un gran nmero de funciones que
permiten realizar la mayora de las operaciones existentes sobre matrices de forma
rpida y sencilla.
a) Matriz traspuesta y compleja conjugada: ' (apstrofe)
Por ejemplo A= [1 2+3i; 3 4]
B=A' produce B=[1 3; 2-3i 4]
Para vectores fila, su traspuesto produce el vector columna. En general, la traspuesta de
una matriz MxN es una matriz NxM. Para evitar la conjugacin, usar:
B=conj(A')

o B=A.' o transpose( )

b) Adicin y sustraccin de matrices: slo se realiza si ambas matrices tienen las


mismas dimensiones, salvo cuando uno de los elementos a sumar o restar es un escalar,
puesto que entonces ste se suma o se resta a todos los elementos de la matriz:
Por ejemplo: si A=[1 2; 3 4]
A=A+l produce A=[2 3; 4 5]
c) Multiplicacin de matrices: deben coincidir las dimensiones `internas' para que el
producto se realice:
Dimensiones: (M x N) = (M x A) * (A x N)
Un escalar que multiplique a una matriz, multiplica a todos los elementos de la matriz.
d) Divisin de matrices: Slo se puede utilizar con matrices no singulares. Hay dos
formas:
x=B/A equivale a x=B*inv(A). Es la solucin de x*A=B
x=A\B equivale a x=inv(A)*B. Es la solucin de A*x=B
As pues, no existe divisin sino resolucin de los sistemas de ecuaciones antes
expuestos. Es posible, por lo tanto, realizar la divisin de dos vectores:
Por ejemplo: A=[1 2 3]
B=[2 4 6]
A/B=0.5
0 0 0
A\B={ 0 0 0 }
2/3 4/3 2
Una mayor informacin al respecto puede encontrarse en cualquier libro de lgebra
avanzada.

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_____________________________________________________________________

Se construyen aadiendo un punto antes de la operacin equivalente matricial. Las


operaciones de adicin y substraccin son las mismas en formato matricial que
elemento a elemento.
Por ejemplo: multiplicacin de dos matrices elemento a elemento (deben tener
las mismas dimensiones):
A= 2
2
B= 4 4
2
2
4
4
A*B= {16
16

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

menor o igual que <=


mayor o igual que >=
distinto
~= (~ ALT 126)

El resultado es una matriz de unos y ceros con los resultados de la comparacin


elemento a elemento. Si el resultado de la operacin de comparacin es cierto, el
resultado es uno. Si es falso, cero. Por lo tanto, se pueden construir operaciones
aritmticas que incluyan el resultado de operaciones lgicas.
Por ejemplo: Si A=[0 3 -1]
M=(rem(A,3)= =0)
produce M=[l 1 0]

VII.2. OPERACIONES LGICAS.


Trabajan sobre matrices de las misma dimensin cuyos elementos son unos y ceros:
AND &
OR
| (ALTGR + 1)
NOT ~ (ALT 126)
XOR xor (A,B)

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_____________________________________________________________________

Son un conjunto de funciones relacionadas con las operaciones lgicas.


any(M) devuelve un uno si alguno de los elementos de M es no nulo.
Por ejemplo: A=[0 0 1]
any(A) = 1
Si M es una matriz, any() devuelve un vector con el resultado para cada columna de M.
1
0
0
Por ejemplo:: M={ 2
0
-l }
0
0
0
any(M)=[1 0 1]
all(M) devuelve uno si todos los elementos de M son no nulos. Para matrices, se
comporta igual que la funcin any().
Utilizando recursivamente estas funciones, puede obtenerse una nica condicin
escalar.
1
0
0
Por ejemplo: Si M= {2 0 -1}
0
0
0
any(any(M)) = 1
Otras funciones de similares caractersticas:
find(M) devuelve los ndices de los elementos no nulos
isnan(x) devuelve uno cuando x= NaN
finite(x) devuelve uno cuando x es finito
isempty(M) detecta matrices vacas
exist(var) comprueba si una variable ya existe

VIII. FUNCIONES Y FICHEROS * .m.


MatLab es capaz de ejecutar secuencias amplas de rdenes almacenadas en un fichero
de texto (*.m) Este fichero contiene una secuencia de rdenes MatLab tal y como si las
introdujramos por la lnea de comandos. Un fichero *.m puede incluir llamadas a
otros ficheros *.m y a s mismo recursivamente. Los ficheros *.m pueden ser simples
secuencias de rdenes o pueden estructurarse como funciones.
Para introducir comentarios en un fichero *.m se inserta el smbolo % al principio de la
lnea, a partir de este smbolo todo lo que se escriba se considerara comentarios.
Para ejecutar un fichero denominado nombre_programa.m, se escribe en la lnea de
comando nombre_programa + ENTER. En ese momento MatLab comienza a ejecutar
los comandos. Despus de completar la ejecucin de las rdenes del fichero *.m,

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

IX. CONTROL DE FLUJO.

17

Manual de MatLab_____________________________________________________________________

Para que MatLab pueda comportarse como un lenguaje de programacin es necesario


que contemple algunas funciones de control de flujo. Estas son:
a) Bucles for:
for contador = valor inicial incremento valor final
secuencia de instrucciones
end
el incremento es opcional y su valor por defecto es uno
b) Bucles while:
while condicin ,
secuencia de instrucciones
end
c) If y Break:
if condicin
secuencia de instrucciones
elseif condicin
secuencia de instrucciones
else
secuencia de instrucciones
end
elseif y else son opcionales.
break produce la salida del bucle while/for en el que se encuentre. Si hay
varios bucles anidados, son necesarios varios break.

X. ENTRADA Y SALIDA DE DATOS. FUNCIONES DE TEXTO


MatLab permite interactuar con el usuario de muchas y variadas formas: teclado,
mens, ratn, etc. En este apartado vamos a ver los sistemas ms bsicos y comunes de
introduccin de parmetros.
Para obtener datos desde el teclado cuando un programa se est ejecutando:
var = input('texto')
con texto opcional, escribe texto por pantalla y lee del teclado el valor para la variable
var.
Para asignar una cadena de texto a una variable ste se escribe entre comillas:
Por ejemplo: s = `Texto'
Cada letra del texto ocupa una posicin del vector 's' y se almacena su cdigo ASCII.
Para acceder a los valores ASCII: abs( s).

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_____________________________________________________________________

XI.1. GRFICOS EN DOS DIMENSIONES


a) plot(x) es la instruccin ms sencilla; presenta los elementos del vector 'x' ordenados
segn el ndice de cada elemento. Realiza un autoescalado de los ejes del grfico.
Por ejemplo: v=1:l0;
plot(v)
plot(n, v) presenta el vector 'v' en el eje vertical con el vector 'n' en el horizontal.
Ambos vectores deben tener el mismo tamao.
Por ejemplo: t=0.1:0.l:l;
x=sin( 10*t);
plot(t, x)
plot( M) presenta cada columna de la matriz respecto a su ndice.
Por ejemplo: M=[1 2 3;4 5 6;7 8 9]
plot(M)
plot(M1, M2) presenta las columnas de M2 segn las columnas de M1.
Si los elementos del vector 'v' son complejos, plot( y) es equivalente a plot(real( v),
imag( v))
Para presentar varios vectores a la vez en el mismo grfico: plot(n1, v1, n2, v2...) . Los
pares de vectores pueden tener diferente longitud en este caso.
b) semilogy presenta los grficos como plot pero con el eje y en escala logartmica
semilog presenta los grficos como plot pero con el eje x en escala logartmica
loglog presenta los grficos como plot pero con los ejes x e y en escala
logartmica
c) grid
aade cuadrcula al grfico
xlabel(' texto')/ ylabel e zlabel aade texto como titulo del eje x / y /z
title(' texto') aade texto como ttulo del grfico
clf
limpia la pantalla de grficos
axis
permite controlar de forma manual el escalado de los ejes
d) Para crear ventanas distintas para cada grfico: figure( numero_ventana )
selecciona la ventana deseada o la crea si no existe.
e) Para generar varios grficos dentro de la misma ventana, sta puede dividirse en dos,
tres o cuatro subgrficos mediante la orden subplot(m, n, p); que divide la pantalla en
una `matriz' m x n y selecciona el subgrfico nmero 'p', contando de arriba a abajo y
de izquierda a derecha. La orden plot siguiente escribir en ese subgrfico.
Por ejemplo:: v=[l 2 3];
subplot(2 2 3);
plot(v);
subplot(2,2,4);

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

XI.2. GRFICOS EN TRES DIMENSIONES.


plot3
mesh
waterfall

idntica a plot pero en tres dimensiones


genera una superficie tridimensional
idntica a mesh pero produciendo un efecto de cascada de agua

APNDICE A. FUNCIONES ESTADSTICAS


Cuando se guardan datos en formato matricial, es usual colocar las variables en fila y
las diferentes muestras de una misma variable en una columna. Por ello, la mayor parte
de las funciones estadsticas estn orientadas a trabajar sobre las columnas de la matriz.
max
min
mean
median
std

mximo de cada columna de una matriz


mnimo de cada columna de una matriz
valor medio de cada columna
valor mediano de cada columna
desviacin estndar

21

Manual de MatLab_____________________________________________________________________

cov
corrcoef

covarianza
coeficientes de correlacin

sum
prod
cumsum
cumprod

suma de los elementos


producto de los elementos
matriz de las sumas acumuladas en cada columna
productos acumulados

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.

APNDICE B. FUNCIONES DE PROCESADO DE SEAL


Un polinomio se representa como un vector cuyos elementos son los coeficientes del
polinomio ordenados de mayor a menor potencia:
Pol= [coef.grado_n coef.grado n-1....coef.grado_0]
conv
deconv
residuc
polyval
polyder

convolucin / multiplicacin de polinomios


deconvolucin / divisin de polinomios
calculo los polos. residuos y trminos directos del cociente de 2
polinomios
evaluacin de un polinomio en un punto.
derivada del polinomio

fft
ifft
fftshift

transformada rpida de Fourier


transformada inversa
centra el origen al presentar un grfico

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

genera una matriz Toeplizt


genera una matriz Hankel

diff
gradient
del2

diferencias finitas(permite calcular derivadas)


gradiente (aproximado)
Laplaciana discreta (5 puntos)

lin2mu
mu2lin
thc2thd
thd2thc

comprime sonido segn ley


descomprime sonido segn ley
convierte un modelo de tiempo continuo en otro discreto.
convierte un modelo discreto en continuo

22

Manual de MatLab_____________________________________________________________________

trfcont

computa la funcin de transferencia continua de un modelo.

APNDICE C. FUNCIONES ALGEBRAICAS.


det
roots
poly
eig
norm
rank
cond
lu
triu
tril

determinante de una matriz


calcula races de un polinomio
calcula el polinomio caracterstico de una matriz
valores y vectores propios
norma
rango
condicin
factorizacin LU de una matriz
matriz triangular superior
matriz triangular inferior

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

APNDICE D. FUNCIONES DE TIEMPO, DE EJES Y DE


COMUNICACIN CON EL RATN
cputime
etime
tic
toc

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

escalado de ejes con pseudocolor


crea unos ejes en posiciones arbitrarias.
limpia los ejes.
consigue un handle al sistema de ejes actual.
limpia una figura o sistema de ejes actuales.
se usa para guardar y mover leyendas y ejes.

23

Manual de MatLab_____________________________________________________________________

hndlaxis

comando de demostracin de las posibilidades de los ejes en MatLab.

ginput
gtext
getline
getpts
getrect

Introduccin de elementos grficos con el ratn.


posiciona texto en un grfico 2-D segn le indica el ratn.
seguimiento del movimiento del ratn con una lnea.
seguimiento del ratn con puntos visibles
seguimiento del ratn con un rectngulo

24

Potrebbero piacerti anche