Professional Documents
Culture Documents
Grupo -
Práctica 1: Señales en MATLAB -
Puesto
Apellidos, nombre SOLUCIÓN Fecha
Apellidos, nombre SOLUCIÓN 19-20 / 09 /12
El objetivo de esta práctica es presentar al alumno el modo de orientar las herramientas que ofrece
MATLAB a la representación y manejo de señales y sistemas.
A partir del ejercicio 6, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’ separado
(salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de la
función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_1_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda (3211, 3212, 3213, 3214)
En general, una señal quedará representada por un vector fila o por un vector columna (es decir, por
matrices con una única fila o columna). En MATLAB, todos los vectores se indexan comenzando por el
1, es decir, y(1) es el primer elemento del vector y. Cuando este criterio no coincida con el del problema
a resolver (e.g., porque el primer valor del vector y corresponda al índice -3), se puede crear un vector
adicional de índices. Por ejemplo, para representar la señal:
2n, 3 0 3
xn
0, resto
, puede usarse el operador ‘:’ para definir un vector con los índices de x[n] no nulos, y luego definir el
propio vector x de modo que contenga los valores deseados en cada uno de estos índices:
>> n=[-3:3];
>> x=2*n;
Represente esta señal escribiendo stem(n,x). Para examinar la señal en un rango más amplio de índices,
será necesario extender tanto el vector de índices, n , como la señal x:
lOMoARcPSD
n[-3:3]
6
2
Valor
-2
-4
-6
-3 -2 -1 0 1 2 3
Tiempo (Discreto)
>> n=[-5:5];
>> x=[0 0 x 0 0]; % x tenía el valor del ejemplo anterior
lOMoARcPSD
>> n=[-100:100];
>> x=[zeros(1,95) x zeros(1,95)]; % x tenía el valor del ejemplo anterior
Represente cada una de estas tres señales en tres figuras distintas (vea el comando figure).
Sean x1 n n y x2 n n 2 (la función n toma valor 1 para n=0 y valor nulo en el resto).
Dibuje aparte el aspecto que tienen ambas señales. Estas señales pueden definirse en MATLAB
escribiendo:
>> nx1=[0:10];
>> x1=[1 zeros(1,10)];
>> nx2=[-5:5];
>> x2=[zeros(1,3) 1 zeros(1,7)];
lOMoARcPSD
Para representarlas, basta escribir stem(nx1,x1) y stem(nx2,x2). Compruebe que obtiene el resultado
esperado.
Represéntelas ahora directamente con stem(x1) y stem(x2), función que en ausencia de un vector de
índices asume que éste comienza en 1 y que tiene la misma longitud que la señal. Indique, en esta
situación, cual es la expresión analítica de las señales que observa:
lOMoARcPSD
x[n-1]
1
Valor
0.5
0
1 2 3 4 5 6 7 8 9 10 11
Tiempo Discreto
x[n-4]
1
Valor
0.5
0
1 2 3 4 5 6 7 8 9 10 11
Tiempo Discreto
>> Tenga en cuenta en lo sucesivo que a la hora de representar señales, tan importante como la
expresión de la señal es el vector de índices con respecto al cual se representa. <<
Una señal continua es posible representarla mediante vectores que contengan valores de dicha señal en
instantes de tiempo muy cercanos entre sí. Así, si se quiere representar una señal continua en el intervalo
5 t 5 mediante la expresión de un valor cada 0.1 segundos, tenemos dos opciones para crear el
vector de índices (en este caso instantes de tiempo):
>> t=[-5:0.1:5];
, o bien:
>> t=linspace(-5,5,101);
Hecho esto, para representar la señal xt sen(t / 4) basta con escribir:
>> x=sin(pi*t/4);
>> Observe que en MATLAB, cuando el argumento de una función de este tipo (sin, cos, exp, etc.)
es un vector, el resultado es un vector del mismo tamaño, en el que cada valor resulta de la
aplicación de la función a cada valor del vector argumento. <<
lOMoARcPSD
>> plot(t,x);
>> En lo sucesivo, siempre que se quiera representar gráficamente una señal de tiempo discreto
utilice el comando stem; análogamente, siempre que la señal sea de tiempo continuo (aunque con
MATLAB se aproxime por una señal de tiempo discreto definida a intervalos regulares y muy
pequeños) utilice el comando plot para resaltar este hecho y evitar cualquier confusión. <<
lOMoARcPSD
seno y coseno
1
seno((4pi)/t)
0.8
coseno((4pi)/t)
0.6
0.4
0.2
Valor
-0.2
-0.4
-0.6
-0.8
-1
-4 -3 -2 -1 0 1 2 3 4
Tiempo Continuo
>> n=[0:32];
>> x=exp(j*(pi/8)*n);
El vector x contiene una serie de 33 valores complejos de la señal xn . Represéntelos gráficamente,
haciendo uso de la función stem, indicando qué característica de cada valor complejo desea representar:
>> stem(n,real(x));
>> stem(n,imag(x));
>> stem(n,abs(x));
>> stem(n,angle(x));
lOMoARcPSD
Siempre que dos señales compartan el mismo vector de índices (es decir, que el vector que representa
cada señal tenga el mismo origen de tiempos), es posible realizar directamente cierto tipo de operaciones
básicas. Así, defina las señales:
>> x1=sin((pi/4)*[0:30]);
>> x2=cos((pi/7)*[0:30]);
>> y1=x1+x2;
>> y2=x1-x2;
>> y3=x1.*x2;
>> y4=x1./x2;
>> y5=2*x1;
>> y6=x1.^x2;
x1 x2
1 1
0 0
-1 -1
0 10 20 30 0 10 20 30
n n
x1+x2 x1-x2
2 2
0 0
-2 -2
0 10 20 30 0 10 20 30
n n
x1.*x2 x1./x2
1 5
0 0
-1 -5
0 10 20 30 0 10 20 30
n n
14
2*x1 x 10 x1 elevado a (x2)
2 2
0 0
-2 -2
0 10 20 30 0 10 20 30
n n
En MATLAB hay esencialmente dos tipos de ficheros con extensión ‘.m’: scripts de comandos y
funciones. Su uso es imprescindible de cara a organizar, depurar y guardar los ejercicios (en scripts) y
siempre que se requiera realizar un mismo conjunto de operaciones (es decir, funciones) sobre señales
diferentes.
Tenga en cuenta que para poder invocar scripts y funciones, los ficheros ‘.m’ que los implementan han de
estar en algún lugar referenciado por el path de MATLAB. Utilice algún directorio de su unidad de disco
privada (por defecto, h:\) y añádalo al path de MATLAB (menú ‘File/Set path…’). Recuerde que tendrá
que efectuar esta operación cada vez que reinicie su ordenador.
Genere con el editor de MATLAB el siguiente script (asígnele el nombre ‘ejercicio_6.m’), cuyo objetivo
es representar una determinada señal discreta en un intervalo dado, calcular su valor medio en el citado
intervalo, y representar este valor como una función constante:
% ejercicio6.m
>> n = [0:16];
>> x1 = cos(pi*n/4);
>> y1 = mean(x1);
>> stem(n,x1,'r')
>> title('x1[n] = cos(pi*n/4) / media')
>> xlabel('Tiempo (Discreto)')
>> ylabel('x1[n]')
>> hold on
>> m1=y1*ones(1,17);
>> plot(n,m1,'g')
>> hold off
>> legend('Cos (pi*n/4)', 'Media (Cos (pi*n / 4))');
0.8
0.6
0.4
0.2
xl[n]
-0.2
-0.4
-0.6
Si ahora desea realizar la misma operación con la señal x2 n sin(n / 4) y en el intervalo 0 n 32 ,
basta con copiar el fichero, asignarle un nuevo nombre (e.g., ‘ejercicio_6b.m’) y cambiar las líneas que
proceda:
% ejercicio6b.m
>> n = [0:32];
>> x1 = sin(pi*n/4);
>> y1 = mean(x1);
>> stem(n,x1,'r')
>> title('x1[n] = sen(pi*n/4) / media')
>> xlabel('Tiempo (Discreto)')
>> ylabel('x1[n]')
>> hold on
>> m1=y1*ones(1,33);
>> plot(n,m1,'g')
>> hold off
>> legend('Sen (pi*n/4)', 'Media (Sen (pi*n / 4))');
lOMoARcPSD
0.6
0.4
0.2
xl[n]
-0.2
-0.4
-0.6
-0.8
-1
0 5 10 15 20 25 30 35
Tiempo (Discreto)
Compruebe que obtiene el resultado deseado ejecutando este segundo script desde la línea de comandos.
Un fichero ‘.m’ también puede representar una función. Para ello, la primera palabra del fichero ha de ser
function. El resto de la línea especifica los parámetros que acepta la función y los valores que devuelve.
El siguiente ejemplo muestra una función llamada f_obtiene_yz, que toma como parámetro un vector x,
y devuelve otros dos vectores, y y z (acostúmbrese a preceder el nombre de todas las funciones con las
letras f_, de modo que se distingan claramente de funciones de MATLAB o de scripts):
El siguiente ejemplo muestra cómo utilizar esta función desde la línea de comandos (o bien desde un
script):
>> n=[0:15];
>> x1=4*sin((pi/4)*n);
>> [y1,z1]=f_obtiene_yz(x1);
>> stem(n,x1);
>> hold on;
>> stem(n,y1,'r');
>> stem(n,z1,'g');
>> hold off;
lOMoARcPSD
2, n0
1, n2
xn 1, n3
3, n4
0, resto
Represéntela gráficamente y fije las etiquetas necesarias (xlabel, ylabel, title) de modo que el
resultado sea similar al que muestra la Fig. 1.
lOMoARcPSD
Una vez definida la señal xn , defina en el mismo fichero ‘.m’ las siguientes señales:
y1 n xn 2
y 2 n xn 1
y3 n x n
y 4 n x n 1
Para ello, el método que se propone, orientado a evidenciar que no cambia la señal sino la variable
independiente, consiste en primero definir y1=x, y2=x, etc., y a continuación definir los correspondientes
vectores índice de cada señal (ny1,…, ny4) como una transformación del vector de índices nx. Para ello
dibuje aparte las cuatro señales que se le solicitan, deduzca la relación que existe entre sus respectivos
vectores de índices y el vector nx, y exprese dicha relación mediante MATLAB.
Finalice este apartado representando gráficamente la señal original ( xn ) y, en otra ventana, las cuatro
señales resultantes de cada transformación (ver el comando subplot); titule y etiquete cada gráfico.
Indique en cada uno cuál es la relación entre la señal representada yi n y la original xn (e.g.,
“adelantada tres posiciones”, “invertida y luego retrasada…”).
lOMoARcPSD
x retrasada 2 x adelantada 1
3 3
2 2
1 1
0 0
-1 -1
-10 -5 0 5 10 -10 -5 0 5 10
ny1 ny2
2 2
1 1
0 0
-1 -1
-10 -5 0 5 10 -10 -5 0 5 10
ny3 ny4
Para cada una de las señales cuya expresión se ofrece a continuación, obtener su parte par y su parte
impar (para generar las señales invertidas utilice fliplr en vez de modificar la variable independiente o
vector de índices). Representar a continuación las tres señales en una misma figura (utilice subplot),
utilizando para todas el rango 10 n 10 . Codifique todo el ejercicio en un mismo script.
1, 0n5
x1 n 1, 5 n 0
0,
resto
1, n 2
2, n 1
x 2 n 3, n0
1, n7
0, resto
1, n 4,3
2,
n 3,2,1
x 3 n
1, n 1,0,2
0, resto
Compruebe que el ejercicio es correcto observando las simetrías de las señales pares e impares obtenidas.
>> Observe que si se desea efectuar operaciones aritméticas con varias señales distintas (caso de
este ejercicio), todas ellas deben compartir el mismo vector de índices; por lo tanto, las
transformaciones de la variable independiente han de trasladarse en este caso a la señal (no como
en el ejercicio anterior). <<
lOMoARcPSD
Cree una función f_descompone_par_impar que tome como parámetro una señal y devuelva dos señales:
su parte par y su parte impar; copie el script anterior y modifíquelo de modo que haga uso de la función
implementada (y que será llamada tantas veces como señales tiene este ejercicio).
E_x_t = t * sum(abs(x).^2);
N
Para el caso discreto, utilice la fórmula Energía( x[n]) x[n]
2
que en MATLAB se aproxima
n 0
mediante la instrucción:
E_x_n = sum(abs(x).^2);
E_x_t = tstep.*sum(abs(x).^2);
return;
E_x_n = sum(abs(x).^2);
return;
E_x_t =
50.0100
E_x_n =
51.0000
Genere en MATLAB un script que calcule la energía de las siguientes señales discretas en el intervalo
0 n 64
2, n0
1, n2
xn 1, n3 15
3, n4
0, resto
2
xn sen n 32
64
Genere en MATLAB los scripts de cálculo de potencia y un script que calcule la potencia de las
siguientes señales discretas en el intervalo 0 n 64
2, n0
1, n2
xn 1, n3 0.2344
3, n4
0, resto
2
xn cos n 0.5
64
lOMoARcPSD
Grupo
Práctica 2: Periodicidad
Puesto
Apellidos, nombre SOLUCIÓN Fecha
Apellidos, nombre SOLUCIÓN
El objetivo de esta práctica es explorar las utilidades de representación gráfica de MATLAB para
observar las especiales propiedades de periodicidad de las señales discretas.
Para llevar a cabo la práctica, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’
separado (salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de
la función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_2_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda (lunes A, martes B, miércoles C o viernes D).
Salvo que se le indique lo contrario en algún apartado concreto, no está permitido utilizar en los
scripts las funciones de control de flujo del programa de MATLAB (for, if-else, etc.).
2kπ
x k [n] = cos(ω 0 k n ) = cos n
8
k ∈ {0,1,2,3,4,5,6,7,8}
Desarrolle, sin utilizar bucles, un script que genere esta señal para los valores ,
en el intervalo n ∈ [0,10] , y que represente en un mismo gráfico estas nueve señales (utilice el comando
subplot para hacer un gráfico múltiple de 3x3 gráficos), y las etiquete para identificar sin duda a qué
señal corresponde cada representación.
lOMoARcPSD
A la vista del gráfico obtenido, y sin hacer ningún tipo de cálculos aparte, intente contestar a las
siguientes preguntas:
*
Para deducirlo acuda a su definición, es decir, el mínimo desplazamiento que ha de efectuarse sobre la señal
para que coincida con ella misma.
lOMoARcPSD
─ Ordene las nueve señales, dando número ‘cero’ a la de menor frecuencia o pulsación fundamental y
mismo número a señales con igual pulsación, e indique en la siguiente tabla el orden que ocupa cada
señal (observe que la pulsación 2π equivale a la pulsación 0, es decir, a una señal constante o de
mínima frecuencia) :
Orden en frecuencia 0 1 2 1 3 1 2 1 0
Repita el ejercicio anterior, pero esta vez trabajando con señales en forma seno, es decir:
2kπ
x k′ [n] = sin (ω 0 k n ) = sin n , k ∈ {0,1,2,3,4,5,6,7,8}
8
Observe el nuevo gráfico obtenido, e intente explicar por qué las señales x′4 [n] y x8′ [n] no presentan
el aspecto que cabría esperar a raíz de la expresión analítica que tienen; contraste su explicación con el
profesor de prácticas. Proponga una solución numérica (no gráfica) y póngala en práctica, de modo que
los resultados sean los esperables (utilice el comando round) y que la solución adoptada se pueda aplicar
a todas las señales representadas.
lOMoARcPSD
A la vista del nuevo gráfico obtenido, y sin hacer ningún tipo de cálculos aparte, conteste de nuevo a
las siguientes cuestiones:
x 0′ [n] x1′ [n] x 2′ [n] x 3′ [n] x 4′ [n] x 5′ [n] x 6′ [n] x 7′ [n] x8′ [n]
─ Ordene las nueve señales, dando número ‘cero’ a la de menor frecuencia o pulsación fundamental y
mismo número de orden a señales con igual pulsación, e indique en la siguiente tabla el orden que
ocupa cada señal:
x 0′ [n] x1′ [n] x 2′ [n] x 3′ [n] x 4′ [n] x 5′ [n] x 6′ [n] x 7′ [n] x8′ [n]
Orden en frecuencia 0 1 2 1 0 1 2 1 0
lOMoARcPSD
2 kπ
2 kπ 2 kπ
x k [n] = e n , k ∈ {0,1,2,3,4,5,6,7,8}
j n
8 = cos n + j sin
8 8
Observe que sus partes real e imaginaria son respectivamente las señales representadas en los dos
ejercicios anteriores. Teniendo esto en cuenta, observe simultáneamente los gráficos de los dos ejercicios
anteriores (cada uno en una ventana) y conteste a las siguientes cuestiones:
─ Teniendo en cuenta que las propiedades de periodicidad de una señal exponencial pura son las
resultantes de combinar sus partes real e imaginaria, del conjunto de las nueve señales exponenciales,
¿cuántas frecuencias fundamentales distintas se observan?
0,pi/4,pi/2,pi
─ Del conjunto de las nueve señales exponenciales, ¿cuál presenta frecuencia menor, cuál la presenta
mayor, y qué valor en cada caso?
2π 2π
x1 [n] = cos n , x1 (t ) = cos t
12 12
8π 8π
x 2 [n] = cos n , x 2 (t ) = cos t
31 31
1 1
x 3 [n] = cos n , x 3 (t ) = cos t
2 2
Desarrolle un script que genere estas seis señales en los intervalos n ∈ [0,50] y t ∈ [0,50] (definido en
segundos a intervalos de 0.2 s.) respectivamente, y represéntelas en un mismo gráfico de tres filas o
subgráficos (utilice subplot). En cada subgráfico represente superpuestas la señal continua (utilice plot)
y la señal discreta correspondiente (utilice stem).
lOMoARcPSD
A partir de la inspección de los gráficos, obtenga el periodo mínimo de repetición de las seis señales,
es decir, su periodo fundamental, y compruebe que los cálculos teóricos1 coinciden con sus
observaciones. Rellene la tabla adjunta:
N 0 observado 12 31 25
N 0 teórico 12 31 NO
x1 (t ) x 2 (t ) x 3 (t )
El objetivo de este ejercicio es desarrollar una función de MATLAB que verifique si una señal dada
presenta un periodo también dado.
Más específicamente, la función recibirá como parámetros un vector con valores de una señal discreta
1
Tenga en cuenta que en las señales continuas el periodo fundamental se obtiene analíticamente como T0 = 2π ω 0 , y para
ω 0 m m0
las señales discretas, el periodo es el valor entero N 0 que verifique = = , siendo m 0 cualquier número entero.
2π N N 0
lOMoARcPSD
(parámetro signal) y el valor del periodo que se desea verificar (parámetro period). El procedimiento
propuesto para hacer la verificación consiste en generar una nueva señal consistente en la señal signal
desplazada tantas unidades como indique el parámetro period. A continuación se seleccionarán las partes
de ambas señales que estén definidas, y se restarán (ver Fig. 1); si el resultado es nulo, indicará que
signal presenta el periodo dado; si no, no. Este resultado lo devolverá la función como valor de retorno.
No utilice bucles ni estructuras de control para llevar a cabo esta función.
signal
signal
desplazada
period
is_periodic
Para comprobar el funcionamiento de la función desarrollada, aplicarla sobre las tres señales discretas
del ejercicio anterior y rellenar la tabla adjunta (utilice en los dos primeros casos el valor observado, y en
el tercero utilice period=12 ):
signal
x1 [n] x 2 [n] x 3 [n]
period
12 31 12
is_periodic
0 0 Dif 0
Comente los resultados obtenidos, e indique, si procede, alguna solución a los problemas numéricos
que haya encontrado:
2π 3π
x1 [n] = cos n + 2 ⋅ cos n
N N
2 3
x 2 [n] = cos n + cos n
N N
2π 5π
x 3 [n] = cos n + 3 ⋅ cos n
N 2N
Suponiendo que N=6, represente las tres señales en un gráfico de 3x1 subgráficos (utilice subplot).
Represéntelas inicialmente en el rango n ∈ [0,49] . A continuación, a través de la observación de los
gráficos y de la utilización de la función f_test_period, obtenga el periodo fundamental de cada una y
represéntelas de nuevo, esta vez en un intervalo de dos periodos fundamentales (si alguna no fuera
lOMoARcPSD
Indique en qué condiciones la suma de dos señales periódicas es una señal periódica.
Cualquier señal x( t ) que sea igual a la suma de dos señales periódicas, x1( t ) y x2( t ), con períodos
fundamentales T1 y T2 respectivamente, será periódica si se cumple la siguiente relación:
T1 m m0
= = ⇒ T = n0T1 = m0T2, n0 y m0 ∈ enteros
T2 n n0
m0
siendo fracción irreducible (T es el m.c.m entre T1 y T2 )
N0
π π
x1 [n] = sin n ⋅ cos n
4 4
π
x 2 [n] = cos 2 n
4
π π
x 3 [ n ] = sin n ⋅ cos n
4 8
Represente las tres señales en un gráfico de 3x1 subgráficos (utilice subplot). Represéntelas en el
rango n ∈ [0,49] . A continuación, a través de la observación de los gráficos y de la utilización de la
función f_test_period, obtenga el periodo fundamental de cada una.
Indique en la tabla adjunta cuál es el periodo de las señales factores y el periodo de la señal producto.
Comente en qué condiciones el producto de dos señales periódicas es una señal periódica (efectúe las
pruebas adicionales que considere necesarias para llegar a una conclusión fundada):
El objetivo de este ejercicio es desarrollar una función de MATLAB que obtenga y devuelva el
periodo fundamental de una señal dada; si la señal no es periódica devolverá valor nulo, y si es constante,
valor unidad.
Más específicamente, la función recibirá como único parámetro una señal discreta (parámetro
signal). El procedimiento propuesto para obtener su periodo fundamental consiste en crear un bucle que
vaya llamando a la función f_test_period con valores crecientes del parámetro period (comenzando en
el valor 1 y terminando en la mitad de la longitud de la señal). Cuando la llamada a dicha función arroje
valor nulo, se devolverá el valor del periodo que ha provocado esta situación. Si el bucle terminara sin
que se haya verificado la condición anterior, se devolverá valor nulo.
Para desarrollar esta función es probable que requiera hacer uso de las funciones de programación
for, if y return. La función se almacenará en un fichero ‘f_get_period.m’ y presentará el siguiente
prototipo:
Grupo
Práctica 3: Convolución
Puesto
Apellidos, nombre Fecha
Apellidos, nombre
Para llevar a cabo la práctica, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’
separado (salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de
la función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_3_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda.
Salvo que se le indique lo contrario en algún apartado concreto, no está permitido utilizar en los
scripts las funciones de control de flujo del programa de MATLAB (for, if-else, etc.).
El objetivo de este ejercicio es llevar a cabo la convolución de dos señales desarrollando directamente
el significado de la operación.
n 1 0 n 10
xn
0 resto
1 0 n 3
hn
0 resto
El objetivo es calcular yn xn hn . Para ello, genere las señales xn y hn en el intervalo
n 0,20 . Teniendo en cuenta que la señal xn sólo toma valor en un número finito de puntos, yn
puede escribirse:
yn xk hn - k x0 hn x1 hn - 1 ... x9 hn - 9 x10 hn - 10
k
Para obtener yn , genere, sin utilizar bucles, cada una de las once funciones (es decir, sumandos) que
indica la expresión anterior y a continuación súmelas. Para poder sumarlas, todas ellas han de estar
definidas en el mismo intervalo de n, en decir, n 0,20 . Como guía para llevar a cabo esta operación,
observe que para generar un vector con la señal y 5 n x5 hn 5 en el mismo intervalo que esté
definida hn y teniendo en cuenta que los índices en Matlab comienzan en 1, se puede escribir:
Tenga en cuenta que esta operación de desplazamiento en la señal hn es válida porque hn se
definió en un intervalo mucho mayor que el que ocupan sus valores no nulos.
Represente en una figura con 12 gráficas (12 filas) las 11 señales desplazadas yk[n] y la suma y[n].
y0[n]
1
0.5
0
0 2 4 6 8 10 12 14 16 18 20
y1[n]
2
1
0
0 2 4 6 8 10 12 14 16 18 20
y2[n]
4
2
0
0 2 4 6 8 10 12 14 16 18 20
y3[n]
4
2
0
0 2 4 6 8 10 12 14 16 18 20
y4[n]
5
0
0 2 4 6 8 10 12 14 16 18 20
y5[n]
10
5
0
0 2 4 6 8 10 12 14 16 18 20
y6[n]
10
5
0
0 2 4 6 8 10 12 14 16 18 20
y7[n]
10
5
0
0 2 4 6 8 10 12 14 16 18 20
y8[n]
10
5
0
0 2 4 6 8 10 12 14 16 18 20
y9[n]
10
5
0
0 2 4 6 8 10 12 14 16 18 20
y10[n]
20
10
0
0 2 4 6 8 10 12 14 16 18 20
y[n]
40
20
0
0 2 4 6 8 10 12 14 16 18 20
lOMoARcPSD
Como resultado de la suma de las once subseñales habrá obtenido yn en el mismo intervalo
n 0,20 . Represente en otra figura, en un mismo gráfico de tres filas o subgráficos (utilice subplot),
las señales xn , hn e yn , y dibuje esta última en la gráfica adjunta:
Indique cuál es la duración de la señal yn y en qué índice comienza. A la vista de la expresión
analítica de yn , indique también qué relación tiene su duración e índice de comienzo con las respectivas
duraciones e índices de comienzo de las señales xn y hn :
El inicio de y[n] es básicamente el inicio (no nulo) de x[n] + inicio (no nulo) de h[n] =>
0+0=0.
Repita el ejercicio anterior, pero utilizando esta vez una respuesta al impulso unidad definida por:
n 2, 2 n 3
hn
0, resto
Defina ahora las señales involucradas en el intervalo o vector de índices n 5,20 , y desarrolle la
convolución siguiendo el mismo procedimiento. Tenga en cuenta que en este caso el valor x k
corresponde en MATLAB con el índice x(k-(-5)+1) del vector x.
Represente en un mismo gráfico de tres filas o subgráficos (utilice subplot), la señal xn y las
lOMoARcPSD
nuevas señales hn e yn , y dibuje esta última en la gráfica adjunta, indicando claramente qué índices
abarcan los valores no nulos de yn :
Observe que las tres señales comparten un mismo vector de índices, que es suficientemente amplio
como para contener los valores no nulos de todas ellas. Indique de nuevo qué relación tiene la duración e
índice de comienzo de yn con las respectivas duraciones e índices de comienzo de las señales xn y
hn :
El inicio de y[n] es básicamente el inicio no nulo de h[n] + inicio no nulo de x[n] -1+0=-1
Observe que la función conv toma como parámetros las señales x y h pero no sus vectores de índices.
Por lo tanto, la función no puede obtener ni devolver el vector de índices correcto para la señal y; es
lOMoARcPSD
responsabilidad del que llama a la función el definir de qué índice a qué índice va el vector de índices de
la señal y para poder representarlo adecuadamente. En conclusión, ny lo ha de definir usted.
Compruebe que las señales obtenidas son iguales a las de los ejercicios anteriores.
lOMoARcPSD
n2
1
xn u n 2
2
hn u n 2
N
1 a n 1
(recuerde que ak
k 0 1 a
)
n 1
1
1
y[n] u[n]
Expresión analítica
2
1
1
2
El objetivo es calcular yn xn hn utilizando la función conv y evaluar la validez del resultado
cuando xn y hn no se generan en intervalos infinitos (algo que no es posible en la práctica) sino que
se truncan a intervalos finitos. Para ello, genere la señal xn en el intervalo n 0,24 y la señal hn en
el intervalo n 2,14 , es decir, genere versiones truncadas de estas dos señales: xT n y hT n .
Obtenga a continuación su convolución yT n xT n hT n , defina su vector de índices, y represente
las tres señales involucradas (xT[n], hT [n], yT[n]) e y[n] sobre un vector de índices que permita representar
las cuatro señales.
Si xn y hn tienen longitud infinita, yn xn hn también ha de tenerla. Al truncar las señales
involucradas, el resultado también habrá quedado truncado. Deduzca en qué intervalo de valores de n se
verifica que yn yT n , y compruebe que sus deducciones se corresponden con lo observado.
Modifique los intervalos a que se han truncado las señales xn y hn para comprobar que sus
conclusiones son correctas. Explique el resultado obtenido:
lOMoARcPSD
Genere xn en el intervalo n 0,9 y las otras dos en el intervalo n 0,20 . A partir de ahora,
utilice siempre la función conv para efectuar convoluciones.
Obtenga la señal y1 n xn h1 n y defina su vector de índices. Obtenga a continuación la señal
y 2 n h1 n xn y defina su vector de índices. Represente las cuatro señales involucradas sobre el
vector de índices de mayor longitud (en un mismo gráfico, como en los ejercicios anteriores), y verifique
que y1 n y 2 n . Si no se verificara, explique el motivo.
lOMoARcPSD
Compruebe que la convolución de la señal xn con un sistema cuya respuesta al impulso unidad sea
hn h1 n h2 n , es la misma que la suma de las señales resultantes xn h1 n y xn h2 n . Para
ello, represente en cada caso, en dos gráficos independientes, las señales involucradas (cinco en el primer
caso y seis en el segundo), todas ellas sobre el vector de índices de mayor longitud.
lOMoARcPSD
lOMoARcPSD
lOMoARcPSD
Sea un sistema S1 cuya relación entrada salida está definida por yn (n 1) xn , y otro sistema S2
totalmente caracterizado por hS 2 h1 n . El objetivo es ver si la propiedad asociativa de la convolución
se verifica para estos dos sistemas, es decir, si:
Para obtener la señal resultante de las operaciones a la derecha de la igualdad, proceda del siguiente
modo:
Obtenga la respuesta al impulso unidad del sistema S1, es decir, obtenga la respuesta de este sistema al
impulso unidad: hS1 n (n 1) n . Para ello defina n en el mismo intervalo que lo estaba xn .
Obtenga la respuesta al impulso del sistema S1 en serie con S2, es decir hn h S1 n hS 2 n . Observe
que para ello tendrá que ampliar el rango de definición de hS1 n .
Obtenga la respuesta de este nuevo sistema a la señal de entrada: w B n xn hn .
Represente en cada caso, en dos gráficos independientes, las señales involucradas (cuatro en ambos
casos), todas ellas sobre el vector de índices de mayor longitud. Compruebe que las señales w A n y
w B n son idénticas. Si no lo fueran, explique el motivo.
No se cumplen las premisas de las SLI, por lo tanto su propiedad asociativa tampoco.
Grupo
Práctica 4: Series de Fourier
Puesto
Apellidos, nombre Fecha
Apellidos, nombre SOLUCION
Para llevar a cabo la práctica, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’
separado (salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de
la función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_4_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda.
Salvo que se le indique lo contrario en algún apartado concreto, no está permitido utilizar en los
scripts las funciones de control de flujo del programa de MATLAB (for, if-else, etc.).
El objetivo de este ejercicio es comprobar que las exponenciales complejas discretas son
efectivamente autofunciones de los sistemas LTI. Para comprobarlo, este ejercicio está orientado a
localizar los autovalores correspondientes a varias de estas funciones.
Suponiendo que se verifica la condición de reposo inicial para n < 0 , es posible obtener
analíticamente su respuesta al impulso, x[n] = δ [n] → y[n] = h[n] , aplicando recurrencia:
De la ecuación que describe el sistema, se desprende que y[n] = x[n] + 0.9 x[n − 1] + 0.25 y[n − 1] :
h[3] = y[3] = x[3] + 0.9 x[2] + 0.25 y[2] = 0.25 2 ⋅ (0.9 + 0.25)
…
1, n=0
h[n ] =
n −1
(0.9 + 0.25) * (0.25) n>0
0 n<0
Sean las señales:
π
x1 [n] = e
j n
4
x 3 [n] = (9 10)n
x 4 [n] = n + 1
Defina las cuatro señales xi [n] en el intervalo n ∈ [− 20,50] , y la señal h[n ] en el intervalo n ∈ [0,70]
y represéntelas en cinco gráficos en fila en una misma ventana (utilice subplot). Caso de que alguna
señal tenga parte real y parte imaginaria, representa simultáneamente su módulo y fase en el mismo
gráfico (comando hold y dos colores).
lOMoARcPSD
Observe que h[n ] toma valores en el intervalo n ∈ [0, ∞ ) ; por lo tanto, ya que en la práctica no podemos
definir un vector de infinitos valores, cualquier cálculo de una respuesta y[n] utilizando la función conv
tendrá que utilizar una versión reducida o truncada de h[n ] , que denominaremos hT [n] . Según se vio en
la práctica anterior, ello hará que la respuesta obtenida, yT [n] , sea una versión reducida o truncada de la
respuesta teórica, y[n] . Teniendo en cuenta que en este caso hT [n] se ha definido en el intervalo
n ∈ [0,70] , indique en qué intervalo se verificará que yT [n] = y[n] .
lOMoARcPSD
n∈ [0, 50]
NOTA: en principio según el guión el transitorio es prácticamente nulo a partir de n ≥ 0 , con lo cual
el intervalo debería ser [0,50]. Para sacarlo gráficamente, observe el comportamiento (con la
herramienta Datatip) de la convolución de h[n] con las señales periódicas
Obtenga, utilizando la función conv, las respuestas y i [n] , y represéntelas en un nuevo gráfico de
cuatro filas; represéntelas únicamente en el intervalo en que son válidas.
Debido a la imposibilidad que tiene MATLAB de trabajar con señales infinitamente largas, las señales
xi [n] han de comenzar en un instante determinado. Ello da lugar a una respuesta natural o transitoria en
y i [n] , que conforme aumenta n se va haciendo despreciable. En este caso, comenzando las señales en
n = −20 , el transitorio es prácticamente nulo para n ≥ 0 . Como la propiedad de las exponenciales como
autofunciones se da en régimen permanente, para comprobarla compararemos las entradas y las
respuestas sólo desde el índice n = 0 hasta el final del intervalo de validez de las respuestas. En este
intervalo, si la relación y i [n] xi [n] es constante, indica que xi [n] es una autofunción del sistema, y que
dicha constante es el autovalor buscado.
Represente las cuatro señales H i = yi [n] xi [n] en un nuevo gráfico de cuatro filas y rellene la tabla
adjunta:
lOMoARcPSD
Es autofunción (SI/NO) SI NO SI NO
El comando filter calcula la respuesta de un sistema LTI causal especificado por una ecuación en
diferencias, lineal y de coeficientes constantes, y suponiendo reposo inicial. Más específicamente, sea el
sistema está definido por la ecuación:
N M
∑a k y[n − k ] = ∑ b x[n − k ]
k
k =0 k =0
Para un vector fila de valores de entrada, x, la expresión y=filter(b,a,x) obtiene el vector de valores de
salida, y, siendo a un vector con los valores de ak, y b un vector fila con los valores de bk. El vector de
salida tiene el mismo rango de valores que el de entrada, y todos sus valores son válidos (a diferencia de
lo que ocurre con la función conv debido al uso de h[n ] , truncada por necesidad).
Obtenga, ahora utilizando la función filter, las respuestas y i [n] , y represéntelas en un nuevo gráfico
de cuatro filas. Obtenga, como en el caso anterior, los autovalores, comparando las entradas y las
respuestas desde el índice n = 0 .
Represente de nuevo las cuatro señales H i = yi [n] xi [n] en un nuevo gráfico de cuatro filas y rellene
la tabla adjunta:
lOMoARcPSD
Es autofunción (SI/NO) SI NO SI NO
La operación inversa se realiza del siguiente modo: dada la serie de coeficientes a k , k ∈ [0, N − 1] ,
utilice x=N*ifft(a) para obtener un periodo de la señal periódica x[n] .
Para evitar efectos derivados de la precisión finita con que opera MATLAB, redondee al quinto
decimal (recuerde lo visto en la Práctica 2) los valores de las señales resultantes de ambas operaciones
(fft e ifft) antes de hacer nada más con ellas.
2π
x1 [n] = cos
~ n , que es una señal par
10
2π
x 2 [n] = sin
~ n , que es una señal impar
10
Obtenga los coeficientes de su DSF siguiendo el procedimiento indicado: defina las señales
lOMoARcPSD
x1 [n] = ~
x1 [n] y x 2 [n] = ~
x 2 [n] en el intervalo n ∈ [0, N 0 − 1] , y aplique la expresión indicada. En un
mismo gráfico, represente en la fila superior tres gráficos con x1 [n] , el módulo de sus coeficientes y la
fase de sus coeficientes; en la fila inferior represente en otros tres gráficos la información correspondiente
de x 2 [n] .
Compruebe que los coeficientes corresponden con lo que cabría esperar, y que efectivamente verifican
las propiedades que corresponden a las señales pares e impares. Comente, en este sentido, el resultado
obtenido:
NOTA: es posible que la representación de las fases no salga idéntica. En tal caso, un problema que
probablemente tengan muchos alumnos sean factores de redondeo.
a 0 = 1, a 2 = a −* 2 = e jπ 4 , a 4 = a −* 4 = 2e jπ 3
lOMoARcPSD
Determine analíticamente el valor de los coeficientes a k . Para ello recuerde que los coeficientes del
DSF cumplen la relación a k = ak + N0 .
ak ,
a 0 = 1, a1 = a − 4 = a 4* = 2e − jπ 3 , a 2 = e jπ 4 , a3 = a − 2 = a 2* = e − jπ 4 , a 4 = 2e jπ 3
k ∈ [0, N 0 − 1]
Aplique sobre el vector de coeficientes la función ifft para obtener un periodo, x[n ] de la señal
periódica a que pertenecen. Genere a continuación la señal ~x [n ] en el intervalo n ∈ [− 3N ,3N − 1] 0 0
x1 [ n] = { 1, , 0≤n≤7
1, 0≤n≤7
x 2 [n] = ,
0, 8 ≤ n ≤ 15
1, 0≤n≤7
x3 [n] = ,
0, 8 ≤ n ≤ 31
Defina tres vectores, x1, x2 y x3, cada uno con un solo periodo de las tres señales definidas.
Represente a continuación en un mismo gráfico de tres filas las tres señales periódicas en el intervalo
n ∈ [0,63] (para ello, replique los periodos de cada una que sea necesario).
Obtenga los coeficientes del DSF de las tres señales y represente su módulo en un mismo gráfico de
tres filas. Indique cuál es el valor medio en un periodo de cada señal y compruebe que el primer
coeficiente del desarrollo de cada señal coincide con su valor medio en un periodo. Asimismo calcule la
energía por período de las tres señales, tanto a partir de las muestras de la señal como de los coeficientes
ak:
El objetivo del ejercicio es observar el efecto que tiene eliminar parte de las componentes
frecuenciales de una señal, y comprobar que en señales discretas no se produce el fenómeno de Gibbs.
Este ejercicio parte de la serie de coeficientes, a k , k ∈ [0,31] , obtenidos para la señal x3 [n] del
ejercicio anterior; por lo tanto, replique la parte del ejercicio anterior necesaria para obtenerlos.
Teniendo en cuenta que al ser x3 [n] una señal real, sus coeficientes verifican a k = a −* k , genere en el
intervalo n ∈ [0,32] las siguientes señales, x3 _ m [n] , que consisten en el DSF de x3 [n] truncado (es decir,
con sólo m de los armónicos):
2 2π
x3 _ 2 [n] = ∑
jk n
ak e 32
k = −2
8 2π
x3 _ 8 [n] = ∑
jk n
ak e 32
k = −8
12 2π
x3 _ 12 [n] = ∑
jk n
ak e 32
k = −12
lOMoARcPSD
16 2π
x3 _ all [n] = ∑
jk n
ak e 32
k = −15
Represente las cuatro señales en un mismo gráfico de cuatro filas, de modo que se muestre cómo la
familia de funciones va convergiendo a x3 [n] . Indique si se aprecia el fenómeno de Gibbs en las
reconstrucciones parciales.
Grupo
Práctica 5: Transformada de Fourier
Puesto
Apellidos, nombre Fecha
Apellidos, nombre SOLUCION
El objetivo de esta práctica es mostrar al alumno el modo de obtener la Transformada de Fourier (TF)
de una señal en tiempo continuo, observar ciertas características de la TF, y comprobar la utilidad de la
representación de sistemas LTI en el dominio transformado.
Para llevar a cabo la práctica, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’
separado (salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de
la función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_5_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda .
∞ ∞
X ( jω ) = ∫
−∞
x(t ) ⋅ e − jωt dt = lim
τ →0
∑ x(nτ ) ⋅ e
n = −∞
− jω (nτ )
⋅τ
Para la mayoría de las señales, ésta es una buena aproximación. Si además la señal x(t ) es nula fuera
del intervalo 0 ≤ t < T , y siempre que se tome un valor suficientemente pequeño de τ , es posible
escribir:
∞ N −1
X ( jω ) = x(t ) ⋅ e − jωt dt = x(t ) ⋅ e − jωt dt ≈ ∑ x(nτ ) ⋅ e − jω (nτ )
T
∫
−∞ ∫0
n =0
⋅τ
, donde N es un entero tal que T = Nτ , con lo que el sumatorio se extiende desde t = 0 hasta
t = T − τ e incluye T τ valores muy próximos de la variable t (tantos y tanto más próximos cuanto
menor sea el valor de τ ). Obsérvese que el sumatorio es precisamente la DFT multiplicada por τ de una
señal discreta x[n] = x(nτ ) , que toma valores en n ∈ [0, N − 1] . Por lo tanto, recordando lo visto en la
Práctica 4, la expresión Xw=tao*fft(x) arrojará una señal discreta:
2πk 2πk
X [k ] ≈ X ( jω k ) donde ω k = = , k ∈ [0, N − 1]
T Nτ
, que contiene el valor aproximado de N muestras de la TF de x(t ) . Sin embargo, dado que la
función fft obtiene la DFT en el intervalo ω ∈ [0,2π ] , en el que el subintervalo ω ∈ [π ,2π ] corresponde
a pulsaciones negativas, es necesario recolocar la segunda mitad del vector X al principio del vector
(Xw=fftshift(Xw)) para obtener la aproximación de la TF en ω ∈ [− π / τ , π / τ ] :
2πk 2πk ⎛ N N⎤
X [k ] = X ( jwk ) donde ω k = = , k ∈ ⎜ − , ⎥ , donde se asume que N es par.
T Nτ ⎝ 2 2⎦
lOMoARcPSD
x1 (t ) = e −2t
x 2 (t ) = e −2t ⋅ cos(2πt )
x3 (t ) = e −2t ⋅ cos(8πt )
x4 (t ) = e −2t ⋅ cos(100t )
El objetivo es obtener y representar su TF siguiendo el método ya expuesto. Para ello defina las cuatro
señales en el intervalo 0 ≤ t < 10 utilizando τ = 0.01 , obtenga su correspondiente TF y defina un vector
con los valores de la variable ω a que corresponden cada uno de los valores de las TF obtenidas (según
lo visto, w=[-pi:2*pi/N:pi]*(1/tao); en este caso, por ser N=T/tao=1000 un número par y resultar
2*pi/N múltiplo de pi, haga además w=w(1:end-1) para que la longitud de este vector iguale a los T/tao
valores del vector transformada). Represente en una misma ventana de cuatro filas y dos columnas
(utilice subplot) las ocho funciones, cada señal (en función de t) y su correspondiente transformada (en
función de ω , únicamente su módulo) en una fila distinta.
A la vista de los gráficos obtenidos indique las relaciones existentes entre parámetros observables en
cada una de las cuatro señales (p.ej., el valor medio y la frecuencia de variación de cada una de ellas), y
parámetros observables en sus respectivas TF (p.ej., valores concretos, aspecto y localización de los
máximos):
lOMoARcPSD
lOMoARcPSD
A fin de verificar los datos observados en el ejercicio anterior, a continuación del código de dicho
ejercicio:
1. Obtenga el valor medio de cada señal xi (t ) (utilice para ello la función mean) y compruebe
que coincide con el coeficiente a0 de su DSF (recuerde que este coeficiente es proporcional
al valor de la TF en el origen: a0 = X ( j 0) / T ). Rellene la tabla adjunta:
x1 (t ) x2 (t ) x3 (t ) x4 (t )
3. Verifique la Relación de Parseval. Para ello, obtenga por una parte la energía de cada señal*
xi (t ) , y a continuación compruebe que coincide con 1 2π veces la energía de cada función
X i ( jω ) . Rellene la tabla adjunta:
x1 (t ) x2 (t ) x3 (t ) x4 (t )
∫ x (t )
2
dt 0,2550332 0,141532 0,130822 0,130092
i
0,255052
∫ X ( jω )
1 2 0,141532 0,130822 0,130092
dω
2π
i
*
En esta práctica se utiliza repetidamente una aproximación discreta de una señal continua, f (t ) ,
tomando una muestra cada τ valores, de modo que f [n] = f (nτ ) . En esta situación, el área abarcada por
f (t ) en un intervalo de t es posible aproximarla como la suma de áreas abarcadas por rectángulos de
altura f [n] y anchura τ , en el intervalo equivalente de n, de modo que se verifica:
∫ X ( jω )
1 2
Análogamente, deduzca la aproximación a seguir para calcular dω , para ello utilice el
2π
i
El objetivo de este ejercicio es observar y caracterizar el espectro de una señal real de audio. Para
obtener muestras de una señal de audio, incluya en su fichero .m los siguientes comandos:
El resultado será directamente un vector columna de nombre y, que contiene N=52634 muestras de
una señal de audio, y (t ) , de duración total T=6,425s, tomadas cada τ = 1 8192 s . Si su equipo dispone de
altavoces, reproduzca el contenido de la señal utilizando el comando sound(y,(1/tao)).
1122 Hz
Frecuencia máxima (Hz)
(7050 rad/s)
Valor medio ( a0 )
0.00028903
Indique además si se verifica, por ser y (t ) una señal real, que Y ( jω ) = Y * (− jω ) . Para comprobarlo
verifique que la señal resta de ambas, Y ( jω ) − Y * (− jω ) , tiene energía prácticamente nula (en
lOMoARcPSD
comparación con la de Y ( jω ) ). Para obtener la señal inversa utilice la función flipud (recuerde que al
ser y un vector columna, su TF también lo será, y por lo tanto no tiene sentido utilizar fliplr), para
obtener la señal conjugada utilice conj, y para restar ambas señales tenga en cuenta que sus índices
correspondientes a ω = 0 han de estar alineados (algo que por defecto no ocurre ya que al tener la señal
transformada un número par de elementos, la función flipud no sólo invierte sino que desplaza un valor).
Rellene la tabla adjunta:
Energía de Y ( jω )
0.16702
Energía de Y ( jω ) − Y (− jω )
*
0
El objetivo de este ejercicio es obtener una señal y (t ) a partir de su TF. Para ello, este ejercicio
continúa el ejercicio anterior, es decir, el punto de partida es el vector de muestras de Y ( jω ) que allí se
obtuvo.
Represente en una misma ventana de tres filas (utilice subplot) la señal y (t ) , la señal y r (t ) , y la
diferencia entre ambas. Si su equipo dispone de altavoces, reproduzca el contenido de la señal original y
de su TF inversa e indique si subjetivamente aprecia diferencia entre ambas:
lOMoARcPSD
y (t ) y r (t ) y (t ) − y r (t )
Grupo
Práctica 6: Aplicaciones de la TF
Puesto
Apellidos, nombre Fecha
Apellidos, nombre
Para llevar a cabo la práctica, desarrolle cada ejercicio en un fichero de comandos ‘ejercicio_X.m’
separado (salvo cuando se le solicite desarrollar una función, en cuyo caso el fichero llevará el nombre de
la función). Justo antes de finalizar la práctica, comprima los ficheros ‘.m’ generados en un único fichero
‘practica_6_Puesto_XX . zip’, conéctese al sistema de entrega de prácticas de la Intranet y entréguelo en
el grupo que corresponda.
El eco en una señal de audio es un fenómeno cuyo resultado es la llegada a nuestro oído de una misma
señal original superpuesta a versiones desplazadas de ella misma, debido al efecto del entorno sobre la
señal. Es posible simular este entorno como un sistema LTI cuya respuesta al impulso unidad es una
función delta más una o varias funciones delta desplazadas (según se quiera uno o varios ecos):
ht t t t 01 t t 02
Para añadir eco a una señal, podemos convolucionarla con esta respuesta al impulso o bien, aplicando
la propiedad de multiplicación de la TF, multiplicar su TF con la de la señal que queremos modificar.
Este último es el procedimiento que propone este ejercicio.
1 + e –jwt01 + e –jwt02 =
H j
1 + e –jw0.81 + e –jw1.62
y sea y t xt ht la señal que buscamos, resultante de añadir ecos a xt . Obtenga la TF de xt
siguiendo el método expuesto en la Práctica 5, y utilizando los mismos valores para T y que allí se
indicaban ( T 10 y 0.01 ) . Defina a continuación la función H j , utilizando directamente su
expresión analítica, en el mismo intervalo de que X j . Multiplique ambas transformadas para
obtener Y j X j H j . Obtenga finalmente la transformada inversa de Y j , es decir, la señal
y t xt ht deseada.
lOMoARcPSD
Represente en una misma ventana de tres filas y dos columnas (utilice subplot) las funciones
involucradas, cada señal (en función de t) y su correspondiente transformada (en función de ,
únicamente el módulo) en una fila distinta (para representar los tres impulsos de ht suponga que
h0 ht 01 ht 02 1 ).
A la vista de los gráficos obtenidos, comente el efecto de la operación efectuada tanto en el dominio
del tiempo como en el transformado:
load splat;
y=y(1:6144);y=y';
tao=1/8192;
T=0.75;
N=T/tao;
lOMoARcPSD
El resultado será directamente un vector de nombre y, que contiene N=6144 muestras de una señal de
audio, y t , de duración total T=0,75s, tomadas cada 1 8192 s . Si su equipo dispone de altavoces,
reproduzca el contenido de la señal utilizando el comando sound(y,(1/tao)).
Amplíe la duración de la señal y t , añadiendo ceros al final, de modo que su duración total pase a ser
justo el doble, es decir T=1,5s.
Teniendo en cuenta que ahora la señal de entrada es y t , repita el ejercicio anterior con valores
t 01 0.2 y t 02 0.4 , y llamando xt a la señal de salida. Si su equipo dispone de altavoces, reproduzca
el contenido de la señal utilizando el comando sound(x,(1/tao)), y observe y comente el efecto de la
operación efectuada:
Se oye eco.
[x,Fs,bits]=wavread('sound_3.wav');
tao=1/Fs;
N=size(x,1);
T=N*tao;
x=x’;
Obtenga la TF de la señal y represente en un gráfico de dos filas las señales xt e X j (sólo su
módulo), pero esta última en función de la frecuencia en vez de en función de la pulsación (sencillamente
defina el vector w , como de costumbre, y luego defina f=w./(2*pi)) para la representación.
lOMoARcPSD
Sean tres filtros, uno paso bajo, otro paso banda y otro paso alto, definidos por la expresiones:
4, f f1
H 1 j , donde f1 3761.6 Hz
0, resto
4, f 2 f f1
H 2 j 4, f1 f f 2 , donde f1 3761.6 Hz y f 2 7523.2 Hz
0,
resto
4, f f2
H 3 j , donde f 2 7523.2 Hz
0, resto
Comente, desde el punto de vista frecuencial, las características auditivas de las señales que ha
escuchado:
lOMoARcPSD
5.3 Encriptación
El objetivo de este ejercicio es observar qué ocurre si invertimos la TF de una señal de audio de ancho
de banda limitado, xt . Esta técnica, denominada inversión de espectro, es muy utilizada para encriptar
señales de audio analógico. Básicamente, la operación consiste en reflejar su TF, X j , con respecto al
eje 0 . Para ello, el método propuesto (que de hecho se utiliza en la práctica) es multiplicar la señal de
audio por una señal sinusoidal ct de pulsación igual a la máxima, max , que presente la señal:
Si sobre la señal resultante aplicamos un filtro paso bajo de pulsación de corte max , obtendremos la TF,
X e j , de la señal encriptada, x e t .
Con el método propuesto en la Práctica 5 para calcular la TF de una señal de tiempo continuo, obtenemos
la TF únicamente en el intervalo k , max , max , por lo que no es necesario efectuar el
filtrado paso bajo indicado.
Incluya el mismo código indicado en el ejercicio anterior para cargar la señal de audio xt
correspondiente al fichero sound_3.wav.
Efectúe las operaciones indicadas hasta obtener la señal encriptada x e t . Represente en un gráfico de
dos filas las TF de la señal original y de la señal resultante, X j y X e j . Reproduzca la señal
encriptada e indique qué es lo que escucha y si es capaz de entenderlo:
No.
lOMoARcPSD
[xe,Fs,bits]=wavread('sound_5.wav');
tao=1/Fs;
N=size(xe,1);
T=N*tao;
xe=xe’;
Se trata de una señal, x e t , encriptada por el procedimiento de inversión de espectro descrito al principio
de esta sección. Observe que para desencriptarla y obtener la señal original xt basta con aplicarle
exactamente la misma operación de encriptado (que vuelve a invertir el espectro y, por lo tanto, lo
devuelve a su aspecto original). Escuche la señal encriptada, efectúe la operación de desencriptación,
represente en un gráfico de dos filas las TF de la señal encriptada y de la señal resultante, X e j y
X j , y transcriba el contenido de la señal original:
lOMoARcPSD