You are on page 1of 68

lOMoARcPSD

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)

1.1 Generación y manipulación básica de señales


Para seguir este apartado escriba en la línea de comando todos los ejemplos mostrados. Utilice la
ayuda de MATLAB para documentarse sobre cualquier comando que desconozca.

1.1.1 Ejercicio 1: representación de una señal en un rango dado

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
xn  
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)

─ Para representar la señal en el intervalo [-5,5]:

>> n=[-5:5];
>> x=[0 0 x 0 0]; % x tenía el valor del ejemplo anterior
lOMoARcPSD

─ Para representarla en [-100,100]:

>> 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).

1.1.2 Ejercicio 2: representación de dos señales en un cierto rango

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

Señal representada con stem(x1)   n  1

Señal representada con stem(x2)  n  4

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

1.1.3 Ejercicio 3: representación de señales continuas

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 xt   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

Para representar gráficamente la señal, resaltando su carácter de señal continua,

utilice plot en vez de stem:

>> plot(t,x);

Represente gráficamente las señales x1 t   sen(t / 4) y x 2 t   cos( t / 4) en el intervalo 4  t  4


dando valores cada 1/8 de segundo. Represente ambas sobre la misma figura utilizando el comando plot
y, a continuación, nuevamente sobre la misma figura, represente ambas con el comando stem (para ello
utilice el comando hold). Utilice dos colores: uno para las dos representaciones de x1 t  y otro para las
dos de x 2 t  .

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

1.1.4 Ejercicio 4: representación de señales complejas

Sea ahora el caso de una exponencial compleja discreta xn  e j ( / 8) n en el intervalo 0  n  32 :

>> n=[0:32];
>> x=exp(j*(pi/8)*n);

El vector x contiene una serie de 33 valores complejos de la señal xn . 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

Compruebe y recuerde que si en la función no se especifica qué característica de la señal compleja se


desea representar (es decir, si escribe stem(n,x)), MATLAB representará, por defecto, la parte real de la
señal y mostrará una advertencia en la línea de comando indicándolo.

1.1.5 Ejercicio 5: operaciones aritméticas con señales

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]);

y efectúe las siguientes operaciones:

>> y1=x1+x2;
>> y2=x1-x2;
>> y3=x1.*x2;
>> y4=x1./x2;
>> y5=2*x1;
>> y6=x1.^x2;

Observe que en el caso de la multiplicación, división y exponenciación, es necesario preceder el


operador de un punto, para indicar que la operación ha de llevarse término a término, en vez de entre
matrices (e.g., el producto de matrices requiere que el segundo término tenga tantas filas como columnas
tenga el primero, algo que no verifican los vectores x1 y x2).

Represente las siete señales de este apartado en ocho figuras distintas.


lOMoARcPSD

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

1.1.6 Ejercicio 6: scripts y funciones

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.

Replique los ejemplos que se presentan a continuación:


lOMoARcPSD

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))');

x1[n] = cos(pi*n/4) / media


1

0.8

0.6

0.4

0.2
xl[n]

-0.2

-0.4

-0.6

-0.8 Cos (pi*n/4)


Media (Cos (pi*n / 4))
-1
0 2 4 6 8 10 12 14 16
Tiempo (Discreto)

Invoque el script creado escribiendo ejercicio6 en la línea de comandos de MATLAB.

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

x2[n] = sen(pi*n/4) / media


1
Sen (pi*n/4)
0.8 Media (Sen (pi*n / 4))

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):

function [y,z] = f_obtiene_yz(x)


% [y,z] = f_obtiene_yz(x) admite una señal ‘x’ y
% devuelve dos señales, ‘y’ y ‘z’, donde ‘y’ vale 2*x
% y ‘z’ vale (5/9)*(x-3)
y = 2.*x;
z = (5/9).*(x-3);

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

1.2 Operaciones con señales


Realice todos los ejercicios que se le solicite en ficheros (scripts) ‘.m’, de modo que pueda guardar y
modificar sus resultados sin necesidad de volver a teclear el código de nuevo. Después de cada ejercicio,
valide su resultado mediante el documento SOLUCIÓN, en caso de que resultado y solución no
concuerden, solicite al profesor de prácticas que valide el resultado en su memoria de prácticas.

1.2.1 Ejercicio 7: transformaciones de la variable independiente

Defina en un fichero la siguiente función discreta, xn , en el intervalo 3  n  11 , a través de un


vector x y del vector de índices nx correspondiente:

2, n0
1, n2

xn   1, n3
3, n4

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

Fig.1: Representación gráfica de la señal original

Una vez definida la señal xn , defina en el mismo fichero ‘.m’ las siguientes señales:

y1 n  xn  2
y 2 n  xn  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 ( xn ) 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 xn (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

x invertida x invertida y luego adelantada 1 ó x retrasada 1 y luego invertida


3 3

2 2

1 1

0 0

-1 -1
-10 -5 0 5 10 -10 -5 0 5 10
ny3 ny4

1.2.2 Ejercicio 8: señales pares e impares

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, 0n5

x1 n   1,  5  n  0
0,
 resto

1, n  2
2, n  1

x 2 n  3, n0
1, n7

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).

1.2.3 Ejercicio 9: energía de señales


t T
Para calcular la energía de una señal continua utilice la fórmula: Energía( x(t ))  
2
x(t ) dt que en
t 0
MATLAB se aproxima mediante la instrucción:

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);

El siguiente código (copie y pegue en un script y denomínelo: get_Energia_x_t) calcula la energía


de la señal continua de vector de valores x y vector de índices t=[init:tstep:finT]:

function [E_x_t] = get_Energia_x_t(x,tstep)


lOMoARcPSD

E_x_t = tstep.*sum(abs(x).^2);

return;

El siguiente código (copie y pegue en un script y denomínelo: get_Energia_x_n ) calcula la energía


de la señal discreta de vector de valores x:

function [E_x_n] = get_Energia_x_n(x)

E_x_n = sum(abs(x).^2);

return;

Por ejemplo, la señal continua


tstep=0.01;
t=[0:tstep:100];
xt=cos(pi/4.*t);
Tiene energía
E_x_t=get_Energia_x_t(xt,tstep)

E_x_t =

50.0100

Por ejemplo, la señal discreta


n=[0:100];
xn=cos(pi/4.*n);
Tiene energía
E_x_n=get_Energia_x_n(xn)

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, n0
1, n2

xn   1, n3 15
3, n4

0, resto

 2 
xn  sen n 32
 64 

1.2.4 Ejercicio 10: potencia de señales

La definición de potencia es la energía por unidad de tiempo,


Para una señal continua, en MATLAB se aproxima mediante la instrucción:
lOMoARcPSD

P_x_t = ( t * sum(abs(x).^2))) / ( t *len(x));


que, simplificando, resulta en
P_x_t = sum(abs(x).^2)) / len(x);

Para el caso discreto sería , que en MATLAB se aproxima


mediante la instrucción:
E_x_n = sum(abs(x).^2) / len(x);

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, n0
1, n2

xn   1, n3 0.2344
3, n4

0, resto

 2 
xn  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.).

2.1 Rango de frecuencias de las exponenciales discretas periódicas


2.1.1 Ejercicio 1: Señales sinusoidales en forma coseno

El objetivo de este ejercicio es representar señales periódicas discretas de pulsación creciente, y


observar el rango efectivo de variación de pulsación que estas señales presentan. Para ello, considere la
señal discreta:

 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:

─ Del conjunto de las nueve señales representadas, ¿cuántas son distintas?

─ Rellene la tabla adjunta:

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]

Valor de ω0k 0 pi/4 pi/2 3pi/4 pi 5pi/4 3pi/2 7pi/4 2pi

Periodo fundamental*, N 0 Inf 8 4 8 2 8 4 8 Inf

2π 0 pi/4 pi/2 pi/4 pi pi/4 pi/2 pi/4 0


ω fundamental,
N0

*
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) :

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 3 1 2 1 0

2.1.2 Ejercicio 2: Señales sinusoidales en forma seno

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:

─ Del conjunto de las nueve señales representadas, ¿cuántas son distintas?

─ Rellene la tabla adjunta:

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]

Valor de ω0k 0 pi/4 pi/2 3pi/4 pi 5pi/4 3pi/2 7pi/4 2pi

Periodo fundamental, N 0 Inf 8 4 8 Inf 8 4 8 Inf

2π 0 pi/4 pi/2 pi/4 0 pi/4 pi/2 pi/4 0


ω fundamental,
N0

─ 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.1.3 Ejercicio 3: señales exponenciales puras

Sean las señales exponenciales complejas:

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:

─ Del conjunto de las nueve señales exponenciales, ¿cuántas son distintas?

─ 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?

Menor -> k = 0 y = 8. frecuencia 0

Mayor -> k = 4. frecuencia pi

2.2 Periodicidad en señales discretas


2.2.1 Ejercicio 4: Comparación señales discretas vs. señales continuas

Sean las siguientes señales:

 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:

x1 [n] x 2 [n] x 3 [n]

N 0 observado 12 31 25

N 0 teórico 12 31 NO

x1 (t ) x 2 (t ) x 3 (t )

T0 observado 12 7.8 12.6

T0 teórico 12 7.75 12.55664

2.2.2 Ejercicio 5: función de comprobación de periodicidad

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

Fig. 1: Diagrama de funcionamiento propuesto para la función f_test_period

La función se almacenará en un fichero ‘f_test_period.m’ y presentará el siguiente prototipo:

function is_periodic = f_test_period(signal,period)


% f_test_period acepta una señal ‘signal’ y un número ‘period’
% y devuelve ‘0’ si la señal presenta dicho periodo, y un valor
% distinto de cero en caso contrario. Esta función hace uso de
% la función ‘length(X)’.

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.2.3 Ejercicio 6: periodicidad de la suma de señales periódicas

Considere las tres señales siguientes:

 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

periódica, represéntela en n ∈ [0,49] ). Dibuje el resultado obtenido:


lOMoARcPSD

Indique en qué condiciones la suma de dos señales periódicas es una señal periódica.

¿Cuál es el periodo de la señal suma?

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

Igual para el caso discreto.

2.2.4 Ejercicio 7: periodicidad del producto de señales periódicas

Considere las tres señales siguientes:

π  π 
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.

Dibuje el resultado obtenido:


lOMoARcPSD

Indique en la tabla adjunta cuál es el periodo de las señales factores y el periodo de la señal producto.

N 0 , factor 1 N 0 , factor 2 N 0 , señal


x1 [n]
8 8 4
x 2 [n]
8 8 4
x 3 [n]
8 16 16

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):

2.2.5 Ejercicio 8: función de cálculo de periodicidad

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:

function fundamental_period = f_get_period(signal)


% f_get_period acepta una señal ‘signal’ y devuelve su periodo, si
% la señal es periódica, ‘0’ si no lo es, y ‘1’ si es una señal
% de valor constante.

Compruebe su funcionamiento con cualquiera de las señales de los ejercicios anteriores.


lOMoARcPSD

Grupo
Práctica 3: Convolución
Puesto
Apellidos, nombre Fecha
Apellidos, nombre

El objetivo de esta práctica es familiarizar al alumno con la suma de convolución, fundamental en el


estudio de los sistemas lineales, mediante la realización de ejercicios que ilustren las propiedades de dicha
operación.

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.).

3.1 Convolución de señales discretas

3.1.1 Ejercicio 1: convolución ‘manual’ de señales causales finitas

El objetivo de este ejercicio es llevar a cabo la convolución de dos señales desarrollando directamente
el significado de la operación.

Sean las señales:

n  1 0  n  10
xn  
 0 resto

1 0  n  3
hn  
0 resto

El objetivo es calcular yn  xn  hn . Para ello, genere las señales xn y hn en el intervalo
n  0,20 . Teniendo en cuenta que la señal xn sólo toma valor en un número finito de puntos, yn
puede escribirse:


yn   xk   hn - k   x0 hn   x1 hn - 1  ...  x9 hn - 9  x10  hn - 10
k 

Para obtener yn , 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  x5 hn  5 en el mismo intervalo que esté
definida hn y teniendo en cuenta que los índices en Matlab comienzan en 1, se puede escribir:

>> y5=x(5+1).*[zeros(1,5) h(1:end-5)];


lOMoARcPSD

Tenga en cuenta que esta operación de desplazamiento en la señal hn es válida porque hn 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 yn 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 xn , hn e yn , y dibuje esta última en la gráfica adjunta:

Indique cuál es la duración de la señal yn y en qué índice comienza. A la vista de la expresión
analítica de yn , 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 xn y hn :

Duracion Y = Duracion X + Duracion H – 1 => 14 = 11 + 4 - 1.

El inicio de y[n] es básicamente el inicio (no nulo) de x[n] + inicio (no nulo) de h[n] =>
0+0=0.

El final de y[n] es según longitud.

3.1.2 Ejercicio 2: convolución ‘manual’ de señales no causales finitas

Repita el ejercicio anterior, pero utilizando esta vez una respuesta al impulso unidad definida por:

n  2, 2  n  3
hn  
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 xn y las
lOMoARcPSD

nuevas señales hn e yn , y dibuje esta última en la gráfica adjunta, indicando claramente qué índices
abarcan los valores no nulos de yn :

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 yn con las respectivas duraciones e índices de comienzo de las señales xn y
hn :

Duracion Y = Duracion X + Duracion H – 1 => 15 = 11 + 5 - 1.

El inicio de y[n] es básicamente el inicio no nulo de h[n] + inicio no nulo de x[n] -1+0=-1

El final de y[n] es según longitud

3.1.3 Ejercicio 3: la función conv de MATLAB

La invocación de esta función de MATLAB se realiza del siguiente modo:

nx=... % Intervalo ‘nx’ de valores no nulos de la señal ‘x’


x=... % Definición del vector ‘x’ en el intervalo ‘nx’
nh=... % Intervalo ‘nh’ de valores no nulos de la respuesta al impulso ‘h’
h=... % Definición del vector ‘h’ en el intervalo ‘nh’
y=conv(x,h); % Devuelve un vector ‘y’ de longitud ‘nx+nh-1’
ny=... % Intervalo ‘ny’ de valores no nulos de la salida ‘y’

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.

Repita los ejercicios 1 y 2 en dos scripts, ‘ejercicio_3a.m’ y ‘ejercicio_3b.m’, utilizando la función


conv. Para ello defina los vectores x y h según se ha indicado más arriba, realice la convolución, y defina
el vector de índices que corresponde a la señal y (teniendo en cuenta en qué índice debe comenzar y qué
longitud ha de tener). Represente al final de cada script las tres señales involucradas (como en los
ejercicios anteriores), pero todas ellas sobre el vector de índices mayor, o sea, sobre ny (para ello, añada
ceros antes y/o después de x y h, según convenga).

Compruebe que las señales obtenidas son iguales a las de los ejercicios anteriores.
lOMoARcPSD

3.1.4 Ejercicio 4: convolución de señales de duración infinita

Sean las señales de duración infinita:

n2
1
xn    u n  2
2

hn  u n  2

Calcule yn  xn  hn de forma analítica e indíquela a continuación

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 yn  xn  hn utilizando la función conv y evaluar la validez del resultado
cuando xn y hn 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 xn en el intervalo n  0,24 y la señal hn 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 xn y hn tienen longitud infinita, yn  xn  hn 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 yn  yT n , y compruebe que sus deducciones se corresponden con lo observado.
Modifique los intervalos a que se han truncado las señales xn y hn para comprobar que sus
conclusiones son correctas. Explique el resultado obtenido:
lOMoARcPSD

3.2 Operaciones sobre sistemas LTI discretos


Sean las señales:

1, n0 2, n 1


 1, n 1 5, n2
1, 0n4  
xn   , h1 n  3, n2, h2 n  4, n3
0, resto 1, n4  1, n4
 
0, resto 0, resto

Genere xn 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.

3.2.1 Ejercicio 5: conmutatividad

Obtenga la señal y1 n  xn  h1 n y defina su vector de índices. Obtenga a continuación la señal
y 2 n  h1 n  xn 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

3.2.2 Ejercicio 6: distribución respecto de la suma

Compruebe que la convolución de la señal xn con un sistema cuya respuesta al impulso unidad sea
hn  h1 n  h2 n , es la misma que la suma de las señales resultantes xn  h1 n y xn  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

3.2.3 Ejercicio 7: asociatividad

Sea un sistema S1 cuya relación entrada salida está definida por yn  (n  1)  xn , 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:

xn hS1 n  hS 2 n  xn hS1 n hS 2 n


Para obtener la señal resultante de las operaciones a la izquierda de la igualdad, proceda del siguiente
modo:

 Obtenga la señal y n  aplicando directamente su expresión en función de la entrada, es decir


yn  ( n  1)  xn , en vez de aplicando la convolución.

 Obtenga la señal resultante w A n  yn  hS 2 n

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 xn .

 Obtenga la respuesta al impulso del sistema S1 en serie con S2, es decir hn  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  xn  hn .

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.

¿Qué premisas de los sistemas LTI no se cumplen?


lOMoARcPSD
lOMoARcPSD
lOMoARcPSD

Grupo
Práctica 4: Series de Fourier
Puesto
Apellidos, nombre Fecha
Apellidos, nombre SOLUCION

El objetivo de esta práctica es profundizar en la respuesta de sistemas LTI, comprobar el


comportamiento de estos sistemas ante señales exponenciales complejas, y desarrollar prácticamente
varios de los conceptos relacionados con el Desarrollo en Serie de Fourier (DSF) de señales discretas
periódicas.

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.).

4.1 Exponenciales complejas como autofunciones de sistemas LTI


4.1.1 Ejercicio 1: sistemas LTI causales

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.

Sea un sistema LTI causal definido por la siguiente relación entrada/salida:

y[n] − 0.25 y[n − 1] = x[n] + 0.9 x[n − 1]

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[0] = y[0] = x[0] + 0.9 x[− 1] + 0.25 y[− 1] = 1

h[1] = y[1] = x[1] + 0.9 x[0] + 0.25 y[0] = 0.9 + 0.25


h[2] = y[2] = x[2] + 0.9 x[1] + 0.25 y[1] = 0.25 ⋅ (0.9 + 0.25)

h[3] = y[3] = x[3] + 0.9 x[2] + 0.25 y[2] = 0.25 2 ⋅ (0.9 + 0.25)

Deduzca la expresión general de h[n ] :


lOMoARcPSD

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 2 [n] = sin (n ⋅ π 8 + π 16)

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

Parte A: obtención de las respuestas con la función conv.

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.

Obtención de los autovalores:

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

x1 [n] x 2 [n] x 3 [n] x 4 [n]

Es autofunción (SI/NO) SI NO SI NO

Autovalor H: 1.7415+1.147i - 2.7692 -

Parte B: obtención de las respuestas con la función filter.

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

x1 [n] x 2 [n] x 3 [n] x 4 [n]

Es autofunción (SI/NO) SI NO SI NO

Autovalor H: 1.7415+1.147i - 2.7692 -

4.2 Desarrollo en Serie de Fourier de señales discretas periódicas


Dada una señal x[n] periódica, para obtener con MATLAB los coeficientes a k de su DSF, utilice la
función a=(1/N)*fft(x), donde N es el periodo fundamental de la señal x[n] , y x es un vector fila que
contiene los valores de un periodo cualquiera, y sólo uno, de x[n] .

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.

4.2.1 Ejercicio 2: DSF de sinusoides discretas

Sean las siguientes señales discretas periódicas:

 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.

4.2.2 Ejercicio 3: Obtención de una señal a partir de sus coeficientes

Sea una señal discreta periódica de periodo N 0 = 5 , con coeficientes:

a 0 = 1, a 2 = a −* 2 = e jπ 4 , a 4 = a −* 4 = 2e jπ 3
lOMoARcPSD

x [n ] , sea una señal que


A la vista de los coeficientes, espera que la señal periódica a que pertenecen, ~
tome valores complejos, que sólo tome valores reales, o que sólo los tome imaginarios?

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]

Expresión analítica: X(n) = 1 + 4 cos(2pi/5n - pi/3) + 2 cos(4pi/5n + pi/4);

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

replicando la señal x[n ] , y represéntela:


lOMoARcPSD

4.2.3 Ejercicio 4: DSF de señales discretas cuadradas

Sean las siguientes señales discretas periódicas:

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

con periodos N 01 = 8 , N 02 = 16 y N 03 = 32 respectivamente.

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:

x1 [n] x 2 [n] x 3 [n]

Valor medio: 1 0.5 0.25

Coeficiente a0 : 1 0.5 0.25

Energía a partir de x[n] 1 0.5 0.25

Energía a partir de ak 1 0.5 0.25


lOMoARcPSD

Coeficientes de la DFS para las señales extendidas


lOMoARcPSD

Coeficientes de la DFS para un periodo de la señal

4.2.4 Ejercicio 5: Reconstrucción de una señal a partir de parte de sus coeficientes.

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.

x3_2[n] x3_8[n] x3_12[n] x3_all[n]

Valor medio: 0.25 0.25 0.25 0.25

Coeficiente a0 : 0.25 0.25 0.25 0.25

Energía a partir de x[n] 0.2155 0.2402 0.2459 0.25

Energía a partir de ak 0.2155 0.2402 0.2459 0.25


lOMoARcPSD

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 .

5.1 Aproximación numérica a la TF de tiempo continuo


Para obtener en MATLAB la TF de una señal continua, se acude a aproximaciones numéricas: dada
una señal x(t ) , la integral que involucra el cálculo de su TF es posible aproximarla por un sumatorio, del
siguiente modo:

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

Dado que X [k ] representa muestras de una señal continua, X ( jω ) , en un intervalo de pulsaciones


⎛ π π⎤
ωk ∈ ⎜ − , ⎥ , represéntela siempre en este intervalo con el comando plot en vez de con stem.
⎝ τ τ⎦
Teniendo en cuenta estas ideas, desarrolle los ejercicios que propone esta práctica.

5.1.1 Ejercicio 1: obtención de la TF de señales básicas

Sean las señales:

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

5.1.2 Ejercicio 2: extracción de parámetros de la TF de señales básicas

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 )

Valor medio 0.050502 0.0051017 0.00081631 0.00052175


a0 0.050502 0.0051017 0.00081631 0.00052175

2. Obtenga en cada función X i ( jω ) la pulsación a la cual se produce el primer máximo (utilice


para ello la función [C,I]=max()) y compruebe que coincide aproximadamente con la
pulsación de la oscilación de cada señal xi (t ) que figura en su respectiva expresión analítica.
Rellene la tabla adjunta:
x1 (t ) x2 (t ) x3 (t ) x4 (t )

Pulsación 0 2*pi 8*pi 100


ωk X i ( jω k ) 0 6,2832 25.1327 99.9026
es máximo

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


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:

∫ f (t )dt = ∑τ ⋅ f [n] = τ ⋅ ∑ f [n]

∫ X ( jω )
1 2
Análogamente, deduzca la aproximación a seguir para calcular dω , para ello utilice el

i

paso del vector ω .


lOMoARcPSD

5.1.3 Ejercicio 3: TF de una señal de audio, obtención y caracterización

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:

load laughter; % ‘laughter.wav’ es el fichero con muestras de la señal de audio


tao=1/8192; % Intervalo de tiempo, en segundos, entre muestras consecutivas
T=6.4251; % Duración total, en segundos, de la señal de audio
N=T/tao; % Número total de muestras o valores discretos

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)).

Siguiendo el mismo procedimiento que en el ejercicio anterior, obtenga la TF de esta señal.


Represente en una misma ventana de cuatro filas (utilice subplot), por un lado la señal (en función de t) y
por otro, en las otras tres filas, el módulo y las partes real e imaginaria de su correspondiente
Transformada de Fourier (en función de ω ).
lOMoARcPSD

Operando exclusivamente con la TF indique qué componente de frecuencia, en hertzios, de la señal


y (t ) es la de valor más pronunciado (utilice la función max sobre el módulo de la TF) y cuál es el valor
medio de la señal y (t ) :

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

5.1.4 Ejercicio 4: síntesis de la TF de una señal real a partir de su TF

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.

Dado el vector Yw que representa la señal Y ( jω ) , el modo de obtener su transformada inversa, y r (t ) ,


representada por el vector yr, es utilizar el comando yr=ifft(fftshift(Yw)/tao);. Dado que, por
problemas de redondeo, esta operación genera una señal con una pequeña parte imaginaria, si se sabe,
como es el caso, que la señal resultante es real, conviene eliminar la parte imaginaria escribiendo
yr=real(yr); .

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

Para obtener una referencia cuantitativa de su similitud o de su diferencia, calcule y consigne en la


tabla adjunta la energía total de las tres señales:

y (t ) y r (t ) y (t ) − y r (t )

Energía: 0.16702 0.16702 0

Comente el resultado obtenido:


lOMoARcPSD

Grupo
Práctica 6: Aplicaciones de la TF
Puesto
Apellidos, nombre Fecha
Apellidos, nombre

El objetivo de esta práctica es mostrar al alumno diversas aplicaciones básicas de la Transformada de


Fourier en la definición de sistemas LTI y en la obtención de las respuestas de estos sistemas a señales de
audio.

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.

5.1 Generación de ecos

5.1.1 Ejercicio 1: generación de ecos en una señal ejemplo

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):

ht    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.

Suponiendo que t 01  0.81 y t 02  1.62 , obtenga analíticamente la expresión de H  j  :

1 + e –jwt01 + e –jwt02 =
H  j 
1 + e –jw0.81 + e –jw1.62

Sea la señal de partida:

xt   e 2t  cos(4t )

y sea y t   xt   ht  la señal que buscamos, resultante de añadir ecos a xt  . Obtenga la TF de xt 
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   xt   ht  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 ht  suponga que
h0   ht 01   ht 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:

5.1.2 Ejercicio 2: generación de ecos en una señal de audio

El objetivo de este ejercicio es observar subjetivamente el efecto presentado en el ejercicio anterior,


para lo cual se repetirá la operación pero sobre una señal de audio. Para obtener muestras de una señal de
audio adecuada, incluya en su fichero .m los siguientes comandos:

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 xt  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.

5.2 Filtrado selectivo

5.2.1 Ejercicio 3: filtrado selectivo de una señal de audio

El objetivo de este ejercicio es observar subjetivamente el efecto de eliminar bandas seleccionadas de


frecuencia en una señal vocal. Para obtener muestras de una señal de vocal adecuada, descargue de la
página web de la asignatura la señal de audio sound_3.wav a su directorio de trabajo, e incluya en su
fichero .m los siguientes comandos para cargarla:

[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 xt  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

Operando en el dominio de la TF, obtenga las tres señales y1 t   xt   h1 t  , y 2 t   xt   h2 t  e


y 3 t   xt   h3 t  . Represente en un nuevo gráfico de tres filas y dos columnas las señales H i  j  e
Yi  j  (cada pareja en una fila) y reproduzca con el comando sound(y,(1/tao))cada una de las tres
señales y i t  obtenidas.
lOMoARcPSD

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, xt  . 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 ct  de pulsación igual a la máxima,  max , que presente la señal:

ct   2 cos max  t  


 C  j   2    max   2    max 
FT

xt   ct   X  j   C  j   X  j    max   X  j    max 


1

FT
2

La siguiente figura muestra gráficamente el efecto de esta operación en el dominio frecuencial:

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.

5.3.1 Ejercicio 4: encriptación de una señal de audio

Incluya el mismo código indicado en el ejercicio anterior para cargar la señal de audio xt 
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

5.3.2 Ejercicio 5: desencriptación de una señal de audio

Descargue de la página web de la asignatura la señal de audio sound_5.wav a su directorio de trabajo,


e incluya en su fichero .m los siguientes comandos cargarla:

[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 xt  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