You are on page 1of 18

ctrica Departamento de Ingenier a Ele Facultad de Ingeniera n Universidad de Concepcio n, Chile.

Concepcio

Tarea N3
Procesamiento Digital de Se nales.
Nombre: Pablo Riquelme J. Profesor: Jorge E. Pezoa. Ayudante: Diego E. Mendoza. 11 de noviembre de 2013

Ingenier a Civil en Telecomunicaciones

Procesamiento Digital de Se nales

Tarea N 3

Indice General
1. Filtrado de una constante en ruido. 1.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2. Efecto de la cuantizaci on de los coecientes de un ltro. 2.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. Cancelaci on de ruido aditivo 3.1. Soluci on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2

10 10 14 16

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

1.

Filtrado de una constante en ruido.

(Problema grupal). A esta tarea se adjunta el archivo Matlab NoisyPixel.mat. Este archivo contiene los datos medido en un pixel de una c amara infrarroja que toma 30 datos por segundo de un cuerpo uniforme que est a a una temperatura de 26 C. Las mediciones tomadas son ruidosas y siguen el siguiente el modelo: y [n] = 26 + N [n] (1)

Donde N [n] corresponde al ruido de medici on y n es la n- esima muestra. Para recuperar el valor real de la medici on lo que uno normalmente hace es promediar las muestras y decir que el valor medio corresponde al valor real. Haga este c alculo usando los datos. A continuaci on, implemente el ltro de respuesta impulso innito (IIR): H (z ) = b , b R, a (0, 1) 1 az 1 (2)

En Matlab y ltre la se nal NoisyPixel.mat. Fije un valor para a y ajuste el valor de b para obtener el valor conocido de temperatura. Una vez ajustado b experimente con los valores de a y comente su efecto. Decida nalmente el mejor valorpara a y para b. Justique su decisi on. Considere ahora el ltro de respuesta nita (FIR) 1 H (z ) = N
N

z i .
i=0

(3)

Implem entelo en Matlab y ltre la se nal NoisyPixel.mat. Experimente con el ltro para distintos valores de N . Decida nalmente el mejor valorpara N . Justique su decisi on.

1.1.

Soluci on

Para recuperar el valor realde la medici on, se calcula el promedio de los datos del archivo NoisyPixel.mat, mediante el siguiente algoritmo en Matlab: load NoisyPixel.mat Vmedio=mean(NoisyPixel); Vericando el valor de Vmedio en la consola de Matlab se obtiene que el valor realde la medici on es 26,0666. Implementaci on del ltro IIR. Es sabido que (2) es la funci on de transferencia en el dominio de z , adem as la respuesta en frecuencia de este tipo de ltro normalmente es de magnitud unitaria, es decir, H (w) = 1 para w = 0. As como la transformada z se dene como z = ej 2f , donde la frecuencia tiene valor f = 0, lo que implica que z = 1. Entonces, resulta que H (z ) = H (1) = 1, obteniendo H (1) = b 1a Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Ahora para llevar H (1) al valor de magnitud unitaria se debe cumplir lo siguiente H (1) = Y (1) b = =1 X (1) 1a

Luego despejando b, se tiene b = 1 a, donde reemplazando en la funci on de transferencia del ltro, resulta 1a 1 az 1 Por lo que la ecuaci on de diferencias es denida H (z ) = 1a Y (z ) = X (z ) 1 az 1 (1 az 1 )Y (z ) = (1 a)X (z ) Y (z ) az 1 Y (z ) = X (z ) aX (z ) H (z ) = Aplicando el operador lineal z 1 , es decir la transformada z inversa a (4), se obtiene y [n] ay [n 1] = x[n] ax[n] y [n] = (1 a)x[n] + ay [n 1]

(4)

(5)

Se puede apreciar que la ecuaci on (5), que corresponde a la ecuaci on de diferencias del ltro, se obtiene multiplicando la entrada por (1 a). As , se modica el valor de la variable a para observar el comportamiento del ltro. Esto se realiza mediante el siguiente c odigo Matlab. % Filtro % Para valores positivos de a ap=[0.1 0.3 0.5 0.9]; t=0:0.01:3; Npixelfil1=filter([1-ap(1) 0],[1 Npixelfil2=filter([1-ap(2) 0],[1 Npixelfil3=filter([1-ap(3) 0],[1 Npixelfil4=filter([1-ap(4) 0],[1 IIR:

-ap(1)],NoisyPixel); -ap(2)],NoisyPixel); -ap(3)],NoisyPixel); -ap(4)],NoisyPixel);

figure,plot(Npixelfil1,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=0.1,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil2,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=0.3,Location,SouthEast),

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil3,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=0.5,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil4,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=0.9,Location,SouthEast), set(legend,FontName,arial,FontSize,13), % Para valores negativos de a an=[-0.1 -0.3 -0.5 -0.9]; Npixelfil5=filter([1-an(1) 0],[1 Npixelfil6=filter([1-an(2) 0],[1 Npixelfil7=filter([1-an(3) 0],[1 Npixelfil8=filter([1-an(4) 0],[1

-an(1)],NoisyPixel); -an(2)],NoisyPixel); -an(3)],NoisyPixel); -an(4)],NoisyPixel);

figure,plot(Npixelfil5,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=-0.1,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil6,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=-0.3,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil7,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=-0.5,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfil8,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{IIR} [n],FontName,arial,FontSize,13), legend(a=-0.9,Location,SouthEast), set(legend,FontName,arial,FontSize,13),

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Notar que se prueban valores de la variable a tanto positivos y negativos (aunque este u ltimo no es pedido), As del c odigo anterior se obtiene los siguientes gr acos Para valores positivos de a

26.5

27 26 25

26

25.5 24

xIIR [n]

xIIR [n] a=0.1

25

23 22 21

24.5

24 20 23.5 19

a=0.3
200 18 0 20 40 60 80 100 120 140 160 180 200

23 0

20

40

60

80

100

120

140

160

180

n/fs

n/fs

(a)

(b)

28 26

30

25 24 20 22

xIIR [n]

20 18

xIIR [n] a=0.5

15

10 16 5 14

a=0.9
200 0 0 20 40 60 80 100 120 140 160 180 200

12

20

40

60

80

100

120

140

160

180

n/fs

n/fs

(c)

(d)

Figura 1: (a) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,1, (b) Respuesta
ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,3, (c) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,5, (d) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,9 .

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Para valores negativos de a

29

34

28.5

32

28 30

xIIR [n]

xIIR [n] a=0.1

27.5

28

27

26 26.5 24

26

a=0.3
200 22 0 20 40 60 80 100 120 140 160 180 200

25.5 0

20

40

60

80

100

120

140

160

180

n/fs

n/fs

(a)

(b)

40

50 45

35

40 35

30

30

xIIR [n]

xIIR [n]
25 20

25 20 15 10 5

a=0.5
15 0 20 40 60 80 100 120 140 160 180 200 0 0 20 40 60 80 100 120 140 160

a=0.9
180 200

n/fs

n/fs

(c)

(d)

Figura 2: (a) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,1, (b) Respuesta
ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,3, (c) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,5, (d) Respuesta ruidosa de la se nal ltrada con un ltro IIR con valor a = 0,9 .

Comentarios Generales: Se gracaron valores de a entre (0,1) y para valores de a negativos. Aunque no se exig a en el enunciado del problema aunque es bueno analizar qu e respuesta se obtiene en el caso de tomar valores negativos. De los gr acos se puede concluir que a medida que vamos aumentado el valor de a en el intervalo (0,1) la respuesta del ltro se vuelve m as lenta. Esto se ve claramente comparando la Figura 1(d) con la Figura 1(a). Otra observaci on es que si aumentamos el valor de a en el rango (0,1) la parte transiente de la se nal ltrada se estabiliza mucho mejor. Por otro lado si se toman valores para a en el rango negativo (-1,0) a medida que nos alejamos del valor 0 y nos acercamos a -1, la respuesta es oscilante, con bastante presencia de sobrepaso. Se concluye que un valor ideal o el mejor valor para a es aquel que genera una respuesta r apida, por lo

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

que un valor muy peque no o lo m as cercano a 0 ser a lo ideal. Como b esta relacionado con a como b = 1 a el valor de b tendr a que ser lo m as cercano a 1. Implementaci on del ltro FIR. Es sabido que (3) es la funci on de transferencia en el dominio de z , As la ecuaci on de diferencias se puede obtener de la siguiente forma Y (z ) 1 H (z ) = = X (z ) N
N N

z i
i=0

N Y (z ) =
i=0

z i X (z )

(6)

Aplicando el operador lineal z 1 , es decir la transformada z inversa a (6), se obtiene


N

N y [n] =
i=0

x[ n i ]
N

1 y [n] = N

x[n i]
i=0

(7)

Se puede notar que la funci on de trasferencia escrita no tiene ganancia unitaria, dado que: H (1) = 1 N
N

1i =
i=0

1 (1 + 12 + 13 + .... + 1N ) = 1 N

(8)

Ya que existe un valor 1 que hace que la divisi on no sea 1, por lo que se acomoda la sumatoria para que la ganancia sea unitaria. As la funci on de trasferencia resulta como H (z ) = 1 N +1
N

z i
i=0

(9)

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Esto se realiza mediante el siguiente c odigo Matlab. % Implementacion filtro FIR N=[1 2 3 5 9]; Npixelfirfil1=filter(ones(1,N(1)+1),[N(1)+1 zeros(1,N(1))],NoisyPixel); Npixelfirfil2=filter(ones(1,N(2)+1),[N(2)+1 zeros(1,N(2))],NoisyPixel); Npixelfirfil3=filter(ones(1,N(3)+1),[N(3)+1 zeros(1,N(3))],NoisyPixel); Npixelfirfil4=filter(ones(1,N(4)+1),[N(4)+1 zeros(1,N(4))],NoisyPixel); Npixelfirfil5=filter(ones(1,N(5)+1),[N(5)+1 zeros(1,N(5))],NoisyPixel); figure,plot(Npixelfirfil1,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{FIR} [n],FontName,arial,FontSize,13), legend(N=1,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfirfil2,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{FIR} [n],FontName,arial,FontSize,13), legend(N=2,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfirfil3,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{FIR} [n],FontName,arial,FontSize,13), legend(N=3,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfirfil4,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{FIR} [n],FontName,arial,FontSize,13), legend(N=5,Location,SouthEast), set(legend,FontName,arial,FontSize,13), figure,plot(Npixelfirfil5,k,LineWidth,2), xlabel(n/fs,FontName,arial,FontSize,13), ylabel(x_{FIR} [n],FontName,arial,FontSize,13), legend(N=9,Location,SouthEast), set(legend,FontName,arial,FontSize,13), As del c odigo anterior se obtiene los siguientes gr acos

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

28 26 24

28 26 24 22

22

20

xFIR [n]

20 18 16

xFIR [n] N=1

18 16 14 12

14 12

10

N=2
200 8 0 20 40 60 80 100 120 140 160 180 200

20

40

60

80

100

120

140

160

180

n/fs

n/fs

(a)

(b)

30

30

25

25

20 20

xFIR [n]

xFIR [n]
15 10

15

10

N=3
5 0 20 40 60 80 100 120 140 160 180 200 0 0 20 40 60 80 100 120 140 160

N=5
180 200

n/fs

n/fs

(c)

(d)

30

25

20

xFIR [n]

15

10

N=9
0 0 20 40 60 80 100 120 140 160 180 200

n/fs

(e)

Figura 3: (a) Respuesta ruidosa de la se nal ltrada con un ltro FIR con valor N = 1, (b) Respuesta
ruidosa de la se nal ltrada con un ltro FIR con valor N = 2, (c) Respuesta ruidosa de la se nal ltrada con un ltro FIR con valor N = 3, (d) Respuesta ruidosa de la se nal ltrada con un ltro FIR con valor N = 5, (e) Respuesta ruidosa de la se nal ltrada con un ltro FIR con valor N = 9 .

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Comentarios Generales: De lo gr acos obtenido se concluye que a medida que el valor de N incrementa la respuesta del ltro se hace m as lenta, por lo que conviene escoger N = 1 como el mejor valor para N .

2.

Efecto de la cuantizaci on de los coecientes de un ltro.

En este problema se intenta estudiar el efecto que causa la cuantizaci on de los coecientes de un ltro en la funci on de transferencia del sistema. Considere un ltro modelado por la siguiente funci on de transferencia: 1 H (z ) = (10) 1 + a1 z 1 + a2 z 2 Muestre que los polos de H (z ) y son los complejos conjugados p1 y p2 = p 1 , que satisfacen a1 = 2Rep1 y a2 = |p1 |2 . Note ahora que cuantizar los coecientes del ltro H (z ) implica cuantizar los radios del par de polos complejos conjugados. Estudie que pasa al cuantizar los coecientes del ltro gracando distintos valores reales para p1 . En particular, estudie que pasa cuando |p1 | = 1 con > 0 peque no.

2.1.

Soluci on

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 ) = 1 1 Y (z ) = = a1 1 2 X (z ) 1 + a1 z + a2 z 1+ z + H (z ) = As , la funci on de trasferencia, resulta H (z ) = Y (z ) z2 = X (z ) a2 + a1 z + z 2 (11) 1 1+
a1 z +a2 z2 a2 z2

1
z 2 +a1 z +a2 z2

Como la funci on de trasferencia tiene orden 2, una forma generalizada de escribirla es H (z ) = Y (z ) (z c1 )(z c2 ) = X (z ) (z p1 )(z p2 )

Haciendo uso de la propiedad de distribuci on, se obtiene H (z ) = Y (z ) z 2 (c2 + c1 )z + c1 c2 = 2 X (z ) z (p1 + p2 )z + p1 p2 (12)

10

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

Igualando las funciones de trasferencia (11) con (12) y comparando t erminos se obtiene c1 = c2 = 0 p 1 + p 2 = a1 p 1 p 2 = a2 (13) (14) (15)

Como p1 y p2 deben ser polos complejos conjugados, estos tienen la forma p1 = a + jb y p2 = a jb. Entonces p1 y p2 resultan p1 + p2 = a + jb + a jb = 2a As , a1 = 2Re{p1 } = 2a se reemplaza esto en (12) y se obtiene que p1 + p2 = a1 = 2Re{p1 } = (2(a)) = 2a. Por lo tanto se cumple p 1 + p 2 = a1 Adem as, si p1 p2 = a2 se tiene p1 p2 = (a + jb)(a jb) = a2 jab + jab j 2 b2 = a2 + b 2 Si a2 = |p1 |2 = |a + jb|2 = a2 + b2 . Por lo tanto, se cumple que: p 1 p 2 = a2 (18) (16)

(17)

Luego, se concluye que los polos p1 y p2 satisfacen a a1 y a2 . Ahora, se estudia los efectos de cuantizar los coecientes del ltro gracando para el caso particular cuando |p1 | = 1 y |p1 | = 1 + con > 0 peque no. Esto se realiza mediante el siguiente c odigo Matlab.

% epsilon=0.1; p1=1-epsilon; a1=-2*p1; a2=p1^2;

Caso particular p1=1-epsilon con epsilon=0.1

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

11

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

% epsilon=0.1; p1=1+epsilon; a1=-2*p1; a2=p1^2;

Caso particular p1=1+epsilon con epsilon=0.1

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), % 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), % 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 Caso particular p1=1-epsilon con epsilon=0.9

12

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

1 0.8 0.6 0.4

Ceros Polos

1 0.8 0.6 0.4

Ceros Polos

Eje Imaginario

0.2 0 0.2 0.4 0.6 0.8 1 1 0.5 0 0.5 1 2 2

Eje Imaginario

0.2 0 0.2 0.4 0.6 0.8 1 1 0.5 0 0.5 1 2 2

Eje Real

Eje Real

(a)

(b)

1 0.8 0.6 0.4

Ceros Polos

3 2

Ceros Polos

Eje Imaginario

Eje Imaginario

0.2 0 0.2 0.4 0.6 0.8 1 1 0.5 0 0.5 1 2 2

1 0 1 2 3 2 2

Eje Real

Eje Real

(c)

(d)

Figura 4: (a) Gr aco de polos y ceros para |p1 | = 1 con = 0,1, (b) Gr aco de polos y ceros para
|p1 | = 1 + con = 0,1, (c) Gr aco de polos y ceros para |p1 | = 1 con = 0,9, (d) Gr aco de polos y ceros para |p1 | = 1 + con = 0,9 .

Comentarios Generales: Se puede concluir de los gr acos que como los polos est an ubicados en el eje real los polos son reales. Para el caso donde |p1 | = 1 con = 0,1 los polos est an dentro de la circunferencia unitaria, por lo tanto, el sistema es estable. Para el caso donde |p1 | = 1 + con = 0,1 se puede ver gr acamente que los dos polos se encuentran fuera de la circunferencia unitaria, por lo que el sistema ser a inestable, divergiendo de forma creciente. Para el caso donde |p1 | = 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 |p1 | = 1 + con = 0,9 los polos se encuentran signicativamente fuera del circulo unitario por lo que el sistema inestable, comport andose de forma oscilatoria. Del an alisis anterior se concluye que eligiendo un que sea muy peque no cercano a 0 o cercano a 1 para el caso |p1 | = 1 el sistema es estable pero cambia su comportamiento, de un comportamiento de estabilidad constante a un comportamiento decreciente si se aumenta de un valor cercano a 0 a un valor cercano a 1. Para

13

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

el caso |p1 | = 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 inestabilidad de una inestabilidad de forma exponencial creciente a una inestabilidad oscilatoria creciente.

3.

Cancelaci on de ruido aditivo

(Problema grupal). La t ecnica de cancelaci on de ruido es muy usada para recuperar se nales que est an corruptas por ruido aditivo. El supuesto principal de la t ecnica de cancelaci on 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 inter es. 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 5: 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 inter es y n0 [k ] el ruido aditivo que afecta la se nal. En el problema general de ruido aditivo se tiene que s[k ] = x[k ]+ n0 [k ]. Para la t ecnica de cancelaci on de ruido se necesita una fuente adicional de ruido, esta fuente de ruido la denotamos por n[k ]. La Figura 5 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 ) = h0 + h1 z 1 + + hN 1 z N +1 . Suponga que tenemos dos se nales de audio: s[k ] = x[n] + n0 [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 correlaci on entre s[k ] y n[k ], que denotaremos como sn [n]. Se puede demostrar que los coecientes h0 , , hN 1 vienen dados por: 1 nn [0] h0 nn [0] nn [0] nn [N 1] h1 nn [1] nn [2] nn [N 2] nn [1] = (19) . . . . . .. . . . . . . . . . . . hN 1 nn [N 1] nn [N 2] 0 [N 1] nn [n 1] La ecuaci on (19) nos dice c omo obtener los coecientes de H (z ). Ahora implemente el cancelador de ruidos en Matlab. Los pasos a seguir son:

14

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

1. Leer en Matlab los archivos WAV usando wavread. 2. Calcular (en Matlab) la funci on de autocorrelaci on de n[k ] y la correlaci on 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 incr edulos y los que les interese ac a 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 N 1 tenemos g [k ] = h[k ] n[k ] = i=0 hi n[k i]. De la Figura 5 notamos que:
N 1

e[k ] = s[k ] g [k ] = s[k ] h[k ] n[k ] = s[k ]


i=0

hi n[k i]

(20)

Si H (z ) es una buena aproximaci on de n0 [k ] se cumplir a que g [k ] = h[k ] n[k ] n0 [k ] para todo k . Por lo tanto podemos decir que g [k ] una estimaci on o aproximaci on de n0 [k ], y denotamos esta estimaci on como n0 [k ] = g [k ], donde el s mbolo es la manera est andar de representar una estimaci on. En consecuencia tenemos que: e[k ] = x[k ] + n0 [k ] g [k ] = x[k ] + n0 [k ] n0 x[k ] = x[k ] (21)

Lo que representa una estimaci on de nuestra se nal de inter es. Si consideramos ahora el error de estimaci on 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 ]
N 1 N 1 2

(22) (23)

= ss [0] 2E s[k ]
i=0 N 1

hi n[k i] + E
i=0 N 1 N 1

hi n[k i] hi hj E [n[k i]n[k j ]]

= ss [0] 2
i=0 N 1

hi E [s[k ]n[k i]] +


i=0 j =0 N 1 N 1

(24)

= ss [0] 2
i=0

hi dn [k ] +
i=0 j =0

hi hj nn [k j ]

(25)

15

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

donde ss [n], nn [n] y sn [n] son las secuencias de autocorrelaci on de s[k ], n[k ] y la correlaci 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 hi son desconocidos. La idea ahora es minimizar el error de aproximaci on, para esto usamos el criterio de m nimos cuadrados. Como los hi 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 m nimo. Para el k- esimo coeciente tenemos: E [e[k ]] = 2dn [k ] + 2 hk
N 1

hj nn [k j ]
j =0

(26)

Como el ltro FIR tiene N coecientes, autom aticamente generamos N ecuaciones. Notando que el sistema de ecuaciones que se obtiene es lineal, basta con agrupar los t erminos y obtenemos (5). Notar que mientras tengamos una se nal con ruido correlacionado, esta t ecninca siempre funciona y los pasos 2 al 5 son los que deben aplicarse en la pr actica.

3.1.

Soluci on

El siguiente c odigo 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);

16

Pablo Riquelme J.

Procesamiento Digital de Se nales

Tarea N 3

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 autocorrelaci on 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 electr onicos 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.

17

Pablo Riquelme J.

You might also like