Está en la página 1de 33

LABORATORIO

DE
ANLISIS Y SNTESIS DE CIRCUITOS
PRCTICA 0: INTRODUCCIN A MATLAB


NDICE
1. Introduccin. ................................................................................................. 1
1.1 Qu es MATLAB?.............................................................................. 1
1.2 La ayuda de MATLAB. El comando help. ........................................... 2
2. Entorno de desarrollo. ................................................................................... 3
2.1 Iniciando y cerrando MATLAB. .......................................................... 3
2.2 El escritorio de MATLAB. ................................................................... 3
2.2.1 Herramientas del escritorio. .............................................................. 3
2.2.2 Otras caractersticas del entorno de desarrollo. ................................ 3
3. Trabajo con matrices..................................................................................... 4
3.1 Creacin de una matriz. ........................................................................ 4
3.2 El espacio de trabajo. ............................................................................ 5
3.3 Manejo de matrices. .............................................................................. 6
3.3.1 Utilizacin de subndices. ................................................................. 6
3.3.2 El operador :. .................................................................................. 7
3.4 Nmeros y expresiones. ........................................................................ 9
3.4.1 Variables ........................................................................................... 9
3.4.2 Nmeros............................................................................................ 9
3.4.3 Infinito y NaN. .............................................................................. 9
3.4.4 Operadores ........................................................................................ 9
3.4.5 Formatos de salida. ......................................................................... 10
3.5 Operaciones con matrices ................................................................... 11
3.5.1 Operaciones matriciales. ................................................................. 11
3.5.2 Funciones matriciales. .................................................................... 13
3.5.3 Operaciones en array. ..................................................................... 14
3.5.4 Ejemplos de expresiones y operaciones.......................................... 17
4. Grficos....................................................................................................... 21
4.1 Grficos bsicos. ................................................................................. 21
4.2 Edicin de dibujos. ............................................................................. 25
4.3 Imgenes. ............................................................................................ 25
5. Programacin en MATLAB ....................................................................... 27
5.1 Control de flujo. .................................................................................. 27
5.2 Scripts (Procedimientos) y funciones. ................................................ 28
5.2.1 Procedimientos................................................................................ 28
5.2.2 Funciones ........................................................................................ 29
Introduccin a MATLAB

1


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

1. Introduccin.
El presente documento pretende dar una visin general de las posibilidades que
ofrece el entorno de trabajo MATLAB 6.1-Release 12.1. Se recomienda consultar la
ayuda del entorno tantas veces como sea preciso. El dominio de la herramienta slo
puede conseguirse mediante el desarrollo de programas, cada vez de mayor entidad,
como los propuestos a lo largo del cuatrimestre. Vamos a hacer un repaso general de los
conceptos fundamentales insistiendo en la necesidad de que cada uno profundice en
cada tema en funcin de sus conocimientos previos y necesidades particulares.
1.1 Qu es MATLAB?
MATLAB es un paquete de software interactivo altamente especializado para
realizar clculos cientficos y de ingeniera. Integra anlisis numrico, clculo matricial,
procesado de seales y herramientas grficas en un medio de fcil uso, donde los
problemas y las soluciones se expresan del mismo modo que se plantean
matemticamente.
El elemento bsico de trabajo es la matriz, que no requiere dimensionamiento
previo ni ningn tipo de definicin. La sencillez de este planteamiento facilita la
resolucin de problemas que en otros entornos de trabajo resultan ms complejos. La
sencillez con la que se manejan las matrices en este entorno hace que sea especialmente
til en tareas de procesado de seal.
Aunque el hecho de trabajar con matrices puede parecer un inconveniente, esta
filosofa permite resolver muchos problemas numricos de un modo mucho ms rpido
que la ejecucin de un programa en un lenguaje tal como Fortran, Pascal o C. A
continuacin se muestra un ejemplo sencillo que pone de manifiesto la afirmacin
anterior. Escribamos un programa que calcule el seno de cuatro ngulos expresados en
radianes: 1, 2, 3 y 4 rad.
MATLAB FORTRAN
RAD = [1 2 3 4]
SENO = sin(RAD)
REAL RAD(4), SENO(4)
DO 100 I = 1,4
SENO(I) = SIN(RAD(I))
100 CONTINUE
WRITE(6,(4F10.4)) SENO

En MATLAB basta con crear un vector, RAD, que contenga los ngulos
considerados mediante la asignacin:
RAD = [1 2 3 4]
y utilizar la funcin sin( ) que evala el seno de cada uno de los elementos de la matriz
introducida como parmetro ( en este caso el vector RAD). El resultado se almacena en
la variable SENO, que es un vector de las mismas dimensiones que RAD y cuyos
elementos son los senos calculados. El resultado se ver automticamente en la ventana
de comandos.
Introduccin a MATLAB

2


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

MATLAB ofrece, adems, una amplia variedad de funciones agrupadas en
toolboxes que facilitan el trabajo en cualquier campo cientfico. En este laboratorio
usaremos uno de esos toolboxes, el conocido como Signal Processing toolbox, que
engloba, entre otras, varias funciones de diseo y uso de filtros.
Adems, debido a su enorme difusin en el mbito universitario, se pueden
encontrar aplicaciones desarrolladas en este entorno de trabajo que podremos adaptar a
nuestra necesidades.
1.2 La ayuda de MATLAB. El comando help.
El entorno de MATLAB dispone de abundante documentacin y ayuda on-line,
que le prestar toda la informacin disponible relacionada con cada comando o funcin.
La ayuda bsica de MATLAB se obtiene mediante el comando help. Este
comando proporciona informacin sobre mltiples temas relacionados con MATLAB.
Si escribimos help obtendremos una lista en la que aparecen nombres de directorios con
una descripcin del tipo de funciones que engloba cada uno de ellos.
Para obtener informacin sobre uno de estos temas o funciones concretas,
debemos emplear help seguido del nombre del tema que nos interesa. Por ejemplo, aqu
vemos cmo obtener informacin sobre la funcin sqrt( ) (raz cuadrada).
>> help sqrt
SQRT Square root.
SQRT(X) is the square root of the elements of X. Complex
results are produced if X is not positive.

See also SQRTM.

Overloaded methods
help sym/sqrt.m
Cuando no se conoce el nombre de las funciones de las que dispone MATLAB
en relacin con un tema en concreto, puede emplearse el comando lookfor. Por ejemplo,
lookfor poly (de polynomial, polinomio) devuelve una lista de todas las funciones que
tratan con polinomios ( muestra las funciones que tienen alguna palabra que empieza
por poly en la primera lnea de comentario).
Introduccin a MATLAB

3


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

2. Entorno de desarrollo.
Este segundo punto no es ms que una breve introduccin a MATLAB que
permite conocer como iniciar y cerrar una sesin de MATLAB as como empezar a
descubrir las herramientas y funciones ms importantes de la herramienta.
2.1 Iniciando y cerrando MATLAB.
Para arrancar MATLAB bajo un entorno Windows, basta con localizar el icono
de MATLAB dentro del submen Programas del men Inicio, o hacer doble click en un
icono de acceso directo a la aplicacin. Para cerrar la aplicacin, basta con teclear el
comando quit o exit desde la lnea de comandos o buscar la opcin EXIT MATLAB en
el men FILE.
2.2 El escritorio de MATLAB.
Una vez iniciado el programa aparece el escritorio de MATLAB, cuya
apariencia puede modificarse abriendo y cerrando las distintas herramientas. En la
opcin VIEW podr seleccionar las ventanas que desee tener abiertas.
2.2.1 Herramientas del escritorio.
Ventana de comandos: sirve para ejecutar comandos e invocar funciones y
ficheros *.m
Histrico de comandos: recoge las ltimas instrucciones.
Launch Pad: proporciona acceso a herramientas, demos y documentacin.
Help Browser: facilita la bsqueda de documentacin.
Current Directory Browser: permite seleccionar el directorio actual en el
que estn las funciones que pueden invocarse en cada momento.
Worksapace Browser: en el que se almacenan las variables empleadas en
una sesin.
Editor/Debugger: para crear y depurar ficheros .m y funciones.
2.2.2 Otras caractersticas del entorno de desarrollo.
Existe adems la posibilidad de importar/exportar variables del workspace de/a
otras aplicaciones.
Del mismo modo, existen herramientas para depurar (debugger) las prestaciones
de los ficheros de MATLAB.
Introduccin a MATLAB

4


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

3. Trabajo con matrices.
Ya se ha comentado que el elemento bsico de MATLAB es la matriz, siendo
los vectores y los escalares casos particulares de matrices. A continuacin se va a
mostrar los resultados de realizar operaciones bsicas con matrices desde la lnea de
comandos de la aplicacin.
Una instruccin comienza junto al prompt de MATLAB >> y termina cuando
se pulsa Enter. Si no quiere visualizar el resultado de una instruccin, termnela en
punto y coma. Los comentarios a una instruccin se aaden a continuacin, detrs del
smbolo %.
3.1 Creacin de una matriz.
Para crear matrices en MATLAB se introducen los elementos de las filas
separados por espacios o comas y cada fila se separa de las anteriores mediante punto y
coma o retorno de carro. Todo esto se cierra mediante el uso de corchetes.
>> A=[16,3 2,13; 5 10 11 8; 9 6 7 12; 4,15 14 1] % Definicin de una matriz.
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
La matriz A permanece en memoria y estar disponible en el espacio de trabajo
hasta que se borre o modifique explcitamente. Por tanto, podemos seguir realizando
operaciones sobre ella.
En MATLAB, adems, existen funciones que devuelven como resultado
matrices. Por ejemplo, la funcin zeros( ) genera una matriz con todos sus elementos
iguales a cero. Las dimensiones de la matriz son las especificadas como argumentos.
As podemos crear una matriz nula, CEROS, de una fila y tres columnas con la
asignacin:
>> CEROS = zeros(1,3)
CEROS =
0 0 0
Para finalizar, debemos comentar que se pueden construir matrices grandes
usando otras ms pequeas. Por ejemplo, podramos aadir otra fila a nuestra matriz A
con
>> r = [45 50 55 25];
>> A = [A;r]
Introduccin a MATLAB

5


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
45 50 55 25
o bien, aadirle otra columna. En este caso r' es la traspuesta de r.
>> r=[r, 15], A = [A, r]
A =
16 3 2 13 45
5 10 11 8 50
9 6 7 12 55
4 15 14 1 25
45 50 55 25 15
3.2 El espacio de trabajo.
Podemos ver las variables que hemos creado en cada momento y acceder a ellas
o guardarlas par futuras sesiones. Todas las variables que estemos utilizando o hemos
utilizado forman parte de lo que llamamos entorno de trabajo.
Para conocer las variables del entorno que hemos creado podemos utilizar
alguno de los siguientes comandos.
>> who % Lista las variables en uso
>> A=123; % Definimos una nueva variable
>> who
Your variables are:
A
>> whos % Listado de variables con informacin complementaria
Name Size Bytes Class
A 1x1 8 double array
Grand total is 1 elements using 8 bytes
Podemos borrar variables del entorno mediante el uso del comando clear.
>> clear % Borra todas las variables en uso CUIDADO!!!
Introduccin a MATLAB

6


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> B= A % Creamos la variable B
>> clear B % Borramos la variable B.
Para guardar y recuperar datos, emplee las funciones save y load que trabajan
con fichero *.mat.
>> save guardar % Creacin de un fichero
>> clear % Borramos variables
>> who % Comprobamos que no hay variables.
>> load guardar % Recuperamos los datos del fichero.
>> who % Comprobamos la recuperacin
Your variables are:
A
Para evitar que se represente por pantalla el resultado de la evaluacin de una
expresin, hay que terminar sta en ;
>> A=magic(100) % Salida indeseada por pantalla
>> A=magic(100); % Evitamos dicha salida
Si un sentencia no cabe en una lnea, podemos emplear los tres puntos ...
seguidos de ENTER para indicar que la sentencia contina en la lnea siguiente.
Emplee las flechas y para recuperar y moverse por las lneas editadas
anteriormente desde la lnea de comandos.
3.3 Manejo de matrices.
MATLAB permite manejar de una forma muy sencilla los elementos de las
matrices sobre las que trabaja, usando la tpica notacin (n de fila, n de columna). En
el presente apartado vamos a ver cmo se puede utilizar esta notacin y prestaremos
especial atencin al operador :, que permite referenciar de una forma rpida cualquier
grupo de elementos de una matriz, as como crear vectores de una manera muy sencilla.
3.3.1 Utilizacin de subndices.
Podemos acceder a un elemento de una matriz utilizando la siguiente notacin:
nombre_matriz(n de fila,n de columna)
Si estamos trabajando con la matriz A, obtendremos el tercer elemento de la
primera fila mediante la expresin:
>> A=[16,3 2,13; 5 10 11 8; 9 6 7 12; 4,15 14 1] % Definicin de la matriz A.
Introduccin a MATLAB

7


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
>> elemento=A(1,3) % Acceso a un elemento
elemento =
2
Trabajando con vectores, basta con especificar el nmero de la fila o de la
columna segn se trate de un vector columna o fila, respectivamente. Si se considera el
vector X=[1 3 5 7], la expresin Y = X(3) asignar a la variable Y el valor 5.
3.3.2 El operador :.
Este operador permite generar vectores de un modo muy sencillo. La declaracin
X = 1:8 crea un vector X cuyos elementos son los nmeros enteros comprendidos entre
el 1 y el 8 (ambos inclusive), es decir:
>> X = 1:8
X =
1 2 3 4 5 6 7 8
La expresin X = 1:2:8, crea un vector con los nmeros comprendidos entre 1 y
8 en pasos de 2.
>> X = 1:2:8
X =
1 3 5 7
El incremento puede ser cualquier nmero (no necesariamente un entero
positivo) como se indica en los siguientes ejemplos:
>> X = 1:0.2:2
X =
1.0000 1.2000 1.4000 1.6000 1.8000 2.0000
>> X = 8:-1:1
X =
8 7 6 5 4 3 2 1
Introduccin a MATLAB

8


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

Si utilizamos los dos puntos para elaborar subndices, podremos extraer
fcilmente cualquier conjunto de elementos de una matriz dada. Vamos a ver unos
ejemplos de extraccin de submatrices:
La expresin B = A(1,1:3), permite obtener la matriz formada por los
elementos de A de la primera fila que estn en las tres primeras columnas.
B =
16 3 2
De forma anloga, B = A(1:2,2) toma los elementos de las dos primeras filas
que ocupan la segunda columna.
B =
3
10
El operador : por s solo hace referencia a todas las filas o a todas las
columnas de la matriz. B = A(: ,2) asigna a B la segunda columna de A.
B =
3
10
6
15
Una asignacin como B = A(:), dispondr todos los elementos de A como un
vector columna.
B =
16
5
9
4
3
10
6
15
2
11
7
14
13
8
12
1
Introduccin a MATLAB

9


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

3.4 Nmeros y expresiones.
3.4.1 Variables
MATLAB no precisa la definicin previa de una variable, queda definida en el
momento que se declara.
>> nueva_variable=45 % Definicin de una nueva variable
nueva_variable = 45
3.4.2 Nmeros
MATLAB soporta notacin tradicional y cientfica. La parte imaginaria de los
nmeros complejos viene precedida de la letra i o j que representa la unidad imaginaria.
Algunos ejemplos de nmeros:
3.0000 + 7.0000i
1.2000e+013
-125
3.4.3 Infinito y NaN.
La divisin por cero no conduce a una condicin de error o al trmino de la
ejecucin, sino que produce un mensaje de advertencia (Warning) y un valor especial
(infinito) que puede comportarse de formas muy distintas a lo largo de la ejecucin. Por
ejemplo
>> s=1/0
Warning: Divide by zero.
s =
Inf
El valor NaN ("Not a Number") aparece como resultado de expresiones
indefinidas como Inf/Inf 0/0. MATLAB propaga los resultados NaN a lo largo de un
clculo hasta el final. Es decir, si se emplea un NaN en una operacin intermedia de la
que dependa el resultado final, ste ser NaN.
3.4.4 Operadores
Las expresiones matemticas se construyen usando los operadores aritmticos y
normas de prioridad usuales, sin olvidar que se trata de operaciones matriciales (los
operandos siempre son matrices).
Introduccin a MATLAB

10


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

+ Suma
- Resta
* Multiplicacin
/ Divisin por la derecha
\ Divisin por la izquierda
^ Potencia
Como puede observarse en la tabla anterior, hay dos signos de divisin (por la
derecha y por la izquierda). Todas estas operaciones se describirn ms detalladamente
en un apartado posterior.
3.4.5 Formatos de salida.
En lo que se refiere al formato en que si pueden presenta los datos, se muestran a
continuacin algunas posibilidades.
>> format short
>> x=[4/3 1.2345e-6]
x =
1.3333 0.0000
>> format short e
x =
1.3333e+000 1.2345e-006
>> format short g
x =
1.3333 1.2345e-006
>> format long
x =
1.33333333333333 0.00000123450000
>> format long e
x =
1.333333333333333e+000 1.234500000000000e-006
>> format long g
Introduccin a MATLAB

11


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

x =
1.33333333333333 1.2345e-006
>> format bank
x =
1.33 0.00
>> format rat
x =
4/3 1/810045
>> format hex
x =
3ff5555555555555 3eb4b6231abfd271
3.5 Operaciones con matrices
Es posible trabajar con las matrices de dos formas diferentes:
Considerando cada matriz como una entidad matemtica sobre la que se aplica
el lgebra matricial.
Bien, tratndola como un conjunto de elementos sobre cada uno de los cuales
se aplican las operaciones y las funciones de forma independiente.
MATLAB distingue claramente las operaciones y las funciones que operan
sobre la matriz como entidad, de las actan sobre cada uno de sus elementos.
Llamaremos a las primeras operaciones y funciones matriciales y a las segundas
operaciones y funciones en array.
3.5.1 Operaciones matriciales.
Matriz traspuesta.
El apstrofe () es el operador que emplea MATLAB para calcular la matriz
traspuesta de una dada. Al hacer la traspuesta se cambian las filas por columnas y
viceversa.
>> A = [ 2 4 6 8 10;5 10 15 10 5 ]
>> B = A
Introduccin a MATLAB

12


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

B =
2 5
4 10
6 15
8 10
10 5
Se ha de tener un cuidado especial cuando se trabaja con matrices complejas,
porque en estos casos el operador devuelve la traspuesta de la matriz conjugada.
Suma y resta.
Dadas dos matrices A y B de iguales dimensiones:
A = [ 2 4 6 8 10; 5 10 15 10 5 ] B = [ 3 5 7 9 11; 2 3 4 5 6]
>>C = A+B % Se obtiene su matriz suma, C
C =
5 9 13 17 21
7 13 19 15 11
De forma anloga, D = A-B calcular la matriz diferencia.
Si uno de los operandos es un escalar, ste se sumar o restar a cada uno de los
elementos del otro operando. Por ejemplo:
>> D = A + 3
D =
5 7 9 11 13
8 13 18 13 8
Multiplicacin.
Esta operacin est definida siempre que el nmero de columnas del primer
operando sea igual al nmero de filas del segundo. Si reconsideramos las matrices A y
B del punto anterior:
>> C =A * B
C =
250 140
315 180
En el caso de que uno de los operandos sea un escalar, se multiplicar cada uno
de los elementos de la matriz por el escalar.
Introduccin a MATLAB

13


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

Divisin.
Como ya se indic anteriormente, hay dos operaciones de divisin: por la
derecha (/) y por la izquierda (\). En ambos casos la operacin es equivalente a la
resolucin de un sistema de ecuaciones:
o X = A \ B A * X = B donde X es la matriz de las incgnitas y A es la de
coeficientes.
o Y = A / B Y * B = A. Ahora B es la matriz de los coeficientes y multiplica
por la derecha a las incgnitas, Y.
Potenciacin.
La potenciacin ( ^) slo est definida cuando uno de los operadores es un
escalar, p, y el otro es una matriz cuadrada, A. Segn la sintaxis y el valor de p, la
operacin tiene diferentes significados, de los cuales, el ms utilizado en las cuestiones
prcticas de inters es el siguiente: Dada una matriz cuadrada, A, y un entero p = 3 ( p
> 1), la expresin A^p equivale a A*A*A. Por ejemplo:
>> A = [ 2 4; 6 8 ], A^p
ans =
296 432
648 944
3.5.2 Funciones matriciales.
Funciones elementales.
poly(A): Calcula el polinomio caracterstico de la matriz A.
det(A): Determinante de A (debe ser una matriz cuadrada).
trace(A): Traza de A (suma de los elementos de la diagonal).
size(A): Dimensiones de la matriz A.
length(A): Longitud del vector A.
Funciones orientadas a columna.
A continuacin se listan una serie de funciones que se caracterizan por actuar
sobre los elementos de un vector o sobre cada una de las columnas de una matriz:
sum(A): Si A es un vector, calcula la suma de todos los elementos de A y si es
una matriz devuelve un vector cuyos elementos son la suma de cada una de las
columnas de A.
Introduccin a MATLAB

14


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

mean(A):Calcula la media de los elementos del vector A o de las columnas de
la matriz A.
max(A): Si A es un vector busca el valor mximo de sus elementos y si A es una
matriz, el resultado ser un vector con los valores mximos de cada columna de A.
min(A): Funciona de forma anloga a max() pero obtiene los valores mnimos
Generacin de matrices.
Hay un conjunto de funciones capaces de generar diferentes tipos de matrices
dadas unas dimensiones. Algunas de ellas son:
zeros( ): Matriz nula.
ones( ): Matriz con todos sus elementos igual a 1.
rand( ): Matriz con valores aleatorios distribuidos con una funcin densidad de
probabilidad uniforme.
randn( ): Matriz con valores aleatorios distribuidos con una funcin densidad
de probabilidad gaussiana.
El argumento de estas funciones debe indicar las dimensiones de la matriz
deseada, por ejemplo: (n de filas, n de columnas).
Para obtener ms informacin acerca de cualquiera de estas funciones, puede
emplearse el comando help seguido por el nombre de la funcin seleccionada.
3.5.3 Operaciones en array.
Dada la filosofa de este tipo de operaciones, es necesario que las matrices
involucradas tengan las mismas dimensiones (de este modo se aplicar la operacin a
cada una de las parejas formadas por los elementos que ocupan las mismas posiciones
en cada matriz). Si uno de los operandos es un escalar, se considerar que es una matriz
de las mismas dimensiones que el otro operando y cuyos elementos son todos iguales al
escalar.
Operaciones elementales.
Las operaciones matriciales vistas anteriormente se convierten en operaciones en
array anteponiendo un punto al operador correspondiente. En el caso de la suma y la
resta no es necesario porque son operaciones que siempre actan elemento a elemento.
Pero s se obtienen resultados distintos con la multiplicacin (.*) , la divisin (./ y
.\) y la potenciacin (.^). Por ejemplo, si
A = [ 2 4 6 8 10; 5 10 15 10 5 ] y B = [ 3 5 7 9 11; 2 3 4 5 6 ]
el resultado de aplicar las operaciones anteriores es:
>> C = A.*B
Introduccin a MATLAB

15


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

C =
6 20 42 72 110
10 30 60 50 30
>> C = A./ B
C =
0.6667 0.8000 0.8571 0.8889 0.9091
2.5000 3.3333 3.7500 2.0000 0.8333
>> C = A.^5
C =
32 1024 7776 32768 100000
3125 100000 759375 100000 3125
Operaciones y funciones de relacin.
Hay seis operadores de relacin que permiten comparar elemento a elemento dos
matrices de iguales dimensiones. El resultado es una matriz de unos y ceros, donde el
uno representa TRUE (verdadero) y el cero FALSE (falso). Las operaciones disponibles
se muestran en la tabla siguiente:
Operadores de relacin
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual que
= no es igual que
El operador se obtiene tecleando el nmero 126 mientras se mantiene
pulsada la tecla Alt.
Si A = [ 2 4 6 8 10; 5 10 15 10 5 ], la expresin B = (A ==10) asignar
a B una matriz que tendr unos en las posiciones donde A tiene el valor 10 y ceros en el
resto. Es decir:
B =
0 0 0 0 1
0 1 0 1 0
Introduccin a MATLAB

16


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

Ligada estos operadores aparece la funcin find que encuentra los elementos
no nulos de una matriz y que permite detectar si se combina con un operador lgico los
elementos de una matriz que cumplen una determinada condicin.
Funciones matemticas.
A continuacin, mostramos una lista de las funciones matemticas ms usuales
(todas ellas operan sobre las matrices elemento a elemento):
sqrt( ): Raz cuadrada.
exp( ): Funcin exponencial de base e.
log( ): Logaritmo neperiano.
log10( ): Logaritmo en base 10.
abs( ): Mdulo o valor absoluto.
angle( ): Fase.
real( ): Parte real.
imag( ): Parte imaginaria.
conj( ): Complejo conjugado.
rem( ): Resto de la divisin elemento a elemento de las matrices que recibe como
parmetro.
fix( ): Parte entera (redondea hacia el entero ms prximo a 0).
Funciones trigonomtricas:
sin( ): Funcin seno. La inversa es asin( ).
cos( ): Funcin coseno. La inversa es acos( ).
tan( ): Funcin tangente. La inversa es atan( ).
sinh( ): Funcin seno hiperblico. La inversa es asinh( ).
cosh( ): Funcin coseno hiperblico. La inversa es acosh( ).
tanh( ): Funcin tangente hiperblica. La inversa es atanh( ).
Hay que prestar un cuidado especial cuando se trabaja con ngulos, porque
MATLAB los expresa en radianes.
Introduccin a MATLAB

17


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

3.5.4 Ejemplos de expresiones y operaciones
Veamos algunos ejemplos de expresiones:
>> cos(acos(45))
>> sqrt(2^4)
>> (log(log10(1000)+1))
Veamos un ejemplo de concatenacin de matrices:
>> A=ones(3,3)
A =
1 1 1
1 1 1
1 1 1
>> B=[A A+10; A+20 A-1]
B =
1 1 1 11 11 11
1 1 1 11 11 11
1 1 1 11 11 11
21 21 21 0 0 0
21 21 21 0 0 0
21 21 21 0 0 0
>> B(2,:)=[] % Elimina la segunda fila
B =
1 1 1 11 11 11
1 1 1 11 11 11
21 21 21 0 0 0
21 21 21 0 0 0
21 21 21 0 0 0
Realicemos algunas operaciones con matrices:
>> A=magic(4) % Definimos una matriza mgica 4x4
A =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Introduccin a MATLAB

18


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> sum(A) % Suma de las columnas
ans =
34 34 34 34
>> A' % Trasponer una matriz
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
>> diag(A) % Obtencin de la diagonal de la matriz
ans =
16
10
7
1
>> sum(diag(A)) % suma de los elementos de la diagonal
ans =
34
>> A(4,5)=17 % Cambiar o aadir un elemento
A =
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
Observe que al acceder a un elemento no existente, se crea una nueva columna
para que pueda ser asignado.
Sugerencia: Cmo eliminara esa nueva columna creada?
>> A=A(:,1:4) % Solucin a la sugerencia anterior
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Introduccin a MATLAB

19


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> B=A+A' % Generamos una matriz simtrica
B =
32 7 12 17
7 22 17 22
12 17 12 27
17 22 27 2
>> C=A*A' % Producto de matrices
C =
438 236 332 150
236 310 278 332
332 278 310 236
150 332 236 438
>> d=det(A) % Clculo del determinante (la matriz es singular).d = 0
>> Z=inv(A) % Clculo de la inversa (la matriz es singular)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 1.306145e-017.
Z =
1.0e+014 *
0.9382 2.8147 -2.8147 -0.9382
2.8147 8.4442 -8.4442 -2.8147
-2.8147 -8.4442 8.4442 2.8147
-0.9382 -2.8147 2.8147 0.9382
Cuando se quiere trabajar con vectores, se deben emplear los operadores
adecuados. Consulte el manual para obtener la lista de estos operadores. Veamos
algunos ejemplos:
>> A=magic(2) % Matriz 2x2
A =
1 3
4 2
>> B=A.*A % Producto elemento a elemento de dos matrices
B =
1 9
16 4
Introduccin a MATLAB

20


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> n=(0:9)' % Definicin de en vector columna
n =
0
1
2
3
4
5
6
7
8
9
>> potencias=[n n.^2 2.^n] % Empleo de la columna para definir una matriz
potencias =
0 0 1
1 1 2
2 4 4
3 9 8
4 16 16
5 25 32
6 36 64
7 49 128
8 64 256
9 81 512
>> A=magic(4)
>> k=find(isprime(A))' % Empleo de la funcin find para buscar los ndices de
% los valores que son primos
k =
2 5 6 7 9 13
>> A(k) % Verificacin de que esos valores corresponden a nmeros primos
ans =
5 2 11 7 3 13
Introduccin a MATLAB

21


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

4. Grficos.
4.1 Grficos bsicos.
Veamos algunos ejemplos de la capacidad de MATLAB de realizar
representaciones grficas.
>> t=0:pi/100:2*pi; % Definimos el eje de tiempos como un vector de
% 200 puntos entre 0 y 6.28.
>> y=sin(t); % Calculamos el seno.
>> plot(t,y); % Representacin del seno frente al tiempo.
La siguiente figura muestra el resultado de ejecutar la ltima instruccin.

Para representar varias seales a la vez, puede realizar el siguiente conjunto de
instrucciones:
>> y2=sin(t-0.25);
>> y3=sin(t-0.5);
>> plot(t,y,t,y2,t,y3);
Introduccin a MATLAB

22


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones


Consulte la ayuda para conocer los distintos colores, tipos de lnea, etc... que
puede emplear.
El comando figure sirve para crear una nueva figura o para invocar figuras ya
existentes.
El comando hold on permite realizar un nuevo grfico sobre otro ya existente sin
que se abra una nueva figura. Si es preciso, se reescalan los ejes. El comando hold off
desactiva la opcin anterior, evitando que un nuevo grfico se superponga a uno ya
existente
Veamos como subdividir la pantalla (en un ejemplo que emplea grficos en tres
dimensiones):
>> t=0:pi/10:2*pi; % Definicin del eje de tiempos
>> [X,Y,Z]=cylinder(4*cos(t));
>> subplot(2,2,1), mesh(X); % Dibujo en el primer cuadrante
>> subplot(2,2,2), mesh(Y);
>> subplot(2,2,3), mesh(Z);
>> subplot(2,2,4), mesh(X,Y,Z);
Introduccin a MATLAB

23


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones


Veamos ahora como mejorar la apariencia de una grfica;
>> clf; % Borra la figura anterior
>> t=-pi:pi/100:pi; % Eje temporal
>> y=sin(t); % Seal a representar (sinusoide)
>> plot(t,y); % Dibujo
>> axis([-pi pi -1 1]); % Ejes
>> xlabel('-\pi \leq {\itt} \leq \pi'); % Etiquetado del eje horizontal
>> ylabel('sen(t)'); % Etiquetado del eje vertical
>> title('Grfica de la funcin seno'); % Nombre del grfico
>> text(1/3,-1/3,'\it{comprobar la simetra impar}'); % Comentario
Observe el aspecto de la figura creada:
Introduccin a MATLAB

24


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones


MATLAB encuentra los valores mximos de los valores a representar y escala
los ejes de acuerdo a esos valores. El comando axis([xmin xmax ymin ymax]) permite
especificar al usuario los valores de los ejes. Este comando axis, tambin admite una
serie de parmetros que se recomienda consultar en la ayuda, como axis square, equal,
on, offf,...
El comando grid on activa una rejilla en el dibujo, mientras que el comando grid
off desactiva esa opcin.

Introduccin a MATLAB

25


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

4.2 Edicin de dibujos.
Cuando aparece una figura como la anterior, podemos emplear las opciones que
aparecen en los mens desplegables de la parte superior y las herramientas de la barra
de tareas para editar el dibujo, aadir texto, flechas,....
Se puede emplear el editor de propiedades que se encuentra en el men EDIT de
una figura para cambiar las propiedades de los distintos elementos de una figura.

4.3 Imgenes.
Las matrices pueden verse como imgenes en las que cada elemento contiene las
caractersticas de brillo o color del elemento. Veamos como representar una matriz que
contenga una imagen.
>> load durer % cargamos un grabado de Durero
>> whos % variables que hemos cargado
Name Size Bytes Class
X 648x509 2638656 double array
caption 2x28 112 char array
map 128x3 3072 double array
Grand total is 330272 elements using 2641840 bytes
Introduccin a MATLAB

26


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> image(X) % estas tres instrucciones sirven para representar la imagen
>> colormap(map)
>> axis image

Introduccin a MATLAB

27


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

5. Programacin en MATLAB
5.1 Control de flujo.
a) Sentencia if.
Condicin comn a todos los lenguajes de programacin:
>> A=2;
>> if A= =3, m=3, elseif A= =2 m=2, end; % Empleo de la condicin.
m = 2
b) Sentencias switch y case.
Empleadas para una condicin mltiple
switch A
case 2
m=2
case 3
m=3
case 4
m=4
end
c) Sentencia for.
Para ejecutar bucles un nmero predeterminado de veces:
for indice=valor_inicial:incremento:valor_final
conjunto de instrucciones a realizar
end
>> b=0, for a=0:4, b=b+a, end
b = 0
b = 1
b = 3
b = 6
b = 10
d) Sentencia while.
Para ejecutar bucles con condicin de salida
Introduccin a MATLAB

28


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

>> a=0;
>> b=4;
>> while (a<=b) a=a+1, end % Bucle while
a = 1
a = 2
a = 3
a = 4
a = 5
e) Sentencia break
Permite salir anticipadamente de la ejecucin de un bucle.
5.2 Scripts (Procedimientos) y funciones.
Hasta ahora hemos trabajado en modo comando. Es decir, hemos escrito
sentencias en la ventana de comandos y al pulsar la tecla INTRO, stas se han ejecutado
y nos han devuelto un resultado. Pero es posible agrupar las instrucciones en ficheros de
texto ASCII con extensin *.m (llamados ficheros.m). Cuando invoquemos un
fichero.m desde la ventana de comandos o desde otro fichero.m, MATLAB ejecutar
todas las sentencias en modo secuencial. A continuacin, describiremos dos tipos de
ficheros.m: los procedimientos y las funciones.
5.2.1 Procedimientos.
Los procedimientos son simplemente secuencias de sentencias que operan sobre
el rea de trabajo. Por tanto, todas las variables que emplean son globales y quedarn
disponibles en el espacio de trabajo al finalizar la ejecucin.
Para crear un procedimiento nuevo seleccione FILE en el men principal.
Seleccione ahora la opcin NEW y finalmente seleccione M-FILE. Aparece ahora el
editor de MATLAB. Escriba a continuacin una serie de instrucciones, por ejemplo:
n=0:pi/100:2*pi;
s=sin(n);
plot(n,s);
Guarde estas lneas con el nombre que quiera y la extensin .m (por ejemplo,
script1.m). A continuacin desde la lnea de comandos de MATLAB invoque a la
funcin:
>> script1
Introduccin a MATLAB

29


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones


El resultado ser el del conjunto de instrucciones de MATLAB contenidas en el
fichero script1.m, en este caso, la figura anterior.
Si utilizamos el comando who podremos comprobar como todas las variables
utilizadas en el procedimiento permanecen en el entorno de trabajo.
>> who
Your variables are:
n s
Es posible pasar parmetros a un procedimiento mediante la funcin input( ).
Una expresin como
n = input(Introduzca el nmero de muestras: )
muestra en pantalla la cadena de caracteres pasada como parmetro y espera a que el
usuario introduzca por teclado un valor y pulse la tecla INTRO. Este valor ser el que se
asignar a la variable n.
5.2.2 Funciones
Las caractersticas de una funcin en MATLAB son las siguientes:
En la primera lnea se deben declarar el nombre de la funcin y los
argumentos de entrada y salida segn esta sintaxis:
function [arg_sal
1
,...,arg_sal
n
] = nombre_funcin(arg_ent
1
,...,arg_ent
m
)
donde:
Introduccin a MATLAB

30


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

arg_sal
i
es el nombre del i-simo argumento de salida,
arg_ent
i
es el nombre del i-simo argumento de entrada.
Los parmetros se pasan por valor. Es decir, se copian a las variables locales
arg_ent
i
que se han declarado al principio del fichero.
Todas las variables que se emplean en el cuerpo de la funcin son locales a
la funcin. Por tanto, slo existirn durante la ejecucin. Si escribimos:
nombre_funcin(param_ent
1
,...,param_ent
m
)
siendo param_ent
i
el valor que se pasa como parmetro i-simo, no
dispondremos de los resultados que se almacenaron en las variables
declaradas como argumentos de salida. Para tener acceso a estos valores,
debemos invocar la funcin del siguiente modo:
[param_sal
1
,...,param_sal
p
] = nombre_funcin(param_ent
1
,...,param_ent
m
)
En este ejemplo slo queremos obtener los valores de los primeros p
argumentos de salida (p < n). Una vez finalizada la ejecucin, las variables
param_sal
i
estarn disponibles en el espacio de trabajo y contendrn una copia de las
variables locales arg_sal
i
.
Para ilustrar el empleo de funciones, veamos el aspecto de la funcin mean.m
que calcula la media de un vector o matriz:
>> type mean
function y = mean(x,dim)
%MEAN Average or mean value.
% For vectors, MEAN(X) is the mean value of the elements in X. For
% matrices, MEAN(X) is a row vector containing the mean value of
% each column. For N-D arrays, MEAN(X) is the mean value of the
% elements along the first non-singleton dimension of X.
%
% MEAN(X,DIM) takes the mean along the dimension DIM of X.
%
% Example: If X = [0 1 2
% 3 4 5]
%
% then mean(X,1) is [1.5 2.5 3.5] and mean(X,2) is [1
% 4]
%
% See also MEDIAN, STD, MIN, MAX, COV.

% Copyright 1984-2001 The MathWorks, Inc.
% $Revision: 5.16 $ $Date: 2001/04/15 12:01:26 $

if nargin==1,
Introduccin a MATLAB

31


Anlisis y Sntesis de Circuitos. Departamento de Teora de la Seal y Comunicaciones

% Determine which dimension SUM will use
dim = min(find(size(x)~=1));
if isempty(dim), dim = 1; end

y = sum(x)/size(x,dim);
else
y = sum(x,dim)/size(x,dim);
end
Observe atentamente la sintaxis de la definicin de funciones en el entorno
MATLAB y realice algn ejemplo similar. El modo de edicin es el mismo que en el
caso de ficheros script.

También podría gustarte