Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Practica 2 1

Descargar como doc, pdf o txt
Descargar como doc, pdf o txt
Está en la página 1de 10

2 MANEJO DE SEALES: DESPLAZAMIENTO,

COMPRESIN Y CONVOLUCIN
NOMBRE:
APELLIDOS:
GRUPO:

2.1

INTRODUCCIN.

En esta prctica se estudiar la solucin de diversos ejercicios de


operaciones con el eje de tiempos de seales y clculo de respuestas de
sistemas LI utilizando la operacin de convolucin.
Adems de usar el lenguaje MATLAB de forma numrica como en la
prctica 1, orientado a seales discretas, se introducir la forma de utilizarle
como herramienta de clculo simblico (opera con las expresiones
matemticas de las seales, no con sus muestras) para calcular convoluciones
de seales de tiempo continuo.

2.2

EJERCICIOS

2.2.1 Ejercicio 2.1


Genere una seal de tipo rampa con los siguientes datos:

Vector de referencia temporal ref (vector fila), con valores entre 0


y 5 segundos, y una resolucin (frecuencia de muestreo) de 0.02
segundos entre cada dos valores.

Vector de seal s (vector fila), definida como


o s = ref, para ref entre 0 y 1
o s = 0, para ref entre 1 y 5

Visualice la seal s con el comando plot(ref,s).


Invierta el orden de los elementos de la seal "s" con la sentencia
s_inv= flipud(s.).
Inspeccione los valores de los nuevos vectores:

s_inv que contiene el vector s invertido

ref es el mismo vector con los tiempos en los que ha sido tomada
cada muestra

En una ventana separada (use el comando figure), visualice la nueva


seal s_inv con el comando plot, usando el mismo vector ref como referencia
temporal. Compare ambas grficas (s y s_inv). Para finalizar el ejercicio
escriba a continuacin la expresin del cambio de la variable temporal
realizado sobre s para obtener s_inv.
Escriba aqu la expresin

2.2.2 Ejercicio 2.2


Ejercicio sobre desplazamientos en el eje temporal. Escriba una funcin
en MATLAB que realice un desplazamiento de T segundos del origen de
tiempos de una seal dada.
Considere como parmetros de entrada una seal dada (x), su vector de
referencia temporal (refx) y el desplazamiento (T, en segundos). Considere
como un parmetro interno la resolucin de la seal de entrada (frecuencia de
muestreo) que ser de 0.02 segundos entre cada dos valores. Todas las
seales de entrada debern tener tambin esta resolucin.
La funcin debe generar como parmetros de salida, la seal
desplazada (y) y su nuevo vector de referencia temporal (refy), los cuales
tendrn de longitud, la original de las seales de entrada, ms lo
correspondiente al desplazamiento T.
Escriba aqu la funcin

Aplique la funcin a la seal rampa del ejercicio anterior s(t) para


obtener
s(t-1) y s(t-3). Dibuje ambas seales resultantes de ambos
desplazamientos.

2.2.3 Ejercicio 2.3


En este ejercicio se realizarn algunas operaciones sobre el eje de
tiempos de una seal real, muestreada previamente y grabada en el archivo
'aaa.mat'. Se trata de una seal de voz que contiene las muestras de la vocal a
pronunciada de forma continuada. La frecuencia a la que se toman muestras
de la seal es 8192 Hz. En este ejercicio procederemos de la siguiente manera:
1. Cargue la seal en su entorno MATLAB utilizando la sentencia load
aaa . En el espacio de trabajo tendr dos vectores de diez mil muestras:

y contiene la seal,

y t es el vector con los tiempos en los que ha sido tomada cada


muestra.

2. Usando la sentencia plot(t,y) y la herramienta de zoom visualice la


seal. Conteste:

Cul es la duracin, en segundos, de la seal?

Observe sobre todo su comportamiento cuasi-peridico. Cunto


vale el periodo aproximado de la seal?

3. Con el ordenador que tenemos delante podemos adquirir seales a


travs del micrfono y reproducirlas utilizando el altavoz. Las muestras de la
seal se las hemos dado en un archivo. Usted debe escucharla para
comprobar cmo le afectan los distintos tipos de operaciones que haremos a
continuacin. Utilice la sentencia sound para escuchar la seal. Se debe
especificar la seal y la frecuencia de muestreo. Para un frecuencia de
reproduccin de 8192 Hz la sentencia que debe ejecutar es sound(y,8192).
Para poder reproducir una seal sin distorsin a partir de sus muestras se
necesita que la frecuencia de toma de muestras (frecuencia de muestreo)
cumpla determinadas condiciones. Dichas condiciones se vern en el captulo
4 y en esta prctica asumiremos que se cumplen. En los siguientes ejercicios
veremos cmo influyen las expansiones y compresiones del eje temporal sobre
la seal
2.2.4 Ejercicio 2.4
A continuacin realizar una inversin, sobre el eje de tiempos, de la
seal del apartado anterior.
Invierta temporalmente la seal "y" con la sentencia y_inv= flipud(y).
Inspeccione los valores de los nuevos vectores:

y_inv que contiene el vector y invertido

t es el mismo vector con los tiempos en los que ha sido tomada


cada muestra

Visualice la nueva seal y_inv con el comando plot, usando el mismo


vector t como referencia temporal. En una ventana separada, y tambin con el
comando plot, visualice la seal original y. Compare ambas grficas y explique
sus diferencias.

Escuche la nueva seal y_inv con sound (usando la misma frecuencia


de reproduccin de 8192 Hz, ya que no ha cambiado). Oye alguna diferencia
apreciable con la seal y? Qu conclusiones sacara?

2.2.5 Ejercicio 2.5


Vamos a realizar ahora una compresin temporal del 50% sobre la seal
y. Dado que tenemos la seal descrita por sus muestras lo que vamos a hacer
es acercar sus muestras un 50% (equivalente a aumentar su frecuencia de
muestreo un 50%). Para ello genere una nueva seal en la que:

El vector de valores y_com50 ser el mismo que el vector y


original.

El vector de referencia temporal t_comp50 debe ser calculado


como t/2

Inspeccione los valores de los nuevos vectores y_com50, t_comp50 y


razone:

Cul es la cantidad de muestras de la seal y_com50?

Cul es la separacin de muestras de y_com50? Y, en


consecuencia Cul es la nueva frecuencia de muestreo de
y_com50?

Cul es la duracin, en segundos, de la seal y_com50?

Visualice la nueva seal y_com50 con el comando plot, usando su


vector t_comp50 como referencia temporal. En una ventana separada, y
tambin con el comando plot, visualice la seal original y. Compare ambas
grficas y explique sus diferencias.

Escuche la nueva seal y_com50 con sound (usando la nueva


frecuencia de muestreo como frecuencia de reproduccin). Suena ms
aguda o ms grave?.

2.2.6 Ejercicio 2.6


Vamos a realizar ahora una expansin temporal del 20% sobre la seal
y. Para ello genere una nueva seal en la que:

El vector de valores y_exp20 ser el mismo que el vector y


original.

El vector de referencia temporal t_exp20 debe ser calculado


como t/0.8

Inspeccione los valores de los nuevos vectores y_exp20, t_exp20 y


razone:

Cul es la cantidad de muestras de la seal y_exp20?

Cul es la nueva frecuencia de muestreo de y_exp20?

Cul es la duracin, en segundos, de la seal y_exp20?

Visualice la nueva seal y_exp20 con el comando plot, usando su


vector t_exp20 como referencia temporal. En una ventana separada, y tambin
con el comando plot, visualice la seal original y. Compare ambas grficas y
explique sus diferencias.

Escuche la nueva seal y_exp20 con sound (usando la nueva


frecuencia de muestreo como frecuencia de reproduccin). Suena ms
aguda o ms grave?.

2.2.7 Ejercicio 2.7


Clculo de respuestas de sistemas SLI discretos utilizando la operacin
de convolucin. Ilustraremos aqu la realizacin de convoluciones discretas
utilizando el comando conv que realiza convoluciones discretas en el dominio
temporal. Comenzaremos realizando un ejemplo sencillo sobre la convolucin
de dos pulsos cuadrados.
Genere una seal de tipo pulso con los siguientes datos:

Los vectores tendrn una longitud de 251 muestras. En este caso


el vector de referencia temporal ser un vector de nmeros
enteros que ir entre 0 y 250 (n=0:250;). En la mayora de los
casos este vector no es necesario y se puede sustituir por el
conocimiento del ndice temporal de una muestra del vector de
seal (por ejemplo de la primera muestra). El vector temporal
corresponder a este ndice ms el n de muestra del vector de
seal menos uno (recuerde que el MATLAB comienza a numerar
las posiciones de los vectores por uno).

Vector de seal pulso, con un valor igual a:


o pulso = 1, para n entre 0 y 100
o pulso = 0, para n entre 101 y 250

Visualice la seal pulso con el comando stem(n,pulso), que sirve para


representar secuencias.
Genere la seal c1 como la convolucin del pulso consigo mismo
(comando conv(pulso,pulso) ). Visualice la seal c1 con el comando stem.
Conteste a las siguientes preguntas:

Qu forma tiene la seal c1? Por qu es simtrica?

Es el vector de referencia temporal de la entrada vlido para la


salida? En caso negativo, determine el vector de referencia
temporal de la salida.

Cul es la duracin de la seal c1, su comienzo y su final?


Cul es la expresin genrica que relaciona estos valores de c1
con las seales de que proviene a travs de la convolucin?

2.2.8 Ejercicio 2.8


Realizaremos ahora una convolucin discreta de un pulso cuadrado con
una exponencial de lado derecho (aunque no la integraremos hasta el infinito
en el eje de tiempos).

Vector de referencia temporal n, con valores entre -500 y 500

Vector de seal s1, definida como un pulso cuadrado entre las


muestras -50 y 50.

Vector de seal s2, definida como la funcin e 0.08n u ( n ) .

Visualice las seal s1 y s2 con el comando stem(n,[s1. s2.]).


Genere la seal c2 como la convolucin de las seales s1 y s2
(comando conv(s1,s2) ). Visualice la seal c2 con el comando stem. Conteste
a las siguientes preguntas:

Determine el vector de referencia temporal de la secuencia c2.

Cul es la duracin de la seal c2, su comienzo y su final?

2.2.9 Ejercicio 2.9


Ilustraremos a continuacin cmo se puede utilizar MATLAB para el
clculo de convoluciones de seales continuas (utilizando el modo simblico).
En este tipo de funcionamiento el programa opera con las ecuaciones que
representan las seales contnuas tal y como nosotros lo haramos sobre el
papel. Para funcionar en este modo no hace falta ms que utilizar las funciones
adecuadas y declarar como variables simblicas las funciones y los tiempos
que vamos a utilizar en la convolucin. Queremos realizar la convolucin de las
dos seales siguientes:
x (t ) u (t 1) u (t 1)

y (t ) e 4t u ( t )

Lo primero que haremos en MATLAB ser declarar las variables cmo


simblicas:
>>syms x y x1 y1 z t tau real
syms declara una variable como simblica y real al final indica que son
variables reales. A continuacin componemos las funciones x e y
>>x=heaviside(t+1)-heaviside(t-1)
>>y=exp(-4*t)*heaviside(t)
heaviside representa la function escaln o de Heaviside. El siguiente paso en
la convolucin ser sustituir t por t-tau o por tau segn corresponda (esta
operacin se realiza con el comando subs, que sustituye en la funcin
referenciada en el primer argumento la variable del segundo argumento por la
del tercero). En este caso hemos optado por dejar el pulso cuadrado sin
desplazar.
>>x1=subs(x,t, tau)
>>y1=subs(y,t, t-tau)
El ltimo paso consistir en realizar la multiplicacin de las seales e integrar
respecto a tau (se realiza utilizando el comando int que integra la funcin del
primer argumento segn la variable del segundo, indicando el tercero y cuarto
los lmites de integracin).
>>z=int(x1*y1,tau,-1,1)
Ya hemos obtenido una expresin para la convolucin. Ahora queda calcularla
para unos cuantos valores. La vamos a pintar en el intervalo del eje de tiempos
entre -5 y 5 con una separacin entre muestras de 0.023. Lo primero es
sustituir los tiempos de los puntos a pintar en la expresin de la convolucin (se
realiza tambin con el comando subs). Esto nos dar la expresin simblica
del valor de cada punto. Despus se convierte la expresin simblica de cada
nmero a un nmero real (usando el comando double que convierte una
expresin simblica de un nmero a nmero). A continuacin se dibuja el vector
de nmeros.
>>zp=subs(z,t,[-5:0.023:5]);
>>zr=double(zp);
>>plot([-5:0.023:5],zr)
Con el resultado de este ejercicio podemos ilustrar como una convolucin
continua puede aproximarse por una discreta. En el ejercicio anterior se realiz
una convolucin discreta que corresponde a las seales de este ejercicio,
solamente que tomando muestras cada 0.02 sg. Una vez tomadas las
muestras, nos hemos olvidado de la referencia temporal y las hemos convertido
en secuencia. Pero la convolucin discreta puede ser vista como una
aproximacin por rectngulos a la convolucin continua sin ms que multiplicar
por el intervalo entre muestras. Compruebe este hecho multiplicando el
resultado del apartado anterior por 0.02 y representndolo en la misma figura
que z.

>>figure(f1)
>>hold on
>>plot(0.02*n,0.02*c2)
>>hold off

Comente si encuentra diferencias entre una y la otra. Es buena en este caso


la aproximacin discreta?

Repita el procedimiento para calcular la convolucin entre las dos seales


siguientes:
x (t ) t u (t 1) u (t 1)

y ( t ) t 5 u ( t 4 ) u ( t 6)

Calcule la funcin en los siguientes puntos del eje t [2:0.023:8]. Dibuje


aproximadamente (o pegue) el resultado a continuacin:

Grfica

También podría gustarte