Anda di halaman 1dari 8

1 INTRODUCCION A MATLAB.

NOMBRE:
APELLIDOS:
GRUPO:

1 INTRODUCCION.
MATLAB es un entorno de programacin orientado a clculo numrico,
con un lenguaje propio de alto nivel e interpretado, no compilado. En las
ltimas versiones se le ha incorporado tambin un paquete de software (es el
programa de clculo simblico MAPLE) que sirve para realizar operaciones
sobre funciones continuas (derivadas, integrales, races,). En general, el
MATLAB se utiliza principalmente en su orientacin de clculo numrico (las
funciones continuas se representan por dos vectores de muestras que
representan la variable independiente y la dependiente). En esta prctica
aprenderemos los fundamentos de MATLAB como herramienta numrica de
procesado de seales. En una prctica futura veremos tambin cmo se puede
utilizar el MATLAB en su variante de clculo simblico para realizar muchas
operaciones comunes en el anlisis de sistemas lineales (convoluciones,
transformadas de Fourier, transformadas de Laplace, ).
A continuacin se proponen una serie de ejercicios con los que se el
alumno aprender el funcionamiento bsico del programa, as como su
utilizacin en el mbito del procesado de seal.
Al principio, los ejercicios sern guiados, y el alumno tan slo deber
introducir los comandos escritos en el guin de la prctica. Durante la prctica,
irn desapareciendo las guas y ser el propio alumno el que deba
confeccionar las instrucciones necesarias para llegar a los objetivos
propuestos.
La ayuda on-line, mediante la instruccin help de MATLAB o el
navegador de ayuda (que se activa pulsando en el smbolo de interrogacin
situado en la barra de herramientas o en el men Desktop), permite obtener
informacin sobre el empleo de cualquier funcin.
El objetivo de esta prctica no es otro que introducir al alumno en el
manejo del MATLAB, aportndole los conocimientos necesarios para una
mayor profundizacin.

2 ESTRUCTURAS DE DATOS EN MATLAB.


La estructura de datos fundamental en MATLAB es la matriz, bien sea
de elementos reales o complejos. Los escalares son matrices de tamao 1x1 y
los vectores son matrices de una sola fila o columna.
Las matrices se crean dinmicamente de alguna de las siguientes
formas:

a) Directamente, mediante el listado de los elementos que la componen.


b) Mediante funciones ya incluidas en el entorno.
c) Mediante funciones escritas a tal efecto (ficheros .m)
d) Cargndolas de ficheros de datos (ficheros .mat o ficheros .txt)

En MATLAB se pueden visualizar en todo momento las variables


almacenadas en memoria mediante las instrucciones who y whos, as como
los ficheros con la extensin .m y .mat en el directorio de trabajo con la
instruccin what. Se puede sacar una ventana en el escritorio de MATLAB que
presente los nombres de las variables y su tamao. Esta ventana se activa a
travs de la pestaa Desktop en el men principal (barra de herramientas).
Tngase en cuenta que un fichero .m puede ser bien un fichero script
(secuencia de comandos MATLAB) bien un fichero funcin (comienza con la
palabra function, los parmetros son transferidos, y las variables definidas en
l son locales a la funcin, borrndose cuando se termina su ejecucin y
conservndose solamente la salida); mientras que un fichero .mat contiene las
variables especificadas como argumentos del comando save.

2.1 Ejercicio 1.1.


Cree una matriz de nmeros reales y tamao 2x4:
>> m=[0 2 4 6 ;0 3 5 7];
Gurdela en un fichero:
>> save matrizm m
Limpie el espacio de trabajo:
>> clear
Cargue del disco la matriz y compruebe las variables en memoria:
>> load matrizm
>> whos
Los elementos de una matriz pueden referenciarse unitariamente o por
grupos, sin ms que hacer referencia a su posicin dentro de esta.

2.2 Ejercicio 1.2.


Seleccione de la matriz anterior el elemento que se encuentra en
la primera fila, tercera columna. Seleccione la segunda fila. Seleccione
la cuarta columna. Seleccione la submatriz 2x2 que contiene elementos
de las dos primeras filas y las dos primeras columnas.
>> clear
>> load matrizm
>> m(1,3) % Elemento 1 fila 3 columna
>> m(2,:) % 2 fila
>> m(:,4) % 4 columna
>> m(1:2,1:2) % Matriz 2x2
2.3 Ejercicio 1.3.
Repita el ejercicio anterior con la siguiente matriz de nmeros
complejos:
j 1 j j 5
j 4 2 j 3 9 3 j

Para introducir en MATLAB un nmero complejo se pueden utilizar las
letras i y j, por ejemplo: 1+i, 2-3j.
Todas estas operaciones, pueden hacerse obviamente con vectores fila
y columna. Por otro lado, existen funciones de MATLAB que generan matrices
especiales como la matriz identidad (funcin eye), o una matriz con todos los
elementos cero (zeros), o una matriz con elementos aleatorios (rand), etc.
Con la ayuda on-line de MATLAB se puede obtener ms informacin
sobre estas funciones.

3 REFERENCIA TEMPORAL.

En MATLAB una funcin f(t) se define como un array de datos discretos


que representan los valores que toma la funcin en ciertos puntos de muestreo.
Por ejemplo el array [f(t1), f(t2), , f(tn)] representa la funcin f(t) en los
instantes t1, t2, , tn. Independientemente del nmero de puntos de muestreo
incluidos en el array el resultado se corresponde a una versin muestreada de
la funcin. Es decir que una funcin en MATLAB siempre queda definida por
DOS conjuntos de valores (dos vectores o tambin llamados matrices
unidimensionales o arrays):
El conjunto de las abcisas (hablando de una seal en el tiempo
sera el array de instantes de tiempo, o tambin llamado "vector
de referencia temporal").
El conjunto de las ordenadas (hablando de una seal temporal,
sera el array del valor de amplitud de la funcin en cada instante
de tiempo, tambin llamado "vector de valores").
Como ejemplo supngase que se ejecuta el siguiente comando MATLAB
>> x=sin(t)
MATLAB no es pues un entorno de clculo simblico como pueda serlo
por ejemplo MAPLE (que est incorporado al MATLAB en el paquete Symbolic
Toolbox y que utilizaremos en la prctica 2 para hallar convoluciones y en la 4
para procesar seales de tiempo continuo). Por tanto, el comando anterior
generar un mensaje de error ya que el argumento t de la funcin no se ha
definido previamente. Cuando se intenta definir el argumento ello solo se puede
hacer especificando t en unos instantes de muestreo. As por ejemplo el
siguiente conjunto de comandos
>> Ts=0.2
>> t= 0: Ts: 100*Ts
>>x=sin(2*pi*1*t)
funcionar correctamente, pues lo que se habr creado ser un vector "t" de
101 muestras correspondientes a instantes de tiempo separados Ts segundos;
y un conjunto "x", tambin de 100 muestras, correspondiente a los valores de
una sinusoide de frecuencia 1 Hz muestreada a una frecuencia fs=1/Ts. Es
decir los valores de estos vectores seran:
t = [ 0 , 0.2 , 0.4 , ... ]
x = [ sin(0), sin(2*pi*1*0,2), sin(2*pi*1*0.4), ... ]
Si se modifica el valor de fs slo se cambia la frecuencia de muestreo (es decir
los puntos por segundo que existen en el vector de referencia temporal) pero el
hecho de que se est muestreando permanece implcito en la estructura del
vector de datos resultante.
Se puede usar el comando plot para representar grficamente una funcin.
Este comando necesita como parmetros el vector de referencia temporal y el
vector de valores:
>> plot( t, x)
Por tanto cmo se genera una seal de tiempo continuo? La respuesta
es que en MATLAB no se genera una verdadera seal de tiempo continuo. En
consecuencia solo se puede hablar de seales seudo - continuas que se han
muestreado a una frecuencia suficientemente alta como para que la seal
muestreada resultante represente con suficiente precisin a la seal. Como
ms adelante justificaremos en el captulo 4 de la asignatura, la frecuencia de
muestreo se elige como fs = Kfm , siendo fm la frecuencia mxima de la seal
analgica, de manera que el valor de K (siempre >2) es un compromiso entre el
tamao del array y la precisin deseada: cuanto mayor sea K, ms se parecer
el array de valores a una seal continua.
Por todo lo expuesto, es fundamental, a la hora de trabajar en MATLAB
con funciones contar con una referencia temporal, ya que a partir de ella se
obtendrn las seales que se desea generar. La funcin linspace permite crear
vectores que pueden ser utilizados como referencia temporal.
Es posible tambin definir vectores de referencia mediante la sentencia
valorinicial:paso:valorfinal, la cual genera un vector fila con valores que van
desde valorinicial hasta valorfinal, avanzando paso de elemento a elemento.

3.1 Ejercicio 1.4.


a) Obtenga utilizando la funcin linspace, un vector de 20 elementos
que recorra el intervalo [0,2].
b) Genere utilizando la sentencia valorinicial:paso:valorfinal, un vector
de referencia de 1000 puntos que recorra el intervalo [0,10].

Una vez que tenemos definida la forma de una seal a travs de dos
vectores es conveniente saber cmo se realizan operaciones con seales en
MATLAB. Utilicemos el ejemplo de la multiplicacin *. En MATLAB el elemento
numrico bsico es la matriz. Por lo tanto, la operacin A*B realiza una
multiplicacin de matrices. Si A y B son dos vectores que representan seales
de la misma longitud (los dos fila o columna), la operacin A*B no tendr
sentido y dar error. Multiplicar dos seales (en general vlido para cualquier
operacin) consiste en multiplicar las amplitudes de ambas en los mismos
instantes temporales. Si suponemos que A y B son los vectores que contienen
las amplitudes de dos seales para el mismo vector de referencia temporal, la
multiplicacin de seales se realiza con la siguiente sentencia A.*B (observe el
punto que precede al operador). Este operador genera una muestra
correspondiente a un instante del vector de referencia como el producto de las
muestras de ese mismo instante de los vectores A y B. Esto lo repite para todas
las muestras. Siguiendo la misma filosofa, cuando aparece un punto delante
de un operador significa que se realiza la operacin entre seales
(muestra a muestra de los vectores) y no entre matrices. De esta manera
las operaciones de suma, diferencia, multiplicacin y divisin de seales se
realizan con los siguientes operadores: + , - , .* , ./

3.2 Ejercicio 1.5. Operaciones con seales

Obtenga utilizando la referencia temporal del ejercicio 1.4 a) el producto


del seno y el coseno de dicha referencia y represntelo.

4 GENERACION DE FICHEROS MATLAB.


Todos los datos (variables) que se definen en MATLAB admiten de forma
natural las operaciones de suma, resta, multiplicacin, divisin, elevacin a una
potencia, etc.
El entorno proporciona las operaciones matemticas ms usuales para
el tratamiento de matrices, vectores y escalares, que adems pueden
componerse. A continuacin realizaremos algunas operaciones bsicas con
seales

4.1 Ejercicio 1.6.


Con el vector del Ejercicio 1.4 a), realice las siguientes operaciones :
Multiplquelo por 2 y calcule su coseno (funcin cos).
Calcule el valor absoluto (abs) del vector resultante.

4.2 Ejercicio 1.7.


Con el vector de referencia del Ejercicio 1.4 a), obtenga una sinusoide
compleja (fasor) realizando las siguientes operaciones :
Multiplquelo por j/4 y calcule su exponencial (funcin exp).
Calcule el valor absoluto del vector resultante.
Calcule la parte real (real) y parte imaginaria (imag) del vector
resultante.

4.3 Ejercicio 1.8.


Como se vio en la introduccin terica, es posible mediante MATLAB
crear libreras de funciones definidas por el usuario en forma de ficheros de tipo
ASCII (ficheros .m), que contienen una serie de sentencias que se ejecutan
secuencialmente al llamar al fichero.
Estos ficheros se crean mediante la opcin New M-file en el men File
de MATLAB. Automticamente se pasa a un editor de texto en el que se puede
ya escribir las sentencias.
Por ejemplo, la funcin BOXCAR de Matlab est definida de la siguiente
forma en el fichero boxcar.m:
function w = boxcar(n)
%BOXCAR BOXCAR(N) returns the N-point rectangular window.
w = ones(n,1);

Escriba en MATLAB un fichero .m de funcin llamado cosinusoi, que


genere seales sinusoidales (utilizar la funcin cos de MATLAB), a partir de los
siguientes parmetros: instante inicial (n 0), longitud temporal de la secuencia
(N), periodo de muestreo (paso), frecuencia angular ( 0), y fase (0). La funcin
devolver tanto la secuencia generada (x) como el vector de referencia
temporal (ref).

Escriba aqu la funcin.

5 REPRESENTACIN GRFICA.
Como herramientas de representacin grfica en dos dimensiones, se
tienen las funciones plot, stem, loglog, semilogy y semilogx. Adems de
estas funciones principales, existen una serie de funciones complementarias:
clf, subplot, hold, figure, grid, ginput, zoom, etc, que son de gran utilidad en
la representacin de seales.
5.1 Ejercicio 1.9.
Represente los vectores obtenidos en los Ejercicios 1.6 y 1.7. Utilice en
la representacin el vector de referencia generado en el Ejercicio 1.4 a). Una
vez obtenida la grfica, compruebe cmo funcionan los comandos grid, ginput,
y zoom.

5.2 Ejercicio 1.10.


Las seales moduladas son de gran importancia en los sistemas de
comunicacin. Se utilizan para enviar la informacin de la seal codificada
entorno a una frecuencia que se propague en el medio de transmisin (ej:
frecuencias de microondas en el aire, frecuencias pticas en cables de fibra
ptica). A continuacin veremos un ejemplo en que la seal a transmitir hace
variar la amplitud de una sinusoide centrada en la frecuencia deseada para la
transmisin (modulacin de amplitud) Programaremos la siguiente seal:
x (t ) r (t ) cos wo t

siendo fo=wo/2 la frecuencia central, denominada frecuencia deportadora.

Escriba una funcin que genere una seal modulada en amplitud siendo
r(t) una sinusoide de frecuencia fr. La funcin tendr la forma siguiente:
[ref, x] = pasoband(fo, fr, inf, sup, paso)
donde fo : es la frecuencia central o portadora
fr : es la frecuencia de la seal r(t)

inf : es el lmite inferior del vector de referencia temporal


sup : es el lmite superior del vector de referencia temporal
paso : es el paso del vector de referencia temporal
x : es la seal modulada resultante
ref : es el vector de referencia temporal para x
La funcin terminar dibujando la seal generada, fijando el eje x en el
intervalo [-1, 1], el eje y en el [-2, 2] y poniendo ttulo a la grfica (utilizar los
comandos axis y title de MATLAB).
Emplear pasoband para generar una seal con: fo=25 Hz; fr=3/2 Hz;
inf=-0.5; sup=0.5; paso=(1/fo)/50. Vare los parmetros fr y fp e interprete los
resultados.

Escriba aqu la funcin


6 SEALES Y TRANSFORMACIONES ELEMENTALES.
Las facilidades que ofrece MATLAB para la generacin de vectores
resultan de gran utilidad para construir un eje de tiempos. Esto puede llevarse a
cabo como se ha visto con las sentencias linspace y
valorinicial:paso:valorfinal.
A continuacin se proponen una serie de ejercicios en los que aplican las
tcnicas anteriores para la generacin de seales elementales, as como para
la realizacin de transformaciones con estas seales.

6.1 Ejercicio 1.11. (Deltas)


Escriba una funcin que genere la secuencia [n-n0] (con n y n0 enteros),
recibiendo como parmetros el nmero de muestras de la secuencia (L) y el
retardo (n0). Adems de la secuencia generada (x), la funcin deber devolver
como parmetro de salida, el vector de referencia temporal (ref); este ser tal
que la secuencia [n-n0] generada est centrada en el origen (para L par el
vector de referencia temporal ir desde -L/2 hasta L/2-1; para L impar desde
(L-1)/2 hasta (L-1)/2). La funcin mostrar por pantalla un mensaje de error en
caso de que n0 rebase los lmites del vector temporal.

Escriba aqu la funcin.