Está en la página 1de 27

Departamento de Ingeniera El ectrica

Facultad de Ingeniera
Universidad de Concepci on
Concepci on, Chile.
Tarea N

4
Procesamiento Digital de Se nales.
Nombre: Pablo Riquelme J.
Profesor: Jorge E. Pezoa.
Ayudante: Diego E. Mendoza.
25 de noviembre de 2013
Ingeniera Civil en Telecomunicaciones
Procesamiento Digital de Se nales Tarea N

Indice General
1. Relaci on entre transformadas de Fourier. 2
1.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2. Relaci on entre la transformada Z y la de Fourier. 5
2.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Cancelaci on de ruido aditivo 6
3.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Convolucion va FFT 9
4.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
5. Primer ataque de los duendes: propiedades de la DFT/FFT 12
5.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
6. Segundo ataque de los duendes: eliminacion de ruido arm onico en una se nal
de audio 14
6.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
7. Interpolaci on en frecuencia 16
7.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
8. Superposicion de se nales de audio 21
8.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
9. Filtrado de se nales medicas 23
9.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
1. Relacion entre transformadas de Fourier.
Considere la se nal x[n] = a
n
u[n] con 0 < a < 1. Se pide:
1. Calcular la transformada de Fourier de tiempo discreto (DTFT) de x[n] de forma te orica
usando la f ormula:
X(

f) X(e
j2

f
) =

n=
x[n]e
j2n

f
,

f
_

1
2
,
1
2
_
(1)
Denir uno o dos valores apropiados para a y gracar el resultado en Matlab.
2. Calcular la transformada discreta de Fourier (DFT) de x[n] de forma te orica usando la
f ormula:
X[k] =
L1

n=0
x[n]e
j
2
n
kn
, k = 0, 1, . . . , N 1 (2)
Denir uno o dos valores apropiados para a, gracar el resultado en Matlab y comparar
el resultado anterior.
3. Calcular la DFT de x[n] de forma pr actica usando la transformada rapida de Fourier
(FFT) de Matlab. Denir uno o dos valores apropiados para a, gracar el resultado y
comparar con los dos resultados anteriores.
4. Calcular la DFT de x[n] a partir de la DTFT usando la relaci on X(e
j2
k
N
) = X[k].
Comparar con su resultado de los puntos 2 y 3.
5. Aproximar la DTFT de x[n] a partir de la DFT usando la relaci on X(e
j2
k
N
) = X[k].
Comparar con su resultado del punto 1.
1.1. Solucion
1. El valor de la transformada de Fourier de tiempo discreto (DTFT) de la se nal x[n] = a
n
u[n]
es el siguiente
X(

f) X(e
j2

f
) =

n=
x[n]e
j2n

f
=

n=
a
n
e
j2n

f
(3)
=

n=
(ae
j2

f
)
n
=
1
1 ae
j2

f
,

f
_

1
2
,
1
2
_
(4)
Acontinuacion en la Figura 1, se observan los resultado de los respectivos valores de a,
donde cabe resaltar que se utiliz o un n umero innito contable de puntos para x[n], mientras
que en frecuencia se uso un n umero innito no contable de puntos para

f.
2 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
(a) (b)
Figura 1: (a)Transformada de Fourier de Tiempo Discreto (DTFT) de x[n] con a=0.4, (b) Transfor-
mada de Fourier de Tiempo Discreto (DTFT) de x[n] con a=-0.4.
Observaciones Generales: Se observa que ambas gracas poseen igual magnitud para
un valor de a con distinto signo, adem as se puede ver que para cuando

f se aproxima a
0 se consigue el valor de la sumatoria de la funci on, adem as se trata de la misma funcion
solo que ambas funciones est an desplazadas, esto se deduce al analizar el dominio de

f y
considerando para estos valores la identidad de Euler se transforma en (1)
n
. Luego es
posible deducir dicho comportamiento.
2. El valor de la transformada discreta de Fourier DFT de la se nal x[n] = a
n
u[n] es el
siguiente
X[k] =
L1

n=0
x[n]e
j
2
N
kn
=
L1

n=0
_
ae
j
2
N
kn
_
n
(5)
=
1 a
L
e
j
2L
N
kn
1 ae
j
2
N
kn
, k = 0, 1, . . . , N 1 (6)
Si bien a primera vista los resultados debiesen ser equivalentes, sin embargo al comparar,
esto se determin o que la denicion de la DTFT usa un n umero innito de puntos mientras
que la de la DFT usa un n umero nito.
3 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
(a) (b)
Figura 2: (a)Transformada Discreta de Fourier (DFT) de x[n] con a=0.4, (b) Transformada Discreta
de Fourier (DFT) de x[n] con a=-0.4.
Observaciones Generales: Al observar las gr acas resultan analoga a la DTFT, pero en
este se considerar un arreglo con valores que toma la variable k, los cuales son representados
como k=30*f, para la obtenci on de su respuesta. .
3. As, al realizar el c alculo de la DFT de x[n] de forma practica, es decir usando la FFT
de Matlab debemos usar un n umero nito de puntos para x[n], Luego comparamos el
resultado que se obtiene entonces tenemos que la FFT es numericamente igual a (6) pero
no es igual a (4), independiente del valor de a, adem as que la FFT es numericamente igual
a (4) cuando f = kN con k = 0, 1, 2, . . . , N 1.
4. Para realizar el calculo de la DFT de x[n] a partir de la DTFT usando la relaci on
X(e
j2kN
) = X[k], que signica que f = kN con k = 0, 1, . . . , N 1. Claramente se
tiene que:
X(f) =
1
1 ae
j2
k
N
, k = 0, 1, . . . , N 1 (7)
Que no es mas que un n umero innito contable de puntos en el tiempo pero en frecuencia
muestreados Usando solo N puntos.
5. Al realizar la aproximacion la DTFT de x[n] a partir de la DFT se debe usar la relaci on
X(e
j2kN
) = X[k], lo que signica transformar kN en

f y as poder generar una variable
continua, obteniendo lo siguiente
4 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
(a) (b)
Figura 3: (a)Comparacion del DTFT con DFT en la se nal x[n] con a=0.4, (b) Comparacion del
DTFT con DFT en la se nal x[n] con a=-0.4.
Observaciones Generales: Se observa que valores son los mismos a los obtenidas ante-
riormente, si bien, la similitud no se poda notar ya que k empezaba en cero y terminaba
en 29, Luego se deduce que ambas son iguales.
2. Relacion entre la transformada Z y la de Fourier.
Considere la se nal x[n] = a
n
u[n] con 1 < a < 1. Se pide:
1. Calcular la transformada Z de x[n] de forma te orica usando la formula:
X(z) =

n=
x[n]z
n
(8)
Denir uno o dos valores apropiados para a y gracar la magnitud de la transformada Z
en Matlab.
2. Calcular la DTFT de x[n] a partir de la transformada Z de x[n] calculada en la parte an-
terior. Se pide ademas calcular la magnitud de la DTFT y gracarla en Matlab. Comparar
con la gr aca de la magnitud de la transformada Z.
2.1. Solucion
1. Es sabido que la transformada Z de x[n] se calcula de la siguiente manera:
X(z) =

n=
x[n]z
n
=

n=
a
n
z
n
=

n=
(az

1)
n
=
1
1 az
1
(9)
5 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
2. El c alculo de la DTFT de x[n] se obtiene a partir de la transformada Z de x[n] evaluando
X(z) en z = e
j
= e
j2

f
, es decir
X(e
j2

f
) =
1
1 ae
j2

f
(10)
3. Cancelaci on de ruido aditivo
(Problema grupal). En clase vimos que la DFT de la se nal discreta x[0], x[1], . . . , x[N 1]
se calcula usando la expresion:
X[k] =
N1

n=0
x[n] exp
_

2ikn
N
_
, k = 0, . . . , N 1. (11)
Notar que si escribimos la se nal discreta en forma vectorial, i.e., x
T

_
x[0], . . . , x[N 1]
_
,
entonces podemos calcular la DFT por medio de N productos punto entre dos vectores:
X[k] =
_
x[0] x[1] . . . x[N 1]
_
_
_
_
_
_
_
_
_
exp
_

2ik 0
N
_
exp
_

2ik 1
N
_
.
.
.
exp
_

2ik (N1)
N
_
_
_
_
_
_
_
_
_
= x
T
w[k; N], k = 0, . . . , N 1,
(12)
donde w[k; N]
T

_
exp
_

2ik 0
N
_
, . . . , exp
_

2ik,(N1)
N
_
_
. Notar que w[k; N] es un vector de
dimensi on N que depende de k. Si trabajamos un poco m as la expresion podemos escribir la
DFT como un producto vector-matriz (y ya sabemos que multiplicar vectores y matrices en
Matlab es algo muy sencillo):
X[0] =
N1

n=0
x[n] exp
_

2i0n
N
_
= x
T
w[0; N] (13)
X[1] =
N1

n=0
x[n] exp
_

2i1n
N
_
= x
T
w[1; N] (14)
.
.
.
X[N 1] =
N1

n=0
x[n] exp
_

2i(N 1)n
N
_
= x
T
w[N 1; N]. (15)
6 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Por lo tanto podemos escribir:
_
_
_
_
_
X[0]
X[1]
.
.
.
X[N 1]
_
_
_
_
_
= x
T
_
w[0], w[1], . . . , w[N 1]
_
(16)
X = x
T
_
_
_
_
_
_
_
_
exp
_

2i0 0
N
_
exp
_

2i0 1
N
_
. . . exp
_

2i0 (N1)
N
_
exp
_

2i1 0
N
_
exp
_

2i1 1
N
_
. . . exp
_

2i1 (N1)
N
_
.
.
.
.
.
.
.
.
.
.
.
.
exp
_

2i(N1) 0
N
_
exp
_

2i(N1) 1
N
_
. . . exp
_

2i(N1) (N1)
N
_
_
_
_
_
_
_
_
_
(17)
= x
T
_
_
_
_
_
_
_
1 1 . . . 1
1 exp
_

2i
N
_
. . . exp
_

2i(N1)
N
_
.
.
.
.
.
.
.
.
.
.
.
.
1 exp
_

2i(N1)
N
_
. . . exp
_

2i(N1) (N1)
N
_
_
_
_
_
_
_
_
(18)
X = x
T
W
N
. (19)
Ocupe el comando meshgrid que aprendi o en la tarea 1 y genere en Matlab la matriz W
N
.
Compare su resultado con el comando dftmtx. A continuacion, genere una funci on en Matlab
que reciba como argumento una se nal x[n] y calcule la DFT usando (?). El prototipo de la
funci on en Matlab es: function X = CalculaDFT(x);. Verique sus resultados comparando
con el comando fft.
3.1. Solucion
Esta parte de la tarea tiene la nalidad de comparar la DFT con el comando t de MATLAB.
La DFT es una transformada para se nales en tiempo discreto que tiene la siguiente forma:
X[k] =
N1

n=0
x[n] exp
_

2ink
N
_
, k = 0, 1, . . . , N 1 (20)
Realizando algunos arreglos algebraicos, se puede llegar nalmente a una expresi on matricial
para la transformada
_
_
_
_
_
X[0]
X[1]
.
.
.
X[N 1]
_
_
_
_
_
T
=
_
_
_
_
_
X[0]
X[1]
.
.
.
X[N 1]
_
_
_
_
_
T
x
_
_
_
_
_
_
_
_
_
_
1 1 . . . 1
1 exp
_

2i11
N
_
. . . exp
_

2i(N1)1
N
_
1 exp
_

2i12
N
_
. . . exp
_

2i(N1)2
N
_
.
.
.
.
.
.
.
.
.
.
.
.
1 exp
_

2i1(N1)
N
_
. . . exp
_

2i(N1) (N1)(N1)
N
_
_
_
_
_
_
_
_
_
_
_
(21)
7 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
La cual de una forma resumida, se expresa como X = x
T
W, con
X
_
X[0], X[1], . . . , X[N 1]
_
(22)
x
T
_
x[0], x[1], . . . , x[N 1]
_
(23)
(24)
W =
_
_
_
_
_
_
_
_
_
_
1 1 . . . 1
1 exp
_

2i11
N
_
. . . exp
_

2i(N1)1
N
_
1 exp
_

2i12
N
_
. . . exp
_

2i(N1)2
N
_
.
.
.
.
.
.
.
.
.
.
.
.
1 exp
_

2i1(N1)
N
_
. . . exp
_

2i(N1) (N1)(N1)
N
_
_
_
_
_
_
_
_
_
_
_
(25)
(26)
Para generar la matriz W, utilizamos el comando meshgrid; este comando genera dos matrices
de orden NxN de las formas:
_
_
_
_
_
_
_
0 1 2 . . . N
0 1 2 . . . N
0 1 2 . . . N
.
.
.
.
.
.
.
.
.
.
.
.
0 1 2 . . . N
_
_
_
_
_
_
_
;
_
_
_
_
_
_
_
0 0 0 . . . 0
1 1 1 . . . 1
2 2 2 . . . 2
.
.
.
.
.
.
.
.
.
.
.
.
N N N . . . N
_
_
_
_
_
_
_
(27)
Aplicando este comando, podemos obtener el siguiente c odigo
[a,b]=meshgrid(0:length(x)-1,0:length(x)-1);
w=exp((-j*2*pi*a.*b)./length(x));
Finalmente con este codigo, podemos generar un funci on que nos entrega el valor de la DFT
(vector la) de un vector columna ingresado
function [XCalculaDFT]=CalculaDFT(x)
[a,b]=meshgrid(0:length(x)-1,0:length(x)-1);
w=exp((-j*2*pi*a.*b)./length(x));
XCalculaDFT=x*w;
end
Una de las nalidades de esta parte de la tarea es la comparaci on de la DFT con los comandos
dftmtx y fft.
El comando dftmtx genera una matriz de orden NxN, la cual es la misma que generamos a
traves del comando meshgrid. El calculo de la DFT a traves de Matlab, se hace de la forma
X=dftmtx(N)*x, donde x y X son vectores columna.
El comando fft nos entrega la DFT del vector ingresado, sea este en forma de columna o la.
Finalmente, analizando los tres metodos propuestos, se tiene que todos coinciden en sus resul-
tados, aunque estos sean entregados de formas distintas: vector columna o vector la.
8 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
4. Convolucion va FFT
Volvamos a considerar el problema 2.3 de la tarea 1. En ese problema consideramos la
entrada: x[n] = u[n] u[n N] (con N un entero positivo) y las respuestas a impulso de dos
sistemas h
1
[n] = a[n] y h
2
[n] =

K
k=0
(1 + k)[n k], K < N . Ud. conoce las respuestas
analticas y va Matlab de las convoluciones, adem as de las transformadas Z de las funciones.
En este problema veremos como obtener estas convoluciones va FFT. El teorema de convoluci on
establece que
x[n] h[n] = F
1
{X[f]H[f]} (28)
donde F
1
{} es la DFT inversa, * es la convoluci on entre las se nales discretas x[n] y h[n],
cuyas DFT son, respectivamente, X[f] y H[f]. Notar que el producto X[f]H[f] es un producto
entre dos funciones discretas, el que se implementa multiplicando elemento a elemento. Esto se
hace en Matlab con el operador *.
Intento 1: calcule las DFTs de x[n], h
1
[n] y h
2
[n] usando fft. Una vez obtenidas, X[f], H
1
[f]
y H
2
[f] calcule X[f]H1[f] y X[f]H2[f]. Puede calcular los productos? Por que? Puede
calcular la transformada inversa? en caso de que pueda calcularla Su resultado concuerda con
el resultado que Ud. ya conoce?.
Intento 2: agregue a la se nal mas corta (x[n] o h
i
[n]) ceros al nal de ella hasta que las dos
se nales tengan el mismo largo (en el tiempo discreto) y calcule ahora X[f]H1[f] y X[f]H2[f].
Puede calcular los productos?Por que? Puede calcular la transformada inversa? en caso de
que pueda calcularla Su resultado concuerda con el resultado que Ud. ya conoce?.
Intento 3: agregue a x[n] y a h
i
[n] ceros al nal de las se nales hasta ambas tengan el largo
L
x
+ L
hi
1, donde L
x
es el largo de x[n] y L
hi
es el largo de h
i
[n]. Calcule ahora X[f]H1[f] y
X[f]H2[f]. Puede calcular los productos? Por que? Puede calcular la transformada inversa?
en caso de que pueda calcularla Su resultado concuerda con el resultado que Ud. ya conoce?
Explique por que.
Bonus:como Ud. ya conoce las transformadas Z de las se nales, calcule los productos Y
i
(z) =
H
i
(z)X(z) y luego calcule las transformadas Z inversas de los Y
i
(z) para obtener el resultado
nal. Notar que la convoluci on en el tiempo resulta ser un producto de polinomios en z.
4.1. Soluci on
intento 1: Considerando que x[n] = u[n] u[n N] es un pulso rectangular ,se tiene que
para un N = 7 por ejemplo que x[n] = u[n] u[n 7]. As este vector tendra un valor 1 s olo
hasta el valor N = 7 con un n N,dado que para este valor y valores superiores de N se tiene
que x[n] = 0. Luego considerando lo anterior se obtiene
x[n] = [1111111] (29)
con un n [0, 6] Si las respuesta impulso de dos sistemas son: h
1
[n] = a[n] y h
2
[n] =

K
k=0
(1 + k)[n k] con K < N. Luego,considerando un K = 5 se tiene que h
2
[n] =

5
k=0
(1 + k)[n k].
As, se tiene que
h
2
[n] =
5

k=0
(1 + k)[n k] = 1[n] + 2[n 1] + 3[n 2] + 4[n 3] + 5[n 4] + 6[n 5] = [123456]
(30)
9 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Para todo n N. Para h
1
[n] = a[n] es igual a 1 si y solo si n = 0 as h
1
[n] = 1 para todo
n N. Luego, h
1
[n] = a 1 usando la herramienta de Matlab se calcula la t de x[n],h
1
[n] y
h
2
[n]
>> x=[1 1 1 1 1 1 1]; % vector x
>> h2=[1 2 3 4 5 6];
>> h1=2;
>> tfx=fft(x)
tfx =7.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
>> tfh2=fft(h2)
tfh2 =21.0000 -3.0000+5.1962i -3.0000 + 1.7321i
-3.0000 -3.0000-1.7321i -3.0000 - 5.1962i
>> tfh1=fft(h1)
tfh1 =2
El producto de X[f]H
1
[f] es posible calcularlo, mediante el uso de Matlab se obtiene
>> XH1=tfx.*tfh1
XH1 =14.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
Pero hay que tener mucho cuidado, dado que como h
1
[n] es una matriz de dimensi on 1 es posible
hacer la multiplicaci on lo que no dice que este correcto y que sea as para todos los casos. Para
que sea posible la multiplicacion las dimensiones de X[f] y h
1
[n] tienen que ser las mismas
dado que al multiplicar se nales discretas se multiplica termino a termino y al no coincidir las
dimensiones de los vectores, Matlab arrojara un error. Al multiplicar X[f]H
2
[f] se obtiene un
error de dimensi on, dado que X[f] y H
2
[f] tienen distintas dimensiones, por lo que no es posible
hacer la multiplicacion. Esto se muestra a continuacion
>> XH2=tfx.*tfh2
??? Error using ==> times
Matrix dimensions must agree.
Adem as la multiplicaci on de la transformada inversa de Fourier entre X[f] y H
2
[f] no es posible
realizarla, dado que si no se puede calcular la transformada de Fourier entre ambas, no sera
posible calcular la transformada inversa de Fourier.
intento 2: Se agregan ceros al nal de h
2
[n] y de h
1
[n] para que tengan el mismo largo con
X[f] y H
2
[f] y as multiplicar termino a termino correctamente. Esto es
10 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
>> x=[1 1 1 1 1 1 1];
>> h1=[2 0 0 0 0 0 0]; % a~ nadimos 6 ceros para igualar dimension con x
>> tfx=fft(x)
tfx = 7.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
>> tfh1=fft(h1)
tfh1 = 2 2 2 2 2 2 2
>> XH1=tfx.*tfh1 % Multiplicacion X[f]*H1[f]
XH1 = 14.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000 -0.0000
>> h2=[1 2 3 4 5 6 0];
>> tfh2=fft(h2)
tfh2 = 21.0000 -7.8644+1.7950i -1.9424-4.0333i 2.8068-2.2383i 2.8068+2.2383i
-1.9424+4.0333i -7.8644-1.7950i
>> XH2=tfx.*tfh2 % Multiplicacion X[f]*H2[f]
XH2 = 1.0e+002 * (1.4700 0.0000-0.0000i 0.0000+0.0000i -0.0000+0.0000i -0.0000-0.0000i
0.0000-0.0000i 0.0000+0.0000i)
las transformadas de Fourier inversas son
>> inv1=ifft(fft(x).*fft(h1))
inv1 = 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000 2.0000
>> inv2=ifft(fft(x).*fft(h2))
inv2 = 21 21 21 21 21 21 21
>> conv(x,h2)
ans = 1 3 6 10 15 21 21 20 18 15 11 6 0
Se aprecia que al calcular la IDFT multiplicando termino a termino las TF de x[n] y h
2
[n] se
llega a un resultado completamente err oneo. El resultado correcto se obtiene al calcular la IDFT
mediante la convoluci on entre x[n] y h
2
[n].
intento 3: Agregando ceros hasta que x[n],h
1
[n] y h
2
[n] tengan el largo L
x
+ L
h
i
1 con
11 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
i = 1, 2. As, se tienen dos casos:
L
x
+L
h
1
1 = 7 + 1 1 = 7 (31)
L
x
+ Lh
2
1 = 7 + 6 1 = 12 (32)
para
>> x=[1 1 1 1 1 1 1];
>> h2=[1 2 3 4 5 6 0];
Para el Bonus se tiene de la Tarea 1 las transformadas Z de las se nales x[n],h
1
[n] y h
2
[n].
Estas son
X(z) = Z{x[n]} = Z{u[n]} Z{u[n N]} =
1
1 z
1
z
N
Z{u} =
z z
1N
z 1
(33)
H
1
(z) = Z{h
1
[n]} = aZ{} = a 1 = a (34)
H
2
(z) = Z{h
2
[n]} = Z{
K

k=0
(1 + k)[n k]} =
K

k=0
(1 + k)z
k
(35)
(36)
luego los productos Y
1
(z) = H
1
(z)X(z) y Y
2
(z) = H
(
2)X(z) son
H
1
(z) X(z) = a
z z
1N
z 1
(37)
H
2
(z) X(z) =
K

k=0
(1 + k)z
k

z z
1N
z 1
(38)
5. Primer ataque de los duendes: propiedades de la DFT/FFT
Como buen estudiante, Ud. estaba repasando su material para la clase de procesamiento de
se nales e hizo el c alculo de la DFT de una se nal real, x[n], de N = 9 puntos. Una vez nalizado
el c alculo Ud. tabulo su resultado y fue a beber un vaso de leche. Lamentablemente cuando
volvi o a su lugar de trabajo unos duendes (que saban procesamiento de se nales) le borraron
la se nal x[n] y cuatro n umeros de su c alculo de DFT, es decir, le dejaron solo la especicaci on
frecuencial que se observa en la Tabla 1. No contentos con esto, los duendes le dejaron la
siguiente nota desaante: Completa los valores faltantes, recupera tu se nal x[n] y grafcala en
el tiempo discreto usando stem. Justica claramente tu respuesta o volveremos ma nana. Atte.
Los duendes Oppenheim, Schaer, Proakis y Manolakis.
5.1. Solucion
Dado que la Trasformada de Fourier de una se nal real es simetrica respecto al origen de
valores complejos conjugados. Como un vector de frecuencia se construye al hacer el lmite
de las frecuencias negativas como -N/2,y el lmite de las frecuencias positivas como N/2-1 y la
12 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Tabla 1: Especicacion parcial de la DFT de una se nal compleja y par.
k X[k] |X[k]|
0 4 4
1 1.43969 - 2.49362i 2.8794
2 -0.26604 - 0.46080i 0.5321
3 1 1
4 0.32635 - 0.56526i 0.6527
5 1
6 1
7 1
8 1
frecuencia central como el primero valor de k=0, donde N es el n umero de puntos de la DFT. De
lo anterior, se toma el ultimo valor de k, esto es k=8 y este valor es replicado en las frecuencias
negativas pero como un complejo conjugado para k=1. Lo anterior ocurre para el resto de los
valores de k desde 1 hasta 4 corresponder an a los valores conjugados de los k=5 hasta los k=8.
As, es posible reconstruir la tabla sin mayor inconveniente. Se obtiene
Tabla 2: Especicacion parcial de la DFT de una se nal real.
k X[k] |X[k]|
0 4 4
1 1.43969 - 2.49362i 2.8794
2 -0.26604 - 0.46080i 0.5321
3 1 1
4 0.32635 - 0.56526i 0.6527
5 0.32635 + 0.56526i 0.6527
6 1 1
7 -0.26604 + 0.46080i 0.5321
8 -0.26604 + 0.46080i 2.8794
13 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Para recuperar la se nal original se aplica la transformada de Fourier inversa (IDFT) y se
obtiene la siguiente se nal con los valores que tiene como gr aca en el tiempo discreto dado por
Lo anterior se realiz o mediante el siguiente c odigo en Matlab
X=[4;1.43969-2.49362*i;-0.26604-0.46080*i;1;0.32635-0.56526*i;...
0.32635+0.56526*i;1;-0.26604+0.46080*i;-0.26604+0.46080*i];
X=X;
invfft=ifft(X); % se recupera la senal x[n]
n=0:8; % vector de tiempo
stem(n,invfft,,linewidth,2),
title(Senal Recuperada x[n],FontName,arial,FontSize,13),
xlabel(n,FontName,arial,FontSize,13)
6. Segundo ataque de los duendes: eliminacion de ruido
arm onico en una se nal de audio
(Problema grupal). Como buen estudiante, Ud. estaba repasando su material para la clase
de procesamiento de se nales escuchando el archivo de m usica NoisyAudio.wav. Nuevamente Ud.
fue a beber un refrescante vaso de leche y los nunca bien ponderados duendes le jugaron otra
mala pasada: le sobreescribieron el archivo de audio original NoisyAudio.wav. La nota que le
dejaron en este caso fue: La se nal de audio fue corrupta por tres se nales aditivas que son tres
frecuencias (tonos) especicas, pero no te vamos a decir que frecuencias son. Arregla tu archivo
de m usica haciendo cero los componentes frecuenciales donde aparezcan esas frecuencias. Atte.
Tus amigos duendes Oppenheim, Schaer, Proakis y Manolakis.
Para limpiar la se nal de audio, graque la DFT de la se nal completa, identique las frecuencias
de ruido y eliminelas de la manera m as simple posible: haga cero el valor de esas componentes
(ojo, este procedimiento es manual, no puede automatizarse completamente con un programa).
14 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Despues de eliminar las se nales de ruido reconstruya la se nal y escuche su resultado. Ahora con-
sidere un metodo ligeramente distinto. Divida la se nal ruidosa en cuatro segmentos consecutivos
que no se traslapen. Calcule las DFTs para cada segmento, determine las frecuencias de ruido,
elimnelas y reconstruya cada uno de los segmentos. Compare (escuchando) sus dos resultados y
decida cu al es mejor. En su informe debe mencionar: (i) cuales son las tres frecuencias de ruido
utilizadas por lo duendes; (ii) c omo debe ser la funci on f() en: y[n] = f(x[n]; r1[n]; r2[n]; r3[n])],
donde x[n] es la se nal de audio y los r
i
[n] son los ruidos arm onicos, de manera que modele la
se nal ruidosa que Ud. ltr o (no es necesario dar los par ametros pero si especicar f()); y (iii)
cu al es el nombre de la pieza musical.
Consejo: una vez ltrada la se nal llevela al rango [-1,1] para aumentar su volumen.
6.1. Solucion
En la Figura 2 se puede ver el espectro de la se nal con ruido. Adem as, se puede identicar las
frecuencias de los armonicos (tonos) utilizados para introducirle ruido al audio, estas frecuencias
son 200,600 y 1000 Hz.
El codigo utilizado en Matlab es el siguiente
% lee el audio se guarda como NoisySignal
[NoisySignal fs NBits]=wavread(NoisyAudio.wav);
tfSN=fft(NoisySignal); % calculo de la fft se~nal con ruido
N=length(tfSN);
nFFT=137600; % numero de puntos equivalente al largo del audio
magtf=abs(tfSN); % magnitud de la fft de se~nal con ruido
magtf=fftshift(magtf); % se desplaza el espectro
% para ver frecuencias negativas
f_esp=fs/nFFT;
f_eje=-fs/2:f_esp:fs/2-f_esp; % vector de frecuencias
15 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
stem(f_eje,magtf,,linewidth,2),
title(Magnitud fft de NoisyAudio,FontName,arial,FontSize,13),
xlabel(Frecuencia[Hz],FontName,arial,FontSize,13),
ylabel(Amplitud,FontName,arial,FontSize,13)
Como el enunciado nos especica que se hagan cero las frecuencias donde se introduce ruido, se
aplica un algoritmo en Matlab para realizar esto.
7. Interpolaci on en frecuencia
Considere la se nal
x[n] =
_
_
_
1 , n [0, 15]
1 , n [16, 31]
0 , otro caso
(39)
Notar que x[n] es una se nal que tiene solo 32 puntos distintos de cero. Graque la se nal en
tiempo discreto y calcule su DFT va el comando fft. Graque su diagrama de magnitud. Para
el eje de las frecuencias considere que las frecuencias est an en el intervalo [-0.5,0.5].
Agregar ceros en el tiempo: a continuaci on agregue 96 ceros al nal de x[n] con lo que
obtendr a una se nal con 128 puntos donde un solo cuarto de los puntos son distintos de cero.
Graque esta nueva se nal en tiempo discreto y calcule su DFT va el comando fft. Nuevamen-
te graque el diagrama de magnitud considerando que en el eje de las abscisas las frecuencias
est an en el intervalo [-0.5,0.5]. Que paso en comparacion con el espectro anterior?. Explique
claramente. Notar que si agregamos un n umero muy grande de ceros al nal de la se nal podemos
aproximar la transformada de Fourier en tiempo discreto (DTFT) va DFT.
Intercalar ceros en el tiempo: ahora agregue 3 ceros entre cada muestra de la se nal x[n]
(ayuda: upsampling). Con esto, nuevamente obtendra una se nal de 128 puntos de los cuales el
25 % es no nulo. Graque la se nal en tiempo discreto y calcule su DFT va el comando fft para
esta se nal con 128 puntos. Nuevamente graque el diagrama de magnitud considerando que en
el eje de las abscisas las frecuencias en el intervalo [-0.5,0.5]. Que paso en comparaci on con el
espectro original? Que paso con respecto al espectro de la se nal a la que se le agregaron ceros
al nal?. Explique claramente.
Agregar ceros en el dominio de la frecuencia: a continuaci on agregue 96 ceros a X[k],
la DFT de x[n], para obtener una se nal de 128 puntos en frecuencia. Calcule ahora la trans-
formada inversa, ifft, de la se nal de 128 puntos. Graque la se nal en tiempo discreto usando
stem. Que paso?. Ojo que al agregar ceros a la se nal en frecuencia nuestra intencion no es
distorsionarla, sino que causar un efecto similar (pero en el dominio de la frecuencia) al hecho
de agregar ceros al nal de una se nal en el tiempo. Notar ademas que en el tiempo se agregan
los ceros al nal de la se nal, mientras que en frecuencia hay que ser cuidadosos y agregarlos
tanto en el lado de las frecuencias positivas como en el de las negativas. Ojo con el fftshift si
es que lo usa.
Intercalar ceros en el dominio de la frecuencia: ahora agregue 3 ceros entre cada muestra
de X[k], la DFT de x[n], para obtener una se nal de 128 puntos en frecuencia. Calcule ahora
la transformada inversa, ifft, de la se nal de 128 puntos. Graque la se nal en tiempo discreto
16 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
usando stem. Que pas o?. Tenga cuidado con las mismas cosas que se le comentaron en el punto
anterior.
7.1. Solucion
La siguiente graca muestra la se nal x[n] y su espectro respectivo. Ademas el codigo en
Matlab para realizar esto es
n=0:40;
i=0:15;
L=length(i);
for i=1:L
x(i)=1;
end
for k=16:31
x(k)=-1;
end
for j=32:41
x(j)=0;
end
subplot 211
stem(n,x,linewidth,2),title(se~nal x[n]),xlabel(n),ylabel(x[n])
% Calculo de la fft de x[n]
Fs=1;
Ts=1/Fs;
nFFT=41;
tfx=fft(x);
magx=abs(fftshift(tfx));
f_esp=Fs/nFFT;
feje_x=-Fs/2:f_esp:Fs/2-f_esp; % vector de frecuencias
subplot 212
stem(feje_x,magx,linewidth,2),title(DFT de se~nal x[n]),xlabel(frecuencia),ylabel(Amplitud)
17 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Figura 4: Se nal x[n] y su espectro respectivo en tiempo discreto
Agregando 92 ceros al nal de la se nal x[n] se obtiene una se nal con 128 puntos donde 1/4
de los puntos son distintos de cero. Se gr aca esta nueva se nal y se calcula su DFT con el
comando t proporcionado por Matlab. El resultado se ve en la siguiente gura. Adem as el
c odigo utilizado es
n=0:127; % se agregan 92 ceros al final de x[n]
i=0:15;
% k=16:31;
L=length(i);
% K=length(k);
% J=length(j);
for i=1:L
x(i)=1;
end
for k=16:31
x(k)=-1;
end
for j=32:128
x(j)=0;
end
subplot 211
stem(n,x,linewidth,2),title(se~nal x[n]),xlabel(n),ylabel(x[n])
% Calculo de la fft de x[n]
Fs=1;
Ts=1/Fs;
nFFT=128;
18 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
tfx=fft(x);
magx=abs(fftshift(tfx));
f_esp=Fs/nFFT;
feje_x=-Fs/2:f_esp:Fs/2-f_esp; % vector de frecuencias
subplot 212
stem(feje_x,magx,linewidth,2),title(DFT de se~nal x[n]),
xlabel(frecuencia),ylabel(Amplitud)
Figura 5: Se nal x[n] y espectro de la se nal con adici on de ceros.
Ahora si intercalamos los ceros, pero en el dominio temporal y con la ayuda del comando
upsample de Matlab se tiene el siguiente c odigo
n=0:127;
i=0:15;
L=length(i);
for i=1:L
x(i)=1;
end
for k=16:32
x(k)=-1;
end
Sample=upsample(x,4); % agregamos 3 ceros entre cada muestra
stem(n,Sample,linewidth,2),title(se~nal x[n]),xlabel(n),ylabel(x[n]),axis([0 128 -1 1])
% Calculo de la fft de x[n]
Fs=1;
Ts=1/Fs;
19 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
nFFT=128;
tfx=fft(Sample);
magx=abs(fftshift(tfx));
f_esp=Fs/nFFT;
feje_x=-Fs/2:f_esp:Fs/2-f_esp; % vector de frecuencias
subplot 212
stem(feje_x,magx,linewidth,2),title(DFT de se~nal x[n]),
xlabel(frecuencia),ylabel(Amplitud)
Que da como resultado la siguiente gura
Figura 6: Se nal x[n] agregando 3 ceros entre cada muestra con su respectivo espectro
Se agregan 96 ceros en el dominio de la frecuencia, es decir,96 ceros a la DFT de x[n]
(X[k]).Se pide la gr aca de la transformada inversa de Fourier de la se nal X[k].
Al agregar 3 ceros por cada muestra de la DFT de x[n] y aplicando la it con la ayuda de
Matlab,se obtiene un tren de pulsos rectangulares. Esto se puede ver en la siguiente gura
20 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Figura 7: Se nal x[n] agregando 3 ceros entre cada muestra de la t de x[n]
Notemos que la se nal x[n] obtenida, es nuestra se nal inicial, pero, repetida tres veces y con
la mitad de su amplitud inicial. Esto se debe a que, como vimos anteriormente, aumentamos la
frecuencia de muestreo.
La cual se realiz o con el siguiente codigo
n=0:127;
i=0:15;
L=length(i);
for i=1:L
x(i)=1;
end
for k=16:32
x(k)=-1;
end
tfx=fft(x);
Sample=upsample(tfx,4); % agregamos 3 ceros entre cada muestra
% de la fft
newtf=ifft(Sample);
stem(n,newtf,linewidth,2),title(Se~nal x[n]),xlabel(n),
ylabel(x[n])
8. Superposicion de se nales de audio
Considere el archivo MixedSignals.wav. Este archivo contiene dos se nales de audio que se
mezclaron. Se sabe que las se nales de audio son: una de baja frecuencia y la otra es un registro
de voz. Graque el espectro de la se nal presente en el archivo MixedSignals.wav. De acuerdo
21 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
a lo que observe en el espectro dise ne: (i) un ltro de respuesta nita (FIR) pasa bajos para
recuperar la se nal de baja frecuencia; y (ii) un ltro FIR pasa altos para recuperar la se nal de
voz.
8.1. Solucion
Se tiene que la se nal de audio es
Figura 8: Graco de la se nal de audio original
La cual se realiz o con el siguiente codigo en Matlab
[MixedSignals Fs Nbit]=wavread(MixedSignals.wav);
tiempo=size(MixedSignals)/Fs;
x=0:1/Fs:tiempo-1/Fs; % tiempo
plot(x,MixedSignals),title(Se~ nal de audio original MixedSignals.wav),
xlabel(tiempo(seg)),axis([0 22 -1 1]) % grafico del audio original
El especto de la se nal de audio MixedSignals.wav es
22 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Figura 9: Espectro de la se nal MixedSignal.wav
El cual se realiz o mediante el siguiente codigo en Matlab
[MixedSignals Fs Nbit]=wavread(MixedSignals.wav);
sound(MixedSignals) % se comprueba si se cargo bien el audio
tfa=abs(fft(MixedSignals));
plot(tfa),title(Espectro Audio MixedSignals.wav),
xlabel(frecuencia (Hz)),ylabel(Amplitud)
Dado que el espectro de la se nal de audio muestra claramente dos regiones donde las frecuencias
son signicativas (frecuencias altas y bajas) es posible realizar un ltro FIR pasabajos para
recuperar la se nal de audio de baja frecuencia.
9. Filtrado de se nales medicas
Considere el archivo ecg.mat. Este archivo de datos contiene la se nal sin procesar (raw
signal ) de un electrocardiograma (ECG). La se nal fue muestreada a 720 Hz en el hospital de
un pas donde la frecuencia de operaci on de la red electrica es de 60 Hz. Antes de utilizar la
se nal para el analisis medico, los datos raw deben ser procesados para: (i) eliminar el armonico
fundamental de la red electrica que se superpone a la se nal ECG; y (ii) generar una se nal pasa
banda en el rango [0:05;200] Hz, donde F
s
es la frecuencia de muestreo. Procese la se nal ECG
dise nando los ltros necesarios para eliminar el arm onico de la red y generar la se nal pasa
banda. Justique su dise no, muestre el diagrama de polos y ceros de sus ltros y los diagramas
de magnitud y fase de los ltros. Adem as presente las se nales ruidosas y ltradas en el tiempo
y en frecuencia. C omo debe ser la funcion f() en: y[n] = f(x[n]; r[n]), donde x[n] es la se nal
ECG y r[n] es el ruido de la red electrica, de manera que modele la se nal ECG ruidosa? (No es
necesario dar los par ametros pero si especicar f()).
23 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
9.1. Solucion
El tratamiento utilizado para eliminar la arm onica situada a de 60 Hz , se realiza atreves
del ltro rechaza banda de banda, es decir, se querechaze la banda [55;65] Hz usando un N =
100,por un dise no Kaiser, es decir
(a) (b)
Figura 10: (a) Espectro de potencia de magnitud de la se nal ecg.mat, (b) Espectro de potencia de
magnitud de la se nal ecg.matcuando se ha ltrado solo la armonica.
En la Fig. 10 se muestran los espectros de magnitud y atreves del ltro K aiser utilizado,
donde se aprecia que esta no inuye en nada su comportamiento y magnitud.
Luego, la funci on f() en: y[n] = f(x[n]; r[n]) debe ser lineal en x[n] y r[n] para que se pue-
da modelar, la se nal ECG ruidosa. Esto se observa claramente porque el armonico de 60 [Hz]
aparece como un tono superpuesto al resto del espectro.
El codigo Matlab utilizado es:
load ecg.mat
y=y-mean(y);
MagY = abs(fftshift(fft(y)/length(y)));
% Frecuencias de diseno de los filtros
NCoeffs=100;
Df=5;
% Rechaza banda:
fc1BSK = 60-Df;
fc2BSK = 60+Df;
fp1BSER = fc1BSK-Df/2;
fs1BSER = fc1BSK+Df/2;
fs2BSER = fc2BSK-Df/2;
fp2BSER = fc2BSK+Df/2;
% Filtra la armonica de 60 Hz atravez de Kaiser
24 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
MyDesign = fdesign.bandstop(N,Fc1,Fc2, NCoeffs , 2* fc1BSK / Fs, 2* fc2BSK / Fs);
BSKaiser = design(MyDesign, window, window, @kaiser);
yBSKaiser = filter(BSKaiser.Numerator, 1, y);
MagYBSKaiser = abs(fftshift(fft(yBSKaiser)/N));
figure,plot(MagY),
xlabel(Frecuencia [Hz]),ylabel(|Y(f)|)
figure,plot(MagYBSKaiser),
xlabel(Frecuencia [Hz]),ylabel(|Y(f)|)
25 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Agradecimientos:
En el desarrollo de la tarea se busc o orientacion del libro gua Digital Signal Processing-
Proakis4thEd, internet, ademas observo Pauta Cert01 a no 2010 y Pauta Tarea 4 2012.
26 Pablo Riquelme J.