Está en la página 1de 10

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.
24 de noviembre de 2013
Ingeniera Civil en Telecomunicaciones
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)
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 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
2.1. Solucion
Se tiene que la ecuaci on (10) es la funci on de transferencia la cual relaciona la entrada con
la salida del ltro, es decir
H(z) =
Y (z)
X(z)
=
1
1 + a
1
z
1
+ a
2
z
2
=
1
1 +
a
1
z
+
a
2
z
2
H(z) =
1
1 +
a
1
z+a
2
z
2
=
1
z
2
+a
1
z+a
2
z
2
As, la funci on de trasferencia, resulta
H(z) =
Y (z)
X(z)
=
z
2
a
2
+ a
1
z + z
2
(5)
Como la funci on de trasferencia tiene orden 2, una forma generalizada de escribirla es
H(z) =
Y (z)
X(z)
=
(z c
1
)(z c
2
)
(z p
1
)(z p
2
)
Haciendo uso de la propiedad de distribuci on, se obtiene
H(z) =
Y (z)
X(z)
=
z
2
(c
2
+ c
1
)z + c
1
c
2
z
2
(p
1
+ p
2
)z + p
1
p
2
(6)
Igualando las funciones de trasferencia (11) con (12) y comparando terminos se obtiene
c
1
= c
2
= 0 (7)
p
1
+ p
2
= a
1
(8)
p
1
p
2
= a
2
(9)
Como p
1
y p
2
deben ser polos complejos conjugados, estos tienen la forma p
1
= a + jb y
p
2
= a jb. Entonces p
1
y p
2
resultan
p
1
+ p
2
= a + jb + a jb = 2a
As, a
1
= 2Re{p
1
} = 2a se reemplaza esto en (12) y se obtiene que p
1
+ p
2
= a
1
=
2Re{p
1
} = (2(a)) = 2a. Por lo tanto se cumple
p
1
+ p
2
= a
1
(10)
Adem as, si p
1
p
2
= a
2
se tiene
p
1
p
2
= (a + jb)(a jb)
= a
2
jab + jab j
2
b
2
= a
2
+ b
2
(11)
2 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
Si a
2
= |p
1
|
2
= |a + jb|
2
= a
2
+ b
2
. Por lo tanto, se cumple que:
p
1
p
2
= a
2
(12)
Luego, se concluye que los polos p
1
y p
2
satisfacen a a
1
y a
2
.
Ahora, se estudia los efectos de cuantizar los coecientes del ltro gracando para el caso
particular cuando |p
1
| = 1 y |p
1
| = 1 + con > 0 peque no. Esto se realiza mediante el
siguiente c odigo Matlab.
% Caso particular p1=1-epsilon con epsilon=0.1
epsilon=0.1;
p1=1-epsilon;
a1=-2*p1;
a2=p1^2;
figure,zplane([1 0 0],[1 a1 a2]),
ylabel(Eje Imaginario,FontName,arial,FontSize,13),
xlabel(Eje Real,FontName,arial,FontSize,13),
legend(Ceros,Polos),set(legend,FontName,arial,FontSize,13),
3 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
% Caso particular p1=1+epsilon con epsilon=0.1
epsilon=0.1;
p1=1+epsilon;
a1=-2*p1;
a2=p1^2;
figure,zplane([1 0 0],[1 a1 a2]),
ylabel(Eje Imaginario,FontName,arial,FontSize,13),
xlabel(Eje Real,FontName,arial,FontSize,13),
legend(Ceros,Polos),set(legend,FontName,arial,FontSize,13),
% Caso particular p1=1-epsilon con epsilon=0.9
epsilon=0.9;
p1=1-epsilon;
a1=-2*p1;
a2=p1^2;
figure,zplane([1 0 0],[1 a1 a2]),
ylabel(Eje Imaginario,FontName,arial,FontSize,13),
xlabel(Eje Real,FontName,arial,FontSize,13),
legend(Ceros,Polos),set(legend,FontName,arial,FontSize,13),
% Caso particular p1=1+epsilon con epsilon=0.9
epsilon=0-9;
p1=1+epsilon;
a1=-2*p1;
a2=p1^2;
figure,zplane([1 0 0],[1 a1 a2]),
ylabel(Eje Imaginario,FontName,arial,FontSize,13),
xlabel(Eje Real,FontName,arial,FontSize,13),
legend(Ceros,Polos),set(legend,FontName,arial,FontSize,13),
4 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
1 0.5 0 0.5 1
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
2 2
Eje Real
E
j
e

I
m
a
g
i
n
a
r
i
o


Ceros
Polos
(a)
1 0.5 0 0.5 1
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
2 2
Eje Real
E
j
e

I
m
a
g
i
n
a
r
i
o


Ceros
Polos
(b)
1 0.5 0 0.5 1
1
0.8
0.6
0.4
0.2
0
0.2
0.4
0.6
0.8
1
2 2
Eje Real
E
j
e

I
m
a
g
i
n
a
r
i
o


Ceros
Polos
(c)
8 7 6 5 4 3 2 1 0 1
3
2
1
0
1
2
3
2 2
Eje Real
E
j
e

I
m
a
g
i
n
a
r
i
o


Ceros
Polos
(d)
Figura 1: (a) Graco de polos y ceros para |p
1
| = 1 con = 0,1, (b) Graco de polos y ceros para
|p
1
| = 1 + con = 0,1, (c) Graco de polos y ceros para |p
1
| = 1 con = 0,9, (d) Graco de polos
y ceros para |p
1
| = 1 + con = 0,9 .
Comentarios Generales:
Se puede concluir de los gracos que como los polos est an ubicados en el eje real los polos son
reales. Para el caso donde |p
1
| = 1 con = 0,1 los polos est an dentro de la circunferencia
unitaria, por lo tanto, el sistema es estable. Para el caso donde |p
1
| = 1 + con = 0,1 se puede
ver gracamente que los dos polos se encuentran fuera de la circunferencia unitaria, por lo que
el sistema sera inestable, divergiendo de forma creciente. Para el caso donde |p
1
| = 1 con
= 0,9 los dos polos se encuentran dentro de la circunferencia unitaria, por lo que el sistema
es estable con un comportamiento decreciente. Para el caso |p
1
| = 1 + con = 0,9 los po-
los se encuentran signicativamente fuera del circulo unitario por lo que el sistema inestable,
comport andose de forma oscilatoria. Del analisis anterior se concluye que eligiendo un que
sea muy peque no cercano a 0 o cercano a 1 para el caso |p
1
| = 1 el sistema es estable
pero cambia su comportamiento, de un comportamiento de estabilidad constante a un com-
portamiento decreciente si se aumenta de un valor cercano a 0 a un valor cercano a 1. Para
5 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
el caso |p
1
| = 1 + donde s se incrementa el valor de de un valor cercano a 0 a un valor
cercano a 1 el sistema no deja de ser inestable, pero cambia su comportamiento de inestabili-
dad de una inestabilidad de forma exponencial creciente a una inestabilidad oscilatoria creciente.
3. Cancelaci on de ruido aditivo
(Problema grupal). La tecnica de cancelaci on de ruido es muy usada para recuperar
se nales que est an corruptas por ruido aditivo. El supuesto principal de la tecnica de cancelacion
de ruido es que existe una fuente adicional de ruido, que est a disponible para el usuario, y que
est a correlacionada (i.e. es similar) al ruido que afecta a la se nal de interes. En esta parte de la
tarea eliminaremos el ruido aditivo del archivo SignalPlusNoise.wav usando un cancelador de
ruido y una fuente de ruido correlacionado que viene dada en el archivo CorrelatedNoise.wav.
Figura 2: Diagrama en bloques de un sistema general de cancelaci on de ruido.
Sea s[k] la se nal ruidosa, x[k] la se nal de interes y n
0
[k] el ruido aditivo que afecta la se nal.
En el problema general de ruido aditivo se tiene que s[k] = x[k] + n
0
[k]. Para la tecnica de
cancelaci on de ruido se necesita una fuente adicional de ruido, esta fuente de ruido la denota-
mos por n[k]. La Figura ?? muestra un diagrama en bloques del proceso. Todo el problema del
cancelador de ruido pasa por encontrar H(z). Por simplicidad en esta tarea asumiremos que
m = 0 y que H(z) es un ltro FIR de N coecientes, i.e., H(z) = h
0
+h
1
z
1
+ +h
N1
z
N+1
.
Suponga que tenemos dos se nales de audio: s[k] = x[n] +n
0
[k] (que est a corrupta por ruido
aditivo) y n[k] un ruido correlacionado a la fuente de ruido que perturba a x[k]. Calcule la
autocorrelaci on de n[k], que denotaremos como
nn
[n], y la correlacion entre s[k] y n[k], que
denotaremos como
sn
[n]. Se puede demostrar que los coecientes h
0
, , h
N1
vienen dados
por:
_

_
h
0
h
1
.
.
.
h
N1
_

_
=
_

nn
[0]
nn
[0]
nn
[N 1]

nn
[1]
nn
[2]
nn
[N 2]
.
.
.
.
.
.
.
.
.
.
.
.

nn
[N 1]
nn
[N 2]
0
[N 1]
_

_
1
_

nn
[0]

nn
[1]
.
.
.

nn
[n 1]
_

_
(13)
La ecuacion (19) nos dice c omo obtener los coecientes de H(z).
Ahora implemente el cancelador de ruidos en Matlab. Los pasos a seguir son:
6 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
1. Leer en Matlab los archivos WAV usando wavread.
2. Calcular (en Matlab) la funci on de autocorrelacion de n[k] y la correlacion entre s[n]. En
Matlab estas operaciones se implementan con el comando xcorr.
3. Decidir un n umero de coecientes, N, para H(z).
4. Armar en Matlab el sistema de ecuaciones (19) y resolverlo usando: inv o bien el operador.
5. Una vez que se han obtenido los coecientes de H(z) implementar este ltro en Matlab y
ltrar s[n] usando filter para obtener la se nal sin ruido.
Ejecute estos pasos y ltre la se nal. Pruebe varios valores para N y decida cual le da
buenos resultados. Comente su respuesta. Intente adem as la soluci on sencilla: reste la se nal
CorrelatedNoise.wav a SignalPlusNoise.wav y vea que pasa.
Prueba de la ecuaci on (19)
. Para los incredulos y los que les interese aca va la prueba de (19). Recordar que por
simplicidad m = 0 por lo tanto d[k] = s[k]. Adem as, como H(z) se asume que es un ltro FIR
tenemos g[k] = h[k] n[k] =

N1
i=0
h
i
n[k i].
De la Figura ?? notamos que:
e[k] = s[k] g[k] = s[k] h[k] n[k] = s[k]
N1

i=0
h
i
n[k i] (14)
Si H(z) es una buena aproximaci on de n
0
[k] se cumplir a que g[k] = h[k] n[k] n
0
[k]
para todo k. Por lo tanto podemos decir que g[k] una estimaci on o aproximacion de n
0
[k], y
denotamos esta estimacion como n
0
[k] = g[k], donde el smbolo es la manera est andar de
representar una estimacion. En consecuencia tenemos que:
e[k] = x[k] + n
0
[k] g[k] = x[k] + n
0
[k] n
0
x[k] = x[k] (15)
Lo que representa una estimaci on de nuestra se nal de interes. Si consideramos ahora el error
de estimacion y tomamos el valor esperado, E[], tenemos que
E[e[k]] = E[(s[k] g[k])
2
] = E[s[k]
2
] 2E[s[k]g[k]] + E[g[k]
2
] (16)
=
ss
[0] 2E
_
s[k]
N1

i=0
h
i
n[k i]
_
+ E
__
N1

i=0
h
i
n[k i]
_
2
_
(17)
=
ss
[0] 2
N1

i=0
h
i
E[s[k]n[k i]] +
N1

i=0
N1

j=0
h
i
h
j
E[n[k i]n[k j]] (18)
=
ss
[0] 2
N1

i=0
h
i

dn
[k] +
N1

i=0
N1

j=0
h
i
h
j

nn
[k j] (19)
7 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
donde
ss
[n],
nn
[n] y
sn
[n] son las secuencias de autocorrelacion de s[k], n[k] y la corre-
laci on entre s[k] y n[k], respectivamente. Notar que
ss
[n],
nn
[n] y
sn
[n] son conocidas pues
conocemos s[k] y n[k], mientras que los h
i
son desconocidos. La idea ahora es minimizar el
error de aproximaci on, para esto usamos el criterio de mnimos cuadrados. Como los h
i
son las
inc ognitas tomamos derivadas parciales con respecto a cada una de estas variables de dise no, y
las igualamos a cero para encontrar un mnimo. Para el k-esimo coeciente tenemos:
E[e[k]]
h
k
= 2
dn
[k] + 2
N1

j=0
h
j

nn
[k j] (20)
Como el ltro FIR tiene N coecientes, autom aticamente generamos N ecuaciones. No-
tando que el sistema de ecuaciones que se obtiene es lineal, basta con agrupar los terminos y
obtenemos (??). Notar que mientras tengamos una se nal con ruido correlacionado, esta tecninca
siempre funciona y los pasos 2 al 5 son los que deben aplicarse en la pr actica.
3.1. Solucion
El siguiente codigo en Matlab se implementa el problema requerido
% Cancelacion de ruido aditivo
% leer archivo de audio SignalPlusNoise.wav
[SignalPlusNoise,Fs,bitser]=wavread(SignalPlusNoise.wav);
[size(SignalPlusNoise,1) Fs bitser]
% leer archivo de audio CorrelatedNoise.wav
[CorrelatedNoise,Fs,bitser]=wavread(CorrelatedNoise.wav);
[size(CorrelatedNoise,1) Fs bitser]
sound(SignalPlusNoise,Fs) % Comprobamos si se lee el audio SignalPlusNoise.wav
sound(CorrelatedNoise,Fs) % Comprobamos si se lee el audio CorrelatesNoise.wav
% Se calcula la funcion de autocorrelacion de n[k]
funcNN=xcorr(CorrelatedNoise);
% Se calcula la funcion de autocorrelacion entre s[n] y n[k]
funcSN=xcorr(SignalPlusNoise,CorrelatedNoise);
N=14; % Numero de coeficiente N para H(z)
Mat_phiNN=funcNN(1)*diag(ones(1,N));
for k=1:N
funcsnN(k)=funcSN(k);
8 Pablo Riquelme J.
Procesamiento Digital de Se nales Tarea N

4
for i=2:N
Matriz=[zeros(i-1,N); funcNN(i)*diag(ones(1,N-i+1)) zeros(N-i+1,i-1)];
end
end
Mat_phiNN=Mat_phiNN+Matriz+(Matriz);
Inv_phiNN=inv(Mat_phiNN);
Coefh=Mat_phiNN\(funcsnN);
Signal=filter(Coefh,[1 zeros(1,N)],CorrelatedNoise);
sound(Signal,11025) % Senal "sin" ruido
Al calcular la autocorrelacion es necesario s olo considerar desde el valor medio hacia la
derecha de los valores obtenidos. Dado que en el mismo ltro genera una distorsi on en el audio,
el ruido no podr a eliminarse completamente. Para un valor grande de N el ruido se puede
disminuir considerablemente pero no se va todo el audio. Es de esperar que al implementar un
ltro digital los componentes electronicos a naden por s mismo un ruido a la se nal, afectando
el resultado obtenido. Pero por el resultado obtenido se puede considerar que el ltro elimina
bastante bien el ruido.
9 Pablo Riquelme J.