You are on page 1of 74

EXPERIENCIAS DE LABORATORIO

Asignatura : Ciclo : Software : Experiencias : Docente : Ciclo acadmico :

Procesamiento Digital de Seales IX MATLAB 09 Pedro Freddy Huaman Navarrete 2011 - III

Carrera de Ingeniera Electrnica FACULTAD DE MECATRNICA INGENIERA ELECTRNICA Y

JULIO 2011

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIAS DE LABORATORIO PARA LA ASIGNATURA DE PROCESAMIENTO DIGITAL DE SEALES EXPERIENCIA DE LABORATORIO 1ra Experiencia de Laboratorio 2da Experiencia de Laboratorio 3ra Experiencia de Laboratorio 4ta Experiencia de Laboratorio 5ta Experiencia de Laboratorio EXAMEN PARCIAL 6ta Experiencia de Laboratorio SEMANA DE CLASES TEMA DE LABORATORIO Introduccin al Toolbox Signal Processing del Matlab Grfico de seales peridicas y no peridicas. Convolucin. Cambio de la tasa de muestreo: Decimacin e Interpolacin. Transformada discreta de Fourier: Directa e Inversa Transformada discreta de Fourier corta en el tiempo. Espectrograma. -------------------Transformada Z. Diagrama de polos y ceros. Estructura de filtros digitales. Filtros digitales no recursivos. Pasa-Bajo, Pasa-Alto, Pasa-Banda y Rechaza-Banda. Filtros digitales recursivos. Transformacin de frecuencia. Introduccin al filtrado adaptivo: algoritmo Least Mean Square. ---------------------------------------

Semana 01 Semana 02 Semana 03 Semana 04 Semana 05 Semana 06 Semana 07 Semana 08 Semana 09 -------------------Semana 11 Semana 12 Semana 13

7ma Experiencia de Laboratorio

Semana 14 Semana 15 Semana 16 Semana 17 Semana 18 ---------------------------------------

8va Experiencia de Laboratorio 9na Experiencia de Laboratorio EXAMEN FINAL EXAMEN SUSTITUTORIO

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 2

Laboratorio de Procesamiento Digital de Seales

2011-III

NDICE

1. Experiencia de Laboratorio N 01: Introduccin al Toolbox Signal Processing del Matlab. Pg. 03 2. Experiencia de Laboratorio N 02: Grfico de seales peridicas y no peridicas. Convolucin. Pg. 10 3. Experiencia de Laboratorio N 03: Cambio de la tasa de muestreo: Decimacin e Interpolacin. Pg. 19 4. Experiencia de Laboratorio N 04: Transformada discreta de Fourier. Directa e Inversa. 5. Experiencia de Laboratorio N 05: Transformada discreta de Fourier corta en el tiempo. Espectrograma.

Pg. 24

Pg. 32

6. Experiencia de Laboratorio N 06: Transformada Z. Diagrama de Polos y Ceros. Estructura de Filtros Digitales. Pg. 39 7. Experiencia de Laboratorio N 07: Filtros digitales no recursivos. Pasa-Bajo, PasaAlto, Pasa-Banda y Rechaza-Banda. Pg. 47 8. Experiencia de Laboratorio N 08: Filtros digitales recursivos. Transformacin de frecuencias. Pg. 59 9. Experiencia de Laboratorio N 09: Introduccin al filtrado adaptativo. Algoritmo Least Mean Square

Pg. 65

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 3

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 01

INTRODUCCIN AL TOOLBOX SIGNAL PROCESSING DEL MATLAB

1. OBJETIVOS: 1.1 1.2 1.3 Dar una introduccin al toolbox de procesamiento de seales del software Matlab. Realizar operaciones con vectores para representar seales digitales en funcin al tiempo. Realizar operaciones con matrices para representar imgenes digitales de distintas dimensiones.

2.- FUNDAMENTO TERICO: 2.1 Toolbox de Procesamiento de Seales del Matlab El Matlab, en su versin R2007b, cuenta con el toolbox Signal Processing versin 6.8 de Agosto del 2007, el cual contiene una serie de comandos y/o funciones agrupados segn la tabla de contenidos mostrado en la figura 1.1. >>help signal

Figura 1.1 Funciones agrupadas pertenecientes al Toolbox Signal Processing del Matlab. Para conocer los comandos y/o funciones pertenecientes a cada grupo, basta con dar un click sobre uno de ellos. Por ejemplo, al dar click sobre la palabra WINDOWS, se obtiene una lista de comandos que es mostrada en la figura 1.2. Dicha lista de comandos corresponde a los diferentes tipos de ventanas que son utilizadas en el diseo de filtros digitales.
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 4

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 1.2 Lista de comandos del contenido de WINDOWS del Toolbox Signal Processing del Matlab. 2.2 Representacin de seales digitales en funcin al tiempo Las seales digitales, en su mayora, son representadas en funcin al tiempo. Por lo tanto, su representacin en el entorno del Matlab se realiza a travs de vectores filas o vectores columnas. En un caso particular, cuando la seal digital haya sido digitalizada con dos o ms nmeros de canales, se optar por utilizar matrices. Donde, cada fila o columna, representar a un canal en particular de dicha seal a analizar. Por ejemplo, a continuacin se muestra un vector conformado por nmeros aleatorios entre -16 y 16, que a su vez corresponde a una seal de audio ruidoso con 12000 muestras.

>> t = linspace( 0 , 1 , 12000 ); >> V1 = 32 * rand( 1 , 12000 ) - 16; >> V1 = round( V1 ); >> plot( t, V1 ) >> axis( [ 0.38 0.40 -20 20 ] ) >> grid >> sound( V1 , 8000 )

%generando el vector de nmeros %aleatorios. %redondeando los elementos del %vector V1. %graficando el vector de ruido %en la figura 1.3 %limitando la visualizacin del %vector de ruido de la figura 1.3 %reproduciendo el audio ruidoso

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 5

Laboratorio de Procesamiento Digital de Seales

2011-III

20 15 10 5 0 -5 -10 -15 -20 0.38 0.382 0.384 0.386 0.388

0.39 0.392 0.394 0.396 0.398

0.4

Figura 1.3 Parte del grfico de la seal de audio ruidoso. Asimismo, tambin es posible representar las seales de audio, utilizando vectores. A continuacin se muestra un ejemplo de la forma como se realiza la lectura de un archivo de audio de extensin WAV, a travs del software Matlab. >> V2 = wavread( ejemplo.wav );

>> figure( 3 ), plot( V2 ) >> grid >> V2( 10 )

% el alumno debe de copiar % cualquier archivo de extensin % WAV a la carpeta de trabajo del % Matlab. % Ver figura 1.4 %verificando el valor de la %dcima muestra de dicha seal.

0.3

0.2

0.1

-0.1

-0.2

-0.3

-0.4

0.5

1.5

2.5

3.5

4.5 x 10
4

Figura 1.4 Seal de audio ledo desde el Matlab

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 6

Laboratorio de Procesamiento Digital de Seales

2011-III

2.3

Representacin de imgenes digitales Las imgenes digitales son representadas numricamente a partir de matrices o arreglos, donde cada elemento o componente de la matriz o del arreglo, representa a un pixel con una tonalidad de gris o color adecuado. Por ejemplo, a continuacin, se representa una matriz conformada por nmeros aleatorios, que a su vez corresponde a una imagen de ruido con 128 filas y 128 columnas, y donde sus elementos se encuentran en el intervalo de 0 a 255. Asimismo, todo elemento o pixel de la matriz con valor igual a 0 representa al color negro, mientras que los pixeles con valores iguales a 255, representan al color blanco. Por otro lado, los pixeles con valores intermedios, corresponden a una intensidad de gris iniciando en el color negro y finalizando en el color blanco.

>> IM = 255 * rand( 128 ,128 ); >> IM = round( IM ); >> figure( 1 ) >> colormap( gray ( 256 )) >> image( IM ) >> IM( 4 , 3)

%genera una matriz con componentes %aleatorios entre 0 y 255.

%configura la imagen a tonalidades de %gris %Ver figura 1.5 %verificando el contenido de la cuarta %fila y tercera columna

20

40

60

80

100

120 20 40 60 80 100 120

Figura 1.5 Imagen de tonos de gris generada de nmeros aleatorios en el intervalo de 0 a 255.

El Matlab tambin cuenta con un toolbox exclusivamente para el procesamiento de imgenes, llamado imagen processing. En este toolbox es posible encontrar variedades de funciones y/o comandos que son utilizados en el procesamiento espacial o frecuencial de una imagen digital. Asimismo, es posible cargar variables correspondientes a diversas imgenes con tamaos de 256x256 y 128x128 pixeles.
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 7

Laboratorio de Procesamiento Digital de Seales

2011-III

>> load imdemos

>> figure( 2 ) >> colormap( gray ( 256 ) ) >> subplot( 2 , 1 , 1) , image( trees) >> subplot( 2 , 1 , 2) , image( saturn )

% cargar distintas variables propias del % Matlab que corresponden a imgenes %digitales en formato de grises. %ver figura 1.6

20

20

40

40

60

60

80

80

100

100

120 20 40 60 80 100 120

120 20 40 60 80 100 120

Figura 1.6 Ejemplo de imgenes en tonos de gris. a) Imagen TREES. b) Imagen SATURN

Asimismo, tambin es posible representar las imgenes en color, utilizando tres matrices. A continuacin se muestra un ejemplo de la forma como se realiza la lectura de un archivo de imgenes de extensin JPEG, a travs del software Matlab. >> IM2 = imread( ejemplo.jpg );

>> figure( 2 ) >> image( IM2 ) >> IM2( 5 , 15 , : )

%el alumno debe de copiar cualquier %archivo de extensin JPEG o BMP, %a la carpeta de trabajo del Matlab. %ver figura 1.7 %verificando el color contenido en el %pixel de la quinta fila y quinceava %columna. %Esto muestra la presencia de tres %matrices de 600x800 pixeles.

>> size( IM2 ) ans = 600 800 3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 8

Laboratorio de Procesamiento Digital de Seales

2011-III

100

200

300

400

500

600

100

200

300

400

500

600

700

800

Figura 1.7 Archivo de Imagen ledo desde el Matlab

Finalmente, tambin es posible representar un video digital en el entorno del Matlab, pero en este caso utilizando arreglos multidimensionales tal como se muestra en el siguiente ejemplo.

>> load mri >> whos Name Attributes D Map siz >> size( D ) ans = 128 128 1 27 Size

%cargando un arreglo

Bytes

Class

4-D 89x3 1x3

442368 2136 24

uint8 double double

%27 cuadros de 128x128

>> colormap(gray( 256 ) ) %ver figura 1.8 >> subplot( 3 , 2 , 1 ), image( D( : , : , 1 , 1 ) ) >> subplot( 3 , 2 , 2 ), image( D( : , : , 1 , 2 ) ) >> subplot( 3 , 2 , 3 ), image( D( : , : , 1 , 3 ) ) >> subplot( 3 , 2 , 4 ), image( D( : , : , 1 , 4 ) ) >> subplot( 3 , 2 , 5 ), image( D( : , : , 1 , 5 ) ) >> subplot( 3 , 2 , 6 ), image( D( : , : , 1 , 6 ) )

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 9

Laboratorio de Procesamiento Digital de Seales

2011-III

20 40 60 80 100 120 20 20 40 60 80 100 120 20 20 40 60 80 100 120 20 40 60 80 100 120 40 60 80 100 120 40 60 80 100 120

20 40 60 80 100 120 20 20 40 60 80 100 120 20 20 40 60 80 100 120 20 40 60 80 100 120 40 60 80 100 120 40 60 80 100 120

Figura 1.8 Representacin de las 06 primeras imgenes del arreglo multidimensional.

3.- EJERCICIOS POR SOLUCIONAR: 3.1 Leer un archivo de audio y presentarlo en un vector. Posteriormente, generar un vector aleatorio de la misma dimensin para ser sumado al vector de audio original. Reproducir y captar la diferencia entre ambos vectores. 3.2 Leer un archivo de imagen y presentarlo en una matriz. Posteriormente, generar una matriz aleatoria de la misma dimensin para ser sumado a la matriz de imagen original. Visualizar y captar la diferencia entre ambas matrices. 3.3 Generar aleatoriamente, un arreglo multidimensional conformado por 40 matrices de 64x64 pixeles, y a tonos de gris. Finalmente, presentar en una sola ventana las ltimas 8 matrices.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 10

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 02

GRFICO DE SEALES PERIDICAS Y NO PERIDICAS. CONVOLUCIN.

1.

OBJETIVOS: 1.1 1.2 1.3 Graficar seales peridicas discretas en el tiempo. Graficar seales no peridicas discretas en el tiempo. Realizar la operacin de convolucin entre seales discretas.

2.

FUNDAMENTO TERICO: 2.1 Funciones discretas Entre las ms importantes encontramos: El impulso unitario:

[n k ]

0, n k 1, n k

El escaln unitario: 2.2

[n k ]

0, n k 1, n k

Seales peridicas Las seales peridicas son aquellas seales que muestran periodicidad respecto del tiempo, esto quiere decir que describen ciclos repetitivos. Ver la figura 1.1. Por lo tanto, se cumple la siguiente expresin matemtica: x (t) = x (t + T) = x (t + nT),
4 3 2 1 0 -1 -2 -3 -4

con n como nmero entero.

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 1.1

Ejemplo de seal peridica.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 11

Laboratorio de Procesamiento Digital de Seales

2011-III

2.3

Seales No Peridicas. Las seales no peridicas son aquellas seales en donde no se muestra periodicidad respecto del tiempo, esto quiere decir que no describen ciclos repetitivos. Por lo tanto, no se cumple la expresin matemtica anteriormente planteada. A continuacin se muestra un ejemplo en la figura 1.2.
0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4

0.5

1.5

2.5 x 10
4

Figura 1.2 2.4

Ejemplo de seal no peridica.

Operacin de convolucin. La operacin de convolucin es conmutativa y se realiza sobre dos seales discretas y finitas En caso de una seal de entrada x[n], el resultado de la convolucin est dada por la siguiente expresin matemtica.

x [n]

h [n]

y [n]

y[n] x[n]

h[n] h[n]

x[n]

y[n]
k

x[k ] h[n k ]

3.

EJERCICIOS SOLUCIONADOS: 3.1 Graficando seales contnuas y discretas. Impulso y Escaln Unitario. Para representar una seal en forma continua se hace uso del comando o funcin plot. Esta se encarga de unir los puntos dando una apariencia de continuidad. Por otro lado, para graficar una seal discreta, se utiliza el comando o funcin stem, que se encarga de graficar mediante impulsos, la seal a representar. Continuacin un ejemplo, ver la figura 1.3. >> n = [ 0 1 2 3 4 5 6 ]; >> x = [ 5 9 3 -4 0 8 7 ]; %tiempo discreto %seal discreta
Pgina 12

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

>>figure(1) >>subplot(1 , 2 , 1 ) , plot ( n , x) %grfico continuo >>title ( Seal Contnua ), xlabel (tiempo ) >>subplot(1 , 2, 2 ) , stem ( n , x) %grfico discreto >>title ( Seal Discreta ), xlabel (tiempo )

Seal Contnua 10 10

Seal Discreta

-2

-2

-4

2 tiempo

-4

2 tiempo

Figura 1.3

Ejemplo de seal contnua y discreta.

Una seal impulso: 2 [n - 1] >> n1 = [ 0 : 7]; >> x1 = 2 * [ 0 1 0 0 0 0 0 0];

Una seal escaln: -5 [ n] >> n2 = [ -20 : 1 : 20]; >> x2 = -5 * [ zeros( 1, 20 ) ones(1,21) ]; Una seal de ruido entre 0 y 1: r[n] >> r3 = rand ( 1, 1000 ); >> n3 = 0 :1: 999; >> subplot(3,1,1), stem ( n1 , x1 ) >> subplot(3,1,2), stem( n2 , x2 ) >> subplot(3,1,3), stem( n3 , r3 )

% ver figura1.4

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 13

Laboratorio de Procesamiento Digital de Seales

2011-III

0 0 -2 -4

-6 -20 1

-15

-10

-5

10

15

20

0.5

100

200

300

400

500

600

700

800

900

1000

Figura 1.4 3.2

Ejemplo de seal impulso, escaln y ruido.

Graficando una seal sinusoidal. Para representar una seal seno o coseno en el Matlab, debe de indicarse la variable temporal sealando el tiempo de duracin de la onda. Por ejemplo, para graficar una seal seno de frecuencia igual a 3 Hz, amplitud igual a 2 voltios y fase igual a 90, se aplica el siguiente procedimiento. Discretizando una seal Senoidal continua, para luego graficarla en el dominio del tiempo discreto. x(t) = A * sin (2*pi*f *t + fase ) Para discretizar, reemplazamos t por nT en la expresin anterior. x[nT] = sin (2*pi*f*nT + fase) Donde: T es el periodo de muestreo o 1/Fs x[ n] = sin(2*pi*f*n / Fs + fase) >> Fs = 100; >> n = 0:Fs-1; >> fase = 90; >> A = 2; >> F = 3; >> x = A * sin ( 2*pi* F*n / Fs + fase*pi/180); >> stem ( n , x ,r ) %frecuencia de muestreo

%frecuencia fundamental: % Fs> 2*F % Ver figura 1.5

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 14

Laboratorio de Procesamiento Digital de Seales

2011-III

2 1.5 1 0.5 0 -0.5 -1 -1.5 -2

10

20

30

40

50

60

70

80

90

100

Figura 1.5

Ejemplo de seal sinusoidal.

Sumando un ruido a la seal seno: >> r = length(x); >> R = randn(1,r); >> xR = 2*x + R; >> subplot( 1 , 2 , 1) , plot( n , xR) >> subplot( 1 , 2 , 2) , stem( n , xR) Cuando no se cumple con el teorema de muestreo, se tiene una representacin equivocada de la seal discreta. Por ejemplo, a continuacin se grafica una onda seno con frecuencia fundamental igual a 20 Hz y frecuencia de muestreo igual a 30 Hz. En este caso no se cumple la relacin de tener una Fs> 2 * Fo. >> Fs = 30; >> F = 20; >> n = 0:Fs-1; >> Fase = 90; >> x = sin ( 2*pi* F*n / Fs + fase*pi/180); >> stem ( n , x ,b ) > > hold on >> plot( n , x , r ) >> hold off

%utilizado para congelar la % figura y %volver a graficar % sobre ella. Ver figura 1.6

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 15

Laboratorio de Procesamiento Digital de Seales

2011-III

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6

10

15

20

25

30

Figura 1.6

Seal sinusoidal distorsionada.

Tambin es posible graficar otros tipos de seales peridicas tal como es el caso de la onda cuadrada. Por lo tanto, para graficar la onda cuadrada, un tren de pulsos, o una modulacin por ancho de pulso, se utiliza el comando o funcin del Matlab denominado: SQUARE. >> help square >> Fs = 1000; >> t = linspace( 0 ,1 , Fs ); >> x = 1 + square( 2 * pi * t * 4 , 20 ); >> plot( t , x )
2 1.8 1.6 1.4 1.2 1 0.8 0.6 0.4 0.2 0

% ver figura 1.7

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 1.7 3.3

Seal tren de pulsos obtenido de la onda cuadrada.

Graficando una seal no peridica. Las ltimas versiones del Matlab cuentan con comandos o funciones que permiten representar y posteriormente graficar seales de no peridicas, tal es el caso de la seal de electrocardiograma. Para ello, se utiliza la funcin o comando ECG, que permitir graficar un latido cardiaco mostrando las ondas P, Q, R, S y T. Considerando que el latido corresponde a una persona sana, entonces obtenemos el tiempo de duracin para un latido cardiaco: 70 lat / min. >> help ecg >> x = ecg(1000);

% considerando 1000 muestras


Pgina 16

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

>> Lat = 60 / 70; >> t = linspace( 0 , Lat , 1000 ); >> plot( t , x ), grid >> text(0.35,0.7, 'Complejo QRS')
1 0.8 Complejo QRS 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

% tiempo de duracin de un latido % 70 latidos por minuto % ver figura 1.8

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Figura 1.8

Seal sinusoidal distorsionada.

Asimismo, para graficar la funcin SINC, se utiliza el comando o funcin SINC. Tal como es mostrado en la figura 1.8.

f (t ) sin c( )

sen(

>> theta=linspace(-10,10,100); >> w =sinc( theta ); >> subplot( 1 , 2 , 1) , >> plot( t , W ) >> subplot( 1 , 2 , 2) , >> stem( t , W ) 3.4

%Forma Contnua. Figura 1.9 %Forma Discreta. Figura 1.9

Convolucin. Para realizar la convolucin entre dos seales finitas, o secuencias, habr que definir cada una de ellas en un vector, y luego utilizar el comando CONV. Por ejemplo, hacer la convolucin entre x[n], h1[n] y h2[n].

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 17

Laboratorio de Procesamiento Digital de Seales

2011-III

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -10 -5 0 5 10

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -10 -5 0 5 10

Figura 1.9

Funcin SINC. En forma continua y discreta.

x[n]

[n] 4 [n 1] 5 [n 3] 6 [n 4]

h1[n] h 2 [n]

[n] 2 [n 5] 0.5 [n 7] 8 [n 8] 17 [n 9]
y [n]

x [n]

h1[n]

h2 [n]

>> x = [ 1 4 0 5 6 ]; >> h1 = [ 1zeros(1,4) -2 ]; >> h2 = [ zeros(1,7) -0.5 8 17 ]; >> y1 = conv( x , h1 ); % o tambin conv( h1 , x ) >> y = conv( y1 , h2 ); % o tambin conv( h2 , y1 ) >> stem( 0:length(y) -1 , y ) % ver figura 1.10
150 100 50 0 -50 -100 -150 -200 -250 -300

10

12

14

16

18

Figura 1.10

Resultado de la convolucin.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 18

Laboratorio de Procesamiento Digital de Seales

2011-III

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Graficar 750 mili segundos de una seal triangular. Dicha seal deber tener una frecuencia igual a 12 Hz, una amplitud igual a 1.5 voltios y un nivel DC igual a -0.75 voltios. Graficar 10 latidos cardiacos, uno a continuacin del otro, de tal forma que el primer, quinto y octavo latido tengan una duracin de 0.9 segundos, mientras que los latidos restantes tengan una duracin de 0.7 segundos. Del diagrama de bloques mostrado (figura 1.11), obtener la seal de salida. Para ello, se plantea dos filtros digitales representados en el tiempo discreto h1[n] y h2[n], as como tambin una seal de ruido representada por r[n]. Considerar:
x[n] = [n] - 2 [n-2] h1 [ n ] = [n] - 8 [n-1] + 3 [n-2 ] h2 [ n ] = 2 [n - 1] + 2 [n - 3] r[n]= seal de rudo

4.2

4.3

[n]

r [ n]

+
x [ n]

h1[ n ]

y [ n]

h2[ n ]

Figura 1.11

Diagrama de bloques por analizar.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 19

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 03

CAMBIO DE LA TASA DE MUESTREO: DECIMACIN E INTERPOLACIN

1.

OBJETIVOS: 1.1 Graficar seales decimadas en el tiempo. 1.2 Graficar seales interpoladas en el tiempo. 1.3 Analizar y graficar cambios de la tasa de muestreo por un factor no entero.

2.

FUNDAMENTO TERICO: 2.1 Decimacin Es una operacin encargada de disminuir la frecuencia de muestreo por un factor entero denominado M.

Pasabajo Fcorte = /M

2.2

Interpolacin Es una operacin encargada de aumentar la frecuencia de muestreo por un factor entero denominado L.

Pasabajo Fcorte = /L

2.3

Cambio de la tasa de muestreo por un factor no entero Cuando se utiliza la operacin de decimacin e interpolacin a la vez, con la finalidad de cambiar la tasa de muestreo por un factor no entero: L / M

Pasabajo Fcorte = /L

Pasabajo Fcorte = /M

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 20

Laboratorio de Procesamiento Digital de Seales

2011-III

3.

EJERCICIOS SOLUCIONADOS: 3.1 Seguidamente se realiza la decimacin e interpolacin de una seal peridica en ausencia del filtro pasabajo mostrado en los diagramas de bloques anteriores. >> Fs = 100; >> t = linspace( 0 , 1 , Fs ); >> x = sin( 2 * pi * 1 * t) + 2 * cos( 2 * pi * 3 * t ); >> subplot( 1 , 3 , 1 ) , stem( t , x ), grid, title( Seal Original ) >> M = 4; >> L = 3; >> xd = downsample( x , M ); >> Fs1 = Fs / M ; >> t1 = linspace( 0 , 1 , Fs1 ); >> subplot( 1 , 3 , 2 ) , stem( t1 , xd ), grid, title( Seal Decimada ) >> xi = upsample( x , L ); >> Fs2 = Fs * L ; >> t2 = linspace( 0 , 1 , Fs2 ); >> subplot( 1 , 3 , 3 ) , stem( t2 , xi ) , grid, title( Seal Interpolada )
Seal Original 3 3 Seal Decimada 3 Seal Interpolada

-1

-1

-1

-2

-2

-2

-3

0.5

-3

0.5

-3

0.5

Figura 3.1 3.2

Resultado de la decimacin e interpolacin.

Luego, se muestra el desarrollo de la operacin de decimacin completa utilizando el filtro pasa bajo sealado en el diagrama de bloques. Sea una secuencia x[n]=2sin (2* *f*n/Fs). Representemos la versin decimada por 2, considerando una Fs = 100 muestras/seg. y una frecuencia fundamental igual a 5 Hz. >> Fs = 100; >> n = 0 : Fs-1;

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 21

Laboratorio de Procesamiento Digital de Seales

2011-III

>> f = 5; >> x = 2 * sin(2*pi*f*n/Fs ); >> stem( n , x ) >> help decimate >> x2 = decimate(x,2); >> Fs = Fs / 2; >> stem(0:Fs-1 , x2 )
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5

%ver figura 3.2

10

15

20

25

30

35

40

45

50

Figura 3.2

Versin decimada de la onda seno

Se puede observar una caracterstica importante. En la figura 3.1 se percibe la presencia de 100 muestras representando 5 ciclos por segundo. En cuanto que en la figura 3.2, se aprecia la presencia de solo 50 muestras tambin mostrando 5 ciclos por segundo. 3.3 Luego, se muestra el desarrollo de la operacin de interpolacin completa utilizando el filtro pasa bajo sealado en el diagrama de bloques. Seguidamente interpolamos por 2 para retornar al nmero de muestras inicial de esta seal. >> Fs = Fs*2; >> xx = interp(x2,2); >> stem(0:Fs-1 , xx )
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5

%ver figura 3.3

10

20

30

40

50

60

70

80

90

100

Figura 3.3
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Versin interpolada de la onda seno


Pgina 22

Laboratorio de Procesamiento Digital de Seales

2011-III

De esta manera, se recupera la Fs de muestreo inicial. A continuacin, es posible observar la diferencia entre la seal original y la manipulada por una operacin de decimacin e interpolacin (ver figura 3.4). >> plot(0:Fs-1,x,'r',0:Fs-1,xx,'b')
2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2.5

10

20

30

40

50

60

70

80

90

100

Figura 3.4

Diferencia de seales decimada e interpolada

3.4

Asimismo, para lograr el cambio de la Frecuencia de Muestreo, Fs, por un nmero fraccionario de veces, se procede a realizar ambas operaciones a la vez, tal como lo muestra la siguiente figura.

x[n]

M Fs * L
Fs * L M

xT [ n ]

Fs

Por ejemplo, si se desea una Fs_Final = 300 muestras/seg, a partir de una Fs_Inicial = 400 muestras/seg, se deber de realizar las operaciones de decimacin e interpolacin una seguida de la otra.

Fs_Incial

Fs_Final

>> Fs = 400; >> t = linspace( 0 , 1 , Fs ); >> x = cos( 2 * pi * t * 0.5 ) + cos( 2 * pi * t * 1.5 ) >> subplot(1,2,1), stem( t , x )
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 23

Laboratorio de Procesamiento Digital de Seales

2011-III

>> help resample >> L = 3; >> M = 4; >> xr =resample(x,L,M); >>Fs_n = Fs * L / M; >> t1 = linspace( 0 , 1 , Fs_n ); >> subplot(1,2,2), stem( t1 , xr )
2 1.5 1 1 0.5 0 -0.5 -1 -1.5 -1.5 -2 -2 -2.5 0.5 0 -0.5 -1 2.5 2 1.5

%ver figura 3.5

0.5

0.5

Figura 3.5

Seal re-muestreada por un factor no entero.

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Con ayuda del comando o la funcin ECG, cargar una seal de electrocardiograma con 1000 muestras por segundo; luego, re-muestrear dicha seal, de tal forma que tres latidos cardiacos continuos se encuentren muestreados a 1200 muestras por segundo. Implementar una seal de tono nico de frecuencia 3 KHz, amplitud igual a 5 voltios y frecuencia de muestreo de 40 KHz. Cambiar la tasa de muestreo a 20 KHz y posteriormente a 5 KHz. Qu cambios se nota al realizar estas operaciones?. Reproducir dichas seales con ayuda del comando SOUND, y mostrar sus comentarios y observaciones. Implementar una seal multi tono conformado por algunas notas musicales, tal como se indica a continuacin. Utilizar una frecuencia de muestreo de 10 KHz. SEAL =[DO, DO, DO, FA, LA, DO, DO, DO, FA, LA, FA, FA, MI, RE ]; Cambiar la tasa de muestreo de tal forma que el nuevo periodo de muestreo sea de 125 microsegundos. Adems, las notas FA y LA debern tener el doble de duracin en el tiempo respecto a las otras notas musicales.

4.2

4.3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 24

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 04

TRANSFORMADA DISCRETA DE FOURIER. DIRECTA E INVERSA

1.

OBJETIVOS: 1.1 Obtener la transformada discreta de Fourier directa e inversa. 1.2 Representar el espectro de frecuencia de una seal peridica. 1.3 Representar el espectro de frecuencia de una seal no peridica.

2.

FUNDAMENTO TERICO: 2.1 Transformada Discreta de Fourier (TDF) La TDF es la herramienta principal del Procesamiento Digital de Seales. El Toolbox de Signal Processing cuenta con un comando o funcin que nos ayuda a calcular la Transformada Discreta de Fourier FFT. Seguidamente se muestra la expresin para el clculo de la Transformada discreta de Fourier directa e inversa.
N 1 -2 j n k N

X (k )
n 0

x[n] e 1 N
N 1

x[n]

X (k ) e
k 0

jn k N

k
2.2

0, 1, 2, ..., N 1

Representacin del algoritmo de la TDF para el entorno del Matlab A continuacin se muestra el algoritmo de la TDF para ser ejecutado en el entorno del Matlab. De la misma manera, es posible adaptar este algoritmo a la sintaxis de cualquier otro software de programacin, de tal forma que pueda ser ejecutado sin problema alguno. N = 1024; %definir un valor para N x = 10 * rand( 1 , N) %definir una seal con muestras discretas for k = 0:N-1 a = x(1) * exp( -2 * pi * j * k * 0 / N); for n = 1 : N-1 a = x( n + 1 ) * exp( -2 * pi * j * n * k / N ) + a;

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 25

Laboratorio de Procesamiento Digital de Seales

2011-III

end TX( k + 1 ) = a; end Comparando este resultado con el del comando o funcin FFT. >> TX1 = fft( x , N ); >>[ TX TX1 ] 2.3 Transformada Rpida de Fourier (FFT) La transformada rpida de Fourier es un algoritmo para agilizar el clculo de la transformada discreta de Fourier, en el cual disminuye el nmero de operaciones de sumas y multiplicaciones entre nmeros complejos.

3.

EJERCICIOS SOLUCIONADOS: 3.1 Transformada Discreta de Fourier de una seal peridica. Sea una seal coseno x[n], con una frecuencia de muestreo Fs=100 Hz y una frecuencia fundamental de 20 Hz. x[n] = cos(2 *20*n/Fs). A continuacin se grafica la seal x[n] en el tiempo para un segundo de duracin, Seguidamente, se obtiene la Transformada Discreta de Fourier (DFT o FFT) utilizando una cantidad de muestras N = 16 y N = 512. Finalmente, se grafica el mdulo y fase, y la parte Real e Imaginaria de su espectro. >> Fs = 100; >> n=0:Fs-1; >> x = cos(2*pi*n*20/Fs); >> stem(n,x)
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

%ver figura 4.1

10

20

30

40

50

60

70

80

90

100

Figura 4.1

Seal discreta con Fs = 100 Hz.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 26

Laboratorio de Procesamiento Digital de Seales

2011-III

>> X_16 = fft(x,16); >> X_512 = fft(x,512); Luego, se obtiene el mdulo y fase de la TDF y se grafica respecto a su eje correspondiente. >> mX_16 = abs (X_16); >> fX_16 = angle (X_16); % mdulo para N=16 puntos % fase para N=16 puntos

>> mX_512 = abs (X_512); >> fX_512 = angle (X_512); >> figure(1) >> f_16 = linspace(0,Fs,16); >> f_512 = linspace(0,Fs,512);

% mdulo para N=512 puntos % fase para N=512 puntos

>> subplot(2,1,1), stem(f_16 , mX_16) >> subplot(2,1,2), stem(f_16 , fX_16)


8 6 4 2 0

%ver figura 4.2

10

20

30

40

50

60

70

80

90

100

4 2 0 -2 -4

10

20

30

40

50

60

70

80

90

100

Figura 4.2

Transformada Discreta de Fourier. Mdulo y Fase (N=16).

>> figure(2) >> subplot(2,1,1), stem(f_512 , mX_512) >> subplot(2,1,2), stem(f_512 , fX_512)

%ver figura 4.3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 27

Laboratorio de Procesamiento Digital de Seales

2011-III

50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100

4 2 0 -2 -4

10

20

30

40

50

60

70

80

90

100

Figura 4.3

Transformada Discreta de Fourier. Mdulo y Fase (N=512).

De igual manera se puede graficar la parte real e imaginaria del espectro de la seal. >> rX_16 = real (X_16); >> iX_16 = imag (X_16); >> rX_512 = real (X_512); >> iX_512 = imag (X_512); >> subplot(2,1,1), stem(f_512 , rX_512) >> subplot(2,1,2), stem(f_512 , iX_512)
60 40 20 0 -20

%ver figura 4.4

10

20

30

40

50

60

70

80

90

100

40 20 0 -20 -40

10

20

30

40

50

60

70

80

90

100

Figura 4.4

Transformada Discreta de Fourier. Real e Imaginaria (N=512).

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 28

Laboratorio de Procesamiento Digital de Seales

2011-III

Obteniendo y graficando la Transformada Discreta de Fourier Inversa IFFT. >> ix = ifft(X_512 , 512); >> rix = real(ix); >> stem( 0:Fs-1 , rix(1:Fs) )
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

%ver figura 4.5

10

20

30

40

50

60

70

80

90

100

Figura 4.5

Transformada Discreta de Fourier Inversa

Graficando la FFT con N=1024 para la suma de tres seales cosenos de frecuencias: 10 Hz, 30 Hz, 43 Hz (Fs=120). La presentacin se muestra desde Fs/2 a Fs/2. >> Fs = 120; >> n = 0:Fs-1; >> x = cos(2*pi*n*10/Fs) + 2*cos(2*pi*n*30/Fs) + 4*cos(2*pi*n*43/Fs); >> tX = fft(x,1024); >> tX = fftshift( tX ); >> mtX = abs(tX); >> f = linspace( -Fs/2 ,Fs/2 ,1024); >> plot( f, mtX), grid %ver figura 4.6
250

200

150

100

50

0 -60

-40

-20

20

40

60

Figura 4.6

Mdulo de la TDF de una seal peridica

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 29

Laboratorio de Procesamiento Digital de Seales

2011-III

Graficando la FFT de una Seal Coseno sumado a un ruido >> Fs=100; >> n = 0:Fs-1; >> x = 2*cos(2*pi*n*10/Fs); >> r = randn(1,Fs) / 1.5 ; >> xr = x + r; >> figure(1) , plot(xr) >> tXR = fft ( xr , 1024 ); >> mtXR = abs (tXR); >> f = linspace(0,Fs,1024); >> plot(f,mtXR) Graficando la FFT con N = 1024 para una Seal Cuadrada de F=10 Hz. >> Fs=200; >> n = 0:Fs-1; >> x = square(2*pi*n*10/Fs); >> figure(1) , stem(x)
100 90 80 70 60 50 40 30 20 10 0

%ver figura 4.7

10

20

30

40

50

60

70

80

90

100

Figura 4.7

Mdulo de la TDF de una seal peridica con ruido

>> tX = fft ( x , 1024 ); >> mtX = abs (tX); >> mtX = fftshift( mtX ); >> f = linspace( -Fs/2 ,Fs/2 ,1024); >> plot(f,mtX)

%ver figura 4.8

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 30

Laboratorio de Procesamiento Digital de Seales

2011-III

140

120

100

80

60

40

20

0 -100

-80

-60

-40

-20

20

40

60

80

100

Figura 4.8 3.2

Mdulo de la TDF de una seal peridica (cuadrada)

Transformada Discreta de Fourier de una seal no peridica. Para mostrar el espectro de frecuencia en mdulo de una seal no peridica, se procede a abrir un archivo de audio de la siguiente forma. >> [ x , Fs , nB ] = wavread(chimes.wav); >> % nB : Representa el nmero de bits utilizado para codificar cada muestra >> % Fs : Representa la frecuencia de muestreo. >> tam = length( x ); >> x1 = x( : , 1 ); >> tX = fft ( x1 , tam ); >> mtX = abs (tX); >> mtX = fftshift( mtX ); >> f = linspace( -Fs/2 , Fs/2 , tam ); >> plot( f , mtX )
150

%tomando solamente un canal de x

%ver figura 4.9

100

50

0 -1.5

-1

-0.5

0.5

1.5 x 10
4

Figura 4.9

Mdulo de la TDF de una seal no peridica (audio)


Pgina 31

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Seguidamente se muestra una seal x[n] digitalizada con un periodo de muestreo de 125 mSeg y 8 bits por muestra. Si esta seal se encuentra compuesta por la suma de senos y cosenos, se solicita graficar el mdulo de su transformada discreta de Fourier. Considere N=256.
3

x[n] 2
m 1

sen(

n m) 2

cos(
m 0

(2n 1) m 2

4.2

Grafique el mdulo de la transformada discreta de Fourier, del producto de dos ondas peridicas. La primera onda corresponde a una seal cuadrada de frecuencia igual a 250 Hz, amplitud igual a 2.5 voltios y nivel de continua de 2.5 voltios. Y, la segunda onda corresponde a una onda coseno de frecuencia igual 1 KHz y amplitud igual a 2 voltios. Su respuesta deber ser presentada de Fs/2 a Fs/2. Grafique el mdulo de la transformada discreta de Fourier, del producto de una onda peridica y otra no peridica. La onda peridica debe corresponder a una onda coseno de 10 KHz. Elija usted la frecuencia de muestreo y el valor de N adecuado.

4.3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 32

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 05

TRANSFORMADA DISCRETA DE FOURIER CORTA EN EL TIEMPO. ESPECTROGRAMA

1.

OBJETIVOS: 1.1 Obtener la transformada discreta de Fourier corta en el tiempo (STFT). 1.2 Representar el espectrograma de una seal peridica. 1.3 Representar el espectrograma de una seal no peridica.

2.

FUNDAMENTO TERICO: 2.1 Transformada discreta de Fourier corta en el tiempo La transformada discreta de Fourier corta en el tiempo, es una representacin de tiempo versus frecuencia, donde se visualiza las variaciones de la frecuencia y de la intensidad, a travs de colores, delaseal que se est representando a lo largo del tiempo. A continuacin, la expresin matemtica correspondiente.
j n

STFT x[n]
Donde: x[n] : X(m, ) : w[n] :

X (m, )
n

x[n] w[n m]e

seal discreta en el tiempo Transformada de Fourier corta en el tiempo de x[n] ventana para segmentar la seal x[n]

2.2

Obtencin de la STFT La STFT se obtiene calculando la Transformada Discreta de Fourier a segmentos de la seal por analizar. El tamao del segmento ser delimitado por la ventana w[n], quin definir diferentes niveles de resolucin de la STFT. Cuando se utiliza ventanas estrechas, mejora la resolucin en el tiempo pero empeora la de frecuencia. Y, por lo contrario, si se utiliza ventanas anchas, mejora la resolucin de frecuencia empeorando la de tiempo. A continuacin, en la figura 5.1, se muestra un ejemplo de representacin de diferentes niveles de resolucin de la STFT, donde se aprecia un aumento de la resolucin a nivel de tiempo, pero disminucin a nivel de la frecuencia, y viceversa. El espectrograma se obtiene a partir del cuadrado del mdulo de la STFT.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 33

Laboratorio de Procesamiento Digital de Seales

2011-III

Frecuencia

Frecuencia

Tiempo

Tiempo

Figura 5.1

Comparacin de resoluciones de la STFT

El software Matlab posee un comando de nombre SPECTROGRAM, que permite obtener el espectrograma de una seal a partir de ciertos parmetros a considerar. >> help spectrogram Por ejemplo, a continuacin se representa el espectrograma en 2D y 3D de una seal coseno con 1200 mili segundos de duracin. Para dicha representacin se utiliza primero, una ventana hamming ancha de 200 muestras; luego, una ventana hamming estrecha de 50 muestras. Esto puede ser observado en las figuras 5.2 y 5.3, respectivamente. Para la representacin en 3D, recurrir a la opcin ROTATE 3D de la barra de herramientas de la figura. >> Fs = 1000; >> t = linspace( 0 , 1.5 , 1.5*Fs ); >> x = cos( 2 * pi * t * 180 ); >> NFFT = 200; % nmero de muestras de la TDF. >> WINDOW = hamming(NFFT); %tipo de ventana a utilizar. >> NOVERLAP = 180; % nmero de muestras sobrepuestas. >> spectrogram( x ,WINDOW,NOVERLAP,NFFT,Fs);

>> Fs = 1000; >> t = linspace( 0 , 1.5 , 1.5*Fs ); >> x = cos( 2 * pi * t * 180 ); >> NFFT = 100; % nmero de muestras de la TDF. >> WINDOW = hamming(NFFT); %tipo de ventana a utilizar. >> NOVERLAP = 80; % nmero de muestras sobrepuestas. >> spectrogram( x ,WINDOW,NOVERLAP,NFFT,Fs);

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 34

Laboratorio de Procesamiento Digital de Seales

2011-III

(a) Figura 5.2

(b)

Comparacin de espectrogramas en 2D. a) Utilizando una ventana ancha. b) Utilizando una ventana estrecha.

(a) Figura 5.3

(b)

Comparacin de espectrogramas en 3D. a) Utilizando una ventana ancha. b). Utilizando una ventana estrecha.

3.

EJERCICIOS SOLUCIONADOS: 3.1 Espectrograma de una seal peridica Considerando como seal peridica, una onda cuadrada de 1 segundo de duracin, frecuencia igual a 100 Hz, amplitud igual 2 voltios y nivel DC igual 1.5 voltios. Asimismo, suponiendo un periodo de muestreo de 0.5 mili segundos. >> Ts = 0.5/1000; >> Fs = 1 / Ts; >> t = linspace( 0 , 1 , Fs ); >> x = 1.5 +square( 2* pi * t * 100 ); >> NFFT = 512; >> WINDOW = hamming(NFFT);

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 35

Laboratorio de Procesamiento Digital de Seales

2011-III

>> NOVERLAP = 500; >> spectrogram( x ,WINDOW,NOVERLAP,NFFT,Fs); %Ver figura 5.4

Figura 5.4

Representacin del espectrograma de una seal peridica

3.2

Espectrograma de una seal no peridica Para representar el espectrograma de una seal no peridica, se procede a abrir un archivo de extensin WAV, tal como se realiz en la experiencia de laboratorio 01. >> [ V2 , Fs ] = wavread( ejemplo.wav ); %el alumno debe de copiar %cualquier archivo de %extensin WAV a la carpeta %de trabajo del Matlab. %en caso de ser una seal %tipo estreo, se toma solo un %canal %Ver figura 5.5

>> size( V2 ) >> x = V2( : , 1 );

>> figure( 1 ), plot( V2 ) >> grid >> NFFT = 512; >> WINDOW = hamming(NFFT); >> NOVERLAP = 500;

>> figure(2) >> spectrogram( x ,WINDOW,NOVERLAP,NFFT,Fs); %Ver figura 5.6

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 36

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 5.5

Representacin temporal de una seal no peridica

Figura 5.6 4.

Representacin del espectrograma en 3D de una seal no peridica

EJERCICIOS POR SOLUCIONAR: 4.1 Realizar una modulacin por amplitud de doble banda lateral, y luego representar su respectivo espectrograma. Considere como seal modulante la suma de tres seales sinusoidales de amplitudes 1, 4 y 8 voltios, as como con frecuencias iguales a 100, 400 y 800 Hz, respectivamente. Asimismo, considere una seal de portadora igual a 10 KHz y amplitud igual a 1 voltio. Deber de elegir el tamao y tipo de ventana para el clculo del espectrograma, as como tambin la cantidad de muestras sobrepuestas y la frecuencia de muestreo correspondiente. El diagrama de bloques mostrado a continuacin ayuda a interpretar el proceso de la modulacin por amplitud con doble banda lateral.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 37

Laboratorio de Procesamiento Digital de Seales

2011-III

Seal Modulante

X
10 Seal Portadora

Seal AM

4.2

Representar el espectrograma de una seal no peridica cuya frecuencia disminuye linealmente, mientras transcurre el tiempo. Deber de elegir el tipo y tamao de la ventana a utilizar, as como tambin el nmero de muestras que se sobrepondrn al momento de calcular la STFT. Elija una seal con 1.2 segundos de duracin y con una amplitud de 1.8 voltios. Grabar y digitalizar su propia voz con las siguientes palabras: casa y caza. Luego, con ayuda del espectrograma, seale y comente si existe alguna diferencia entre ambas pronunciaciones. Deber de elegir adecuadamente, el tipo y tamao de ventana, la cantidad de muestras y la amplitud de la seal digital. De preferencia, realice ambas digitalizaciones con un nico tiempo de duracin y frecuencia de muestreo.

4.3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 38

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 06

TRANSFORMADA Z. DIAGRAMA DE POLOS Y CEROS. ESTRUCTURA DE FILTROS DIGITALES.

1.

OBJETIVOS: 1.1 Obtener la Transformada Z con ayuda del toolbox Symbolic del Matlab. 1.2 Representar el diagrama de polos y ceros de filtros digitales. 1.3 Representar estructuras de filtros digitales con la Transformada Z.

2.

FUNDAMENTO TERICO: 2.1 Transformada Z La Transformada Z es una generalizacin de la Transformada de Fourier y es relacionada como la contraparte de la Transformada de Laplace. La expresin matemtica que define a dicha transformada es mostrada a continuacin, donde se define como Transformada Z Bilateral. En el caso de considerarse una Transformada Z Unilateral, por ejemplo para el caso de secuencias o seales causales, la sumatoria se inicia en n=0.

X ( z)
m

x[n] z

Seguidamente se muestra algunas funciones discretas y su respectiva Transformada Z. Sea:

x[n]
Entonces:

X ( z)

[ n]

1 1 1 z

[ n]

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 39

Laboratorio de Procesamiento Digital de Seales

2011-III

[ n m]

[ n m]

m 1

1 z

a n [ n]

1 1 az z
m

a
2.2

n m

[ n m]

1 az

Diagrama de Polos y Ceros Un sistema discreto lineal con coeficientes constantes, con entrada x[n] y salida y[n], es representado a travs de la siguiente ecuacin en diferencia:
N M

ak y[n k ]
k 0 k 0

bk x[n k ]
.. (6.1)

Entonces, calculando su respectiva Transformada Z, la expresin anterior se transforma a:


N M

ak z Y (z)
k 0 k 0

-k

bk z -k X (z)

De donde se obtiene la funcin de transferencia, tal como se indica a continuacin.

H ( z)

Y ( z) X ( z)

bo b1 z 1 b2 z 2 ... bM z M ao a1 z 1 a2 z 2 ... aN z N

Luego, se utiliza la representacin de diagrama de polos y ceros, en el plano Z (ver figura 6.1), para representar los polos y ceros de la funcin de transferencia anteriormente mostrada. Si los polos permanecen en el interior del crculo unitario (sea a la izquierda o derecha del eje imaginario), se considera un caso estable. Por el contrario, si por lo menos uno de los polos se sita en el exterior del crculo unitario, el sistema es inestable.
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 40

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 6.1

Crculo unitario para la representacin de polos y ceros

2.3

Estructura de Filtros Digitales Para representar la estructura o diagrama de bloques de un filtro digital, se hace uso de tres elementos principales: retardo o delay, sumatoria y amplificadores o ganancias. De la ecuacin en diferencia general (ecuacin 6.1), es posible distinguir tres casos fundamentales de modelos: Modelo MA (medias mviles): Modelo AR (auto-regresivo): Modelo ARMA : cuando N = 0 y M 0 cuando N 0 y M = 0 cuando N 0 y M 0

Para el primer caso, modelo MA, se obtiene su correspondiente Transformada Z y se procede a graficar su estructura o diagrama de bloques utilizando tres elementos principales (ver figura 6.2).

H( z )

Y(z) X(z)

bo

b1 z

b2 z 1

... bM z

X (z)

Z-1

Z-1

...

Z-1

b0

b1

b2

bM

Figura 6.2

...

Y (z)

Estructura de filtros digitales correspondiente al modelo MA.


Pgina 41

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

3.

EJERCICIOS SOLUCIONADOS: 3.1 Transformada Z en forma literal Con ayuda del toolbox Symbolic del Matlab, es posible obtener la Transformada Z directa o inversa en forma literal. >> help ztrans >> help iztrans >> syms n z >> f1 = 0.2^(n-2); >> F1 = ztrans( f1 ) >> pretty( F1 ) 25 z ------z - 1/5 >> F2 = 10 / ( 1 0.6 / z - 0.07 / z / z ) >> f2 = iztrans( F2 ) %se obtiene la Transformada Z inversa >>pretty( f2 ) n n 5 (-1/10) 35 (7/10) ---------- + ---------4 4 3.2 Diagrama de polos y ceros. Dada una funcin de transferencia en trminos de Z, es posible graficar su respectivo diagrama de polos y ceros con la finalidad de comprobar la estabilidad o inestabilidad en el sistema discreto.

%se definen las variables literales: tiempo y Z. %se obtiene la Transformada Z directa

H( z )

Y(z) X(z)

2z 1 0 .7 z 1

0 .1 z

>> Nu = [ 0 2 ]; >> De = [ 1 0.7 0.1 ]; >> zplane( Nu , De ) >> roots( De) ans = -0.5000 -0.2000 %obteniendo las races del denominador

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 42

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 6.3

Diagrama de polos y ceros de la funcin de transferencia H(z) del ejemplo anterior.

>> [ r , p , k ] = residuez( Nu , De ) r= -6.6667 6.6667 p= -0.5000 -0.2000 k= [] >> dstep( Nu , De , 20 )

% Obtener la expansin en % fracciones parciales

% para visualizar la respuesta a un %escaln unitario, para los % primeros 20 segundos

Figura 6.4

Representacin temporal de la respuesta a una entrada escaln unitario.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 43

Laboratorio de Procesamiento Digital de Seales

2011-III

3.3

Estructura de filtros digitales. El segundo modelo de representacin de una ecuacin en diferencia con coeficientes constantes, corresponde al modelo auto-regresivo (AR). A continuacin se presenta el diagrama de bloques correspondiente y su anlisis a travs del Matlab (ver figura 6.5). Sea el siguiente ejemplo de funcin de transferencia, se solicita analizar el diagrama de bloques y posteriormente la respuesta ante una entrada escaln unitario.

H ( z)

Y ( z) X ( z)
4

1 0.2 z

4 0.71z

0.072z

X (z)

Z-1

Y (z)

-0.2

0.71

Z-1

Z-1 0.072

Figura 6.5

Estructura de filtros digitales correspondiente al modelo AR.

>> Nu = 1; >> De = [ 1 0.2 -0.71 -0.072 ]; >> zplane( Nu , De )

%ver figura 6.6

Para visualizar la respuesta a un escaln unitario, se debe de restringir el nmero de muestras de la seal de salida, debido a que este tipo de modelo corresponde a un IIR (respuesta infinita al impulso). >> x = [ 1zeros( 1 , 40 ) ]; >> y = filter(Nu , De , x ); >> stem( 0:length(y)-1 , y )

%ver figura 6.7

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 44

Laboratorio de Procesamiento Digital de Seales

2011-III

>> xlabel(' tiempo ' ) >> ylabel(' Amplitud ')

Figura 6.6

Diagrama de polos y ceros de la funcin de transferencia H(z) del ejemplo anterior.

Figura 6.7

Representacin temporal de la respuesta a una entrada escaln unitario.

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Obtenga la Transformada Z Inversa de H(z) haciendo uso de la expansin en fracciones parciales y con ayuda del Toolbox Symbolic del Matlab. Posteriormente, grafique h[n] para el intervalo de tiempo: 0 n 12.

H ( z)

Y ( z) X ( z)

1 0.4 z

0.72z

4z 1 7z 3 0.142z 3 0.0839z

0.0063z
Pgina 45

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

4.2

Para la pregunta anterior, considere que la entrada X(z) es igual a: 1 + 2z 3. Por lo tanto, se solicita determinar la salida Y(z) haciendo uso de la expansin en fracciones parciales. Luego, con ayuda del Toolbox Symbolic del Matlab, obtenga su respectiva Transformada Z Inversa. Finalmente, represente la seal de salida y[n] en el dominio del tiempo discreto para el intervalo de 0 n 25.

4.3

Para la siguiente funcin de transferencia (modelo ARMA), grafique su correspondiente diagrama de bloques. Asimismo, deber mostrar el diagrama de polos y ceros, as como la respuesta ante una entrada tipo escaln de amplitud igual a 4.

H ( z)

Y ( z) X ( z)

1 0.45z

1 4z 2 7z 4 0.5775z 2 0.2206z

0.0159z

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 46

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 07

FILTROS DIGITALES NO RECURSIVOS: PASA-BAJO, PASA-ALTO, PASA-BANDA Y RECHAZA BANDA.

1.

OBJETIVOS: 1.1 Disear filtros digitales no recursivos tipo Pasa-Bajo, Pasa-Alto, Pasa-Banda y Rechaza-Banda. 1.2 Realizar operaciones de filtrado digital.

2.

FUNDAMENTO TERICO: 2.1 Filtros digitales no recursivos (FIR) Son sistemas discretos que se caracterizan por ser estables. Es decir, todos los polos de su funcin de transferencia se encuentran en el interior del crculo unitario. Asimismo, poseen una fase lineal y necesitan un orden elevado para aproximarse al tipo de filtro ideal. Seguidamente se muestra un ejemplo de funcin de transferencia de un filtro digital no recursivo, su respuesta impulsional y su correspondiente diagrama de bloques.

H ( z)

Y ( z) X ( z) a [ n]

a bz

cz

bz

az

h[n]

b [n 1]

c [n 2]

b [n 3]

a [n 4]

X (z)

Z-1

Z-1

Z-1

Z-1

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Y (z)

Pgina 47

Laboratorio de Procesamiento Digital de Seales

2011-III

2.2

Filtro Pasa-Bajo, Pasa-Alto, Pasa-Banda y Recha-Banda Entre los filtros digitales no recursivos ms comunes encontramos: Filtro Pasa-bajo: posee una frecuencia de corte y deja pasar frecuencias menores a esta. Filtro Pasa-alto: posee una frecuencia de corte y deja pasar frecuencias mayores a esta. Filtro Pasa-banda: posee dos frecuencias de corte y deja pasar frecuencias comprendidas entre estas dos frecuencias. Filtro Rechaza-banda: posee dos frecuencias de corte y rechaza frecuencias comprendidas entre estas dos frecuencias. todas las todas las todas las todas las

2.3

Diseo de Filtros por Windowing Consiste en la eleccin de una ventana (hamming, hanning, blackman, rectangular, triangular, kiser, etc.) para multiplicarla con la funcin SINC, correspondiente a un filtro ideal. Ventana Hamming

w[n] 0.53836 0.46164* cos 0 n M 1 M : tamao de la ven tan a

2 n M 1

Funcin SINC o filtro ideal en el dominio del tiempo discreto

hi [n] sin c(n)

sen( n) n

Por lo tanto, para disear el filtro digital no recursivo, se procede a multiplicar la ventana y el filtro ideal, en el dominio del tiempo discreto.

h[n]
2.4

hi [n] * sin c(n)

Operacin de filtrado digital La operacin de filtrado digital se realiza de muchas maneras. Una de ellas concierne a la operacin de convolucin entre la seal de entrada y la respuesta impulsional del filtro digital no recursivo, tal como lo muestra la figura 7.1.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 48

Laboratorio de Procesamiento Digital de Seales

2011-III

x [n]

h [n]

y [n]

Figura 7.1

Representacin de la entrada y salida de un filtro digital.

y[n]
3. EJERCICIOS SOLUCIONADOS: 3.1

x[n]

h[n] h[n]

x[n]

Filtro digital no recursivo pasa-bajo. Para disear un filtro digital no recursivo pasa-bajo, se inicia sealando el orden del filtro a requerir, luego la frecuencia de corte, la frecuencia de muestreo y el tipo de ventana a utilizar. A continuacin se muestra un ejemplo de diseo para un filtro Fir Pasa-Bajo con Fc=2 KHz, Fs = 10 KHz y una ventana haming. >> M = 66; >> Fc = 2000; >> Fs = 10000; >> fcN = Fc / Fs; >> wc = 2*pi*fcN; >> for n=0:M/2; if n==0 fi(n+1) = wc/pi; else fi(n+1) = (sin(wc*n))/(pi*n); end end >> hi = [ fliplr( fi(2:M/2+1)) fi ]; >> w = hamming( M+1 ); >> h = (w').*hi; >> stem( 0:length(h)-1 , h ) >> xlabel('Tiempo discreto') >> grid %orden del filtro FIR %frecuencia de corte % frecuencia de muestreo % frecuencia normalizada

% filtro ideal en el tiempo discreto % ventana Hamming % filtro real tipo digital % filtro real en el dominio del tiempo % ver Figura 7.2

>> freqz(h , 1 , 1024 , whole , Fs )

% filtro FIR en el dominio de la % frecuencia. Desde 0 a Fs. % ver Figura 7.3

>> zplane( h , 1 )

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 49

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 7.2

Representacin del filtro digital FIR en el dominio del tiempo

Figura 7.3 3.2

Representacin del filtro digital FIR en el dominio de la frecuencia

Filtro digital no recursivo pasa-alto. Para disear un filtro digital no recursivo pasa-alto, se inicia sealando el orden del filtro a requerir, luego la frecuencia de corte, la frecuencia de muestreo y el tipo de ventana a utilizar. Se debe partir del diseo de un filtro pasa-bajo, luego se transforma el filtro ideal. A continuacin se muestra un ejemplo de diseo para un filtro Fir Pasa-Alto con Fc=3 KHz, Fs = 10 KHz y utilizando una ventana triangular. >> M = 86; >> Fc = 3000; >> Fs = 10000; >> fcN = Fc / Fs; >> wc = 2*pi*fcN; %orden del filtro FIR %frecuencia de corte % frecuencia de muestreo % frecuencia normalizada

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 50

Laboratorio de Procesamiento Digital de Seales

2011-III

>> for n=0:M/2; if n==0 fi(n+1) = 1 - wc/pi; else fi(n+1) = -(sin(wc*n))/(pi*n); end end >> hi = [ fliplr( fi(2:M/2+1)) fi ]; >> w = triang( M+1 ); >> h = (w').*hi; >> stem( 0:length(h)-1 , h ) >> xlabel('Tiempo discreto') >> grid

% filtro ideal en el tiempo discreto % ventana Triangular % filtro real tipo digital % filtro real en el dominio del tiempo % ver Figura 7.4

>> freqz(h , 1 , 1024 , whole , Fs )

% filtro FIR en el dominio de la % frecuencia. Desde 0 a Fs. % ver Figura 7.5

>>zplane( h , 1 )

Figura 7.4 3.3

Representacin del filtro digital FIR en el dominio del tiempo

Filtro digital no recursivo pasa-banda. Para disear un filtro digital no recursivo pasa-banda, se inicia sealando el orden del filtro a requerir, luego las frecuencias de corte, la frecuencia de muestreo y el tipo de ventana a utilizar. Se debe partir del diseo de dos filtros pasa-bajo, transformando luego el filtro ideal. A continuacin se muestra un ejemplo de diseo para un filtro FIR pasa-banda con Fc1=2.1 KHz, Fc2=3.5 KHz, Fs = 10 KHz y utilizando una ventana hanning. >> M = 66; >> Fc1 = 2100; >> Fc2 = 3500; >> Fs = 10000; >> fcN1 = Fc1 / Fs; >> fcN2 = Fc2 / Fs; %orden del filtro FIR %frecuencia de corte 1 %frecuencia de corte 2 % frecuencia de muestreo % frecuencia normalizada 1 % frecuencia normalizada 2
Pgina 51

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 7.5

Representacin del filtro digital FIR en el dominio de la frecuencia

>> wc1 = 2*pi*fcN1; >> wc2 = 2*pi*fcN2; >> for n=0:M/2; if n==0 fi(n+1) = 1 - (wc2-wc1)/pi; else fi(n+1) = (sin(wc1*n)-sin(wc2*n))/(pi*n); end end >> hi = [ fliplr( fi(2:M/2+1)) fi ]; % filtro ideal en el tiempo discreto >> w = hanning( M+1 ); % ventana Triangular >> h = (w').*hi; % filtro real tipo digital >> stem( 0:length(h)-1 , h ) % filtro real en el dominio del tiempo >> xlabel('Tiempo discreto') % ver Figura 7.6 >> grid >> freqz(h , 1 , 1024 , whole , Fs ) % filtro FIR en el dominio de la % frecuencia % ver Figura 7.7

>> zplane( h , 1 )

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 52

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 7.6

Representacin del filtro digital FIR en el dominio del tiempo

Figura 7.7

Representacin del filtro digital FIR en el dominio de la frecuencia

Del diagrama de polos y ceros del filtro digital es posible graficar la magnitud y fase respecto a la frecuencia. Para ello, se necesita subdividir el plano Z en un nmero de partes igual a una potencia de 2. Luego, dividir el espectro de frecuencia, desde 0 hasta Fs, por cada una de las partes subdividas sobre la circunferencia unitaria. Una vez realizada la subdivisin, se procede a tomar distancias, para el caso del mdulo, o ngulos, para el caso de la fase, de cada punto sobre el crculo unitario a cada cero. El polo no se toma en cuenta para el mdulo debido a que la distancia es igual a 1 por tratarse de una circunferencia de radio unitario.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 53

Laboratorio de Procesamiento Digital de Seales

2011-III

A continuacin se muestra un ejemplo del producto de las distancias para el caso de un filtro FIR de orden 2. >> Fc = 220; >> Fs = 1000; >> orden = 2; >> h = fir1( orden , Fc / (Fs/2), triang(orden + 1)); >> zplane(h,1)

H ( z ) 0.2077 0.5846z

1 1

0.2077z z 2)

H ( z ) 0.2077(1 2.8146z

Mduloi

20 * log10 H o

dist cero, Pi dist polo, Pi polo, Pi

Fasei

cero, Pi

i : punto de subdivisi sobre el crculo unitario n


Donde: Ho: dist( cero , Pi ): dist( polo , Pi ): (cero, Pi ): (polo, Pi ): Factorizacin de la funcin de transferencia. distancia de cada cero a un punto Pi del plano Z. distancia de cada polo a un punto Pi del plano Z. ngulo de cada cero a un punto Pi del plano Z. ngulo de cada polo a un punto Pi del plano Z.

Para el ejemplo anterior, los ceros son: Cero1 = -2.3973 Cero2 = -0.4171 Y los polos se encuentran en el origen, por lo tanto su distancia a cada punto Pi sobre el crculo unitario del plano Z, siempre ser 1. Entonces: Ho = 0.2077

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 54

Laboratorio de Procesamiento Digital de Seales

2011-III

Mduloi

20 * log10 H o

dist cero, Pi dist polo, Pi polo, Pi

Fasei

cero, Pi

i : punto de subdivisi sobre el crculo unitario n Para : F 0 Hz

d 0 1 dis([ 2.3973,0], [0,0]) d 0 2 dis([ 0.4171,0], [0,0]) Para : F 125 Hz d1251 dis([ 2.3973,0], [0.7071,0.7071]) d125 2 dis([ 0.4171,0], [0.7071,0.7071]) Para : F 250 Hz d 2501 dis([ 2.3973,0], [0,1]) d 250 2 dis([ 0.4171,0], [0,1]) Para : F 375 Hz d 3751 dis([ 2.3973,0], [ 0.7071,0.7071]) d 375 2 dis([ 0.4171,0], [ 0.7071,0.7071]) Para : F 500 Hz d 5001 dis([ 2.3973,0], [1,0]) d 500 2 dis([ 0.4171,0], [1,0]) Mdulo0 Hz Mdulo125 Hz Mdulo250 Hz Mdulo375 Hz Mdulo500 Hz 20 * log10 0.2077* d 0 1* d 0 2 20 * log10 0.2077* d1251* d125 2 20 * log10 0.2077* d 2501* d 250 2 20 * log10 0.2077* d 3751* d 375 2 20 * log10 0.2077* d 5001* d 500 2
Pgina 55

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

Lo mismo se realiza para los otros puntos de frecuencia (Pi) correspondientes a: 625 Hz, 750 Hz y 875 Hz, aunque no es necesario calcularlos debido a la simetra cuando se grafica el mdulo. De manera similar se procede a obtener los ngulos de cada cero y polo hacia cada uno de los 8 puntos ubicados sobre la circunferencia unitaria, con la finalidad de obtener el grfico de fase.

Figura 7.8 3.4

Representacin del filtro digital FIR en plano Z

Operacin de filtrado digital. El filtrado de una seal digital con cualquiera de los filtros anteriormente indicados, es posible obtenerlos de muchas maneras. A continuacin se sealan dos formas simples y muy utilizadas. En primer lugar, el filtrado digital es posible obtenerlo a travs de una convolucin entre la seal de entrada discreta en el tiempo y el filtro digital expresado, tambin, en el dominio del tiempo. Dicha convolucin se obtiene utilizando el comando CONV. Seguidamente un ejemplo. Sea una seal peridica compuesta por la suma de tres ondas: coseno de 250 Hz, seno de 350 Hz y coseno de 500 Hz.

>> Fs = 4000; >> n = linspace( 0 , 1 , Fs ); >> x = 2*cos( 2*pi*n*250 ) + 5*sin( 2*pi*n*350 ) - cos( 2*pi*n*500 ); >> TX = fft( x , 4096 ); >> F = linspace( 0 , Fs , 4096 ); >> subplot( 2 , 2, 1) , plot( n, x ) %Seal de entrada en el tiempo >> subplot( 2 , 2, 2) , plot( F, abs(TX) ) %TDF de la seal de entrada

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 56

Laboratorio de Procesamiento Digital de Seales

2011-III

>> orden = 80; >> w = hamming( orden+1 ); >> Fc = [ 300 405 ] / (Fs/2); >> h = fir1(orden , Fc , w ); >> y = conv( h , x ); >> nn = linspace( 0 , 1 , length(y) ); >> TY = abs( fft( y , 4096 ) ); >> subplot( 2 , 2, 3) , plot( nn, y ) >> subplot( 2 , 2, 4) , plot( F, TY )

%Ventana hamming. %Frecuencia de corte normalizada %Diseo del filtro utilizando FIR1 %Filtrado digital o convolucin solo %para secuencias finitas. %TDF de la seal de salida. %Seal de salida en el tiempo %TDF de la seal de salida %Ver figura 7.9

Figura 7.9 a) Zoom de la seal de entrada en el tiempo. b) Representacin en frecuencia de la seal de entrada. c) Zoom de la seal de salida en el tiempo. d) Representacin en la frecuencia de la seal de salida.

En segundo lugar, el filtrado digital, tambin es posible obtenerlo a travs del comando FILTER donde participan tanto la seal de entrada como el filtro digital, en el dominio del tiempo discreto. A continuacin, para el ejemplo anteriormente planteado, se realiza la siguiente modificacin. >> Nu = h ; >> De = 1; >> y = filter( Nu , De , x); Donde Nu representa a los coeficientes del polinomio del numerador de la funcin de transferencia del filtro digital diseado. Asimismo, De corresponde
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 57

Laboratorio de Procesamiento Digital de Seales

2011-III

al denominador que en este caso es igual a 1 por tratarse de un filtro FIR, cuya funcin de transferencia es del tipo:

H ( z)

Y ( z) X ( z)

bo b1 z

b2 z

b3 z

. . . bM z

4.

EJERCICIOS POR SOLUCIONAR: 4.1 A partir del siguiente bosquejo, disee el filtro digital correspondiente haciendo uso de la ventana de Blackman. Utilizar Ws = 2000 rad/seg. Luego, grafique el filtro en el dominio del tiempo discreto, el diagrama de polos y ceros, y la representacin en frecuencia desde Fs/2 a Fs/2.

- 3 dB

-41 dB dB

400

440

620 rad / seg

680

1000

4.2

Para el diseo de un filtro digital FIR Pasa-Banda se utiliz la ventana de hamming, y una frecuencia de muestreo de 4 KHz. Si la ganancia obtenida en una de sus frecuencias de corte de 500 Hz, fue de -0.843 dB, se solicita graficar el diagrama de polos y ceros de dicho filtros, as como su respuesta en frecuencia tanto de mdulo como de fase (para el intervalo de Fs/2 a Fs/2). H(z) = - 0.0462 + 0.9076 z-2 - 0.0462 z-4

4.3

Disear un filtro FIR Pasa-Banda de orden 100, muestreado a 10KHz y con frecuencias de corte igual 2KHz y 3.2 KHz. Utilice la ventana de hamming. Luego, se solicita construir una rutina de programacin en el Matlab para graficar el espectro de frecuencia de mdulo y fase utilizando el producto de distancias o suma de ngulos a partir del diagrama de polos y ceros. Procure que la atenuacin en la banda pasante se site entre 0 y 3 dB y utilice por lo menos 512 muestras.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 58

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 08

FILTROS DIGITALES RECURSIVOS. TRANSFORMACIN DE FRECUENCIA.

1.

OBJETIVOS: 1.1 Disear filtros digitales recursivos tipo Pasa-Bajo, Pasa-Alto, Pasa-Banda y Rechaza-Banda. 1.2 Realizar operaciones de filtrado digital.

2.

FUNDAMENTO TERICO: 2.1 Filtros digitales recursivos (IIR) Son sistemas discretos que se caracterizan por presentar polos y ceros dispersos en todo el plano Z. Asimismo, poseen una fase no lineal y no necesitan de un orden elevado para aproximarse al tipo de filtro ideal. En la figura 8.1 se muestra un ejemplo de una funcin de transferencia de un filtro digital recursivo y su correspondiente estructura discreta.

H ( z)

Y ( z) X ( z)

a bz 1 cz 2 dz 3 , 1 ez 1 fz 2 gz 3
w[n] a

a, b, c, d , e, f , g
+

x [n] +

+
+ +e + Z
-1

+
b + + c + + d

y [n]

+
+

+ Z-1 +f

+
+

+ Z-1 -g

Figura 8.1. Estructura discreta de un filtro IIR.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 59

Laboratorio de Procesamiento Digital de Seales

2011-III

2.2

Diseo por aproximacin de la funcin Butterworth Se parte del diseo de filtros pasa-bajos analgicos, para luego transformarlo al dominio discreto. Seguidamente, la figura 8.2 muestra la repuesta en mdulo de un filtro pasa-bajo IIR y sus respectivas bandas de frecuencia, donde:
1: 2: fp: fs: fn:

rizado u ondulacin de la banda pasante. rizado u ondulacin del para banda (banda de rechazo). frecuencia lmite de la banda pasante. frecuencia lmite del para banda (banda de rechazo). frecuencia normalizada ( fs / fp ).

Para realizar el diseo se normaliza la frecuencia de acuerdo a las especificaciones, se determina el orden del prototipo de filtro pasa-bajo, se obtiene la funcin de transferencia normalizada, y se finaliza desnormalizando a travs de las transformaciones de frecuencia. A continuacin se muestran las expresiones matemticas necesarias para la realizacin del diseo:
2

10 0.1

1
1/ 2

n
H( f )

10 0.1 2 1 log 10 0.1 1 1 log f n

1 11

Banda de transicin Banda pasante Para banda

f fp fs

Figura 8.2. Respuesta en mdulo de un filtro IIR pasa-bajo.

2.3

Transformaciones de frecuencia y transformacin bilineal El diseo de filtros IIR parte de un prototipo pasa-bajo analgico. Por lo tanto, el orden del filtro se duplicar cuando se procede al diseo de filtros pasabanda o elimina-banda.
Pgina 60

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

Tambin es posible utilizar los comandos del Matlab: LP2LP, LP2BP, LP2BS y LP2HP, para lograr la transformacin de frecuencia. Posteriormente, a travs de la transformacin bilineal (comando BILINEAR), se procede a la digitalizacin del filtro utilizando la siguiente expresin:

2 z 1 Ts z 1

Por ejemplo, sea el filtro pasa-bajo analgico H(s), el cual se digitaliza a travs de la Transformacin Bilineal utilizando un periodo de muestreo igual a 2 segundos.

H (s)

2 s 5

H(z)

2 2 z 1 Ts z 1 5

1 1 z 3 2 1 1 z 3

1 3

>> Nc = [ 2 ]; >> Dc = [ 1 5 ]; >> Ts = 2; >> [ Nd , Dd ] = bilinear( Nc , Dc , 1/Ts ) Nd = 0.3333 0.3333 Dd = 1.0000 2.4

0.6667

Filtrado digital y respuesta impulsional Para determinar la respuesta impulsional, h[n], se procede a colocar como entrada al filtro digital, IIR, la funcin [n]. Tambin es posible obtenerlo con ayuda del comando DIMPULSE. Para realizar la operacin de filtrado, se recurre a la representacin en ecuaciones de diferencia, a partir de la estructura del filtro mostrado en la figura 8.1. Donde w[n] denota a una variable auxiliar en el tiempo n, y w[n-1], w[n-2], w[n-3] denotan el tiempo pasado de dicha variable auxiliar w[n]. Para el instante n=0, w[n-1] = w[n-2] = w[n-3] = 0. Asimismo, tambin es posible obtener la operacin de filtrado utilizando el comando FILTER.

w[n] y[n]

x[n] e * w[n 1]

f * w[n 2] g * w[n 3]

a * w[n] b * w[n 1] c * w[n 2] d * w[n 3]

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 61

Laboratorio de Procesamiento Digital de Seales

2011-III

3.

EJERCICIOS SOLUCIONADOS: 3.1 Filtro digital recursivo pasa-bajo (Butterworth) Se desea disear un filtro pasa-bajo digital a partir de la funcin analgica Butterworth. Para ello, se parte de un filtro analgico con las siguientes caractersticas: atenuacin de pasa-banda menor a 1 dB a una frecuencia de 0.70 Hz, atenuacin de para-banda mayor a 30 dB para una frecuencia de 1.45 Hz, y un periodo de muestro igual a 10 mili segundos. Calculamos n y >> Fp = 0.70; >> Fs = 1.45; >> d1 = -1; >> d2 = -30;
2

. Luego, normalizamos la frecuencia.

% atenuacin en la banda pasante (en dB) % atenuacin en la banda de rechazo (en dB)
2

>> e2 = power( 10 , - 0.1*d1 ) - 1 ; % variable >> Fn = Fs / Fp; >> n = 0.5 * log10( ( 10^(-0.1*d2) - 1 )/( 10^(-0.1*d1) - 1 ) ) / log10( Fn ) >> n = ceil( n ); >> k = 1:n; >> u = -sin( (2*k - 1 ) * pi / 2 / n ); >> w = cos( (2*k - 1 ) * pi / 2 / n ); >> polos = u + w*j; >> num = 1; >> den = real( poly( polos ) ); >> figure(1) >> pzmap( num , den) % diagrama de polos y ceros >> freqs( num , den ) % respuesta en frecuencia del filtro % normalizado analgico Tambin es posible obtener los polos del filtro normalizado HN(s), a partir de la funcin BUTTAP y conociendo el orden del filtro. >> [ z , p , k ] = buttap( n ); >> num1 = poly( z ); >> den1 = poly( p ); >> figure(2) >> pzmap( num1 , den1 ) Se obtiene:

% diagrama de polos y ceros

H N ( s)

3.86s

7.46s

1 9.14s3

7.46s2

3.86s

Se desnormaliza el filtro normalizado HN(s), y se obtiene HD(s). Finalmente se digitaliza dicho filtro.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 62

Laboratorio de Procesamiento Digital de Seales

2011-III

H D ( s)

H N ( s w p * v3 )

H (v3 )

1 1
2

2*n 3

1 2

Donde: HD(s): representa al filtro analgico desnormalizado. >> e2 = 0.2589; >> n = 6; >> v3 = solve(' 1/( 1 + 0.2589 * power( v3 , 2*6 )) = 0.5 '); >> v3 = 1.1191947453492187293069439198769 >> wp = 2*pi*Fp; >> wo = wp * v3; >> [ num2 , den2 ] = lp2lp ( num , den , wo); >> pzmap( num2 , den2 ) >> freqs( num2 , den2 ) % diagrama de polos y ceros del filtro % pasa-bajo analgico desnormalizado % respuesta en frecuencia

El filtro analgico pasa-bajo desnormalizado H(s) resultante, ser:

H D ( s)

19.02s

180.86s

14226.609962 1090.37s3 4382.40s2

11166.62s

14226.61

>> Ts = 0.01; >> Fs = 1 / Ts; >> [ numD , denD ] = bilinear ( num2 , den2 , Fs ); >> zplane( numD , denD ) >> puntos = 1024; >> freqz( numD , denD , puntos , 'whole' , Fs )

% digitalizando

% ver la figura 8.3

El filtro digital pasa-bajo H(z) resultante, ser:

H ( z)

10

0.20 1.21z-1 3.03z 2 4.04z-3 3.03z 4 1.21z-5 0.20z -1 -2 -3 -4 -5 -6 1 - 5.81z 14.07z - 18.17z 13.20z - 5.12z 0.83z

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 63

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 8.3. Respuesta en mdulo del filtro pasa-bajo digital IIR 3.2 Filtro digital recursivo pasa-alto (Chebyshev I y II) A continuacin se muestran las caractersticas de frecuencia y atenuacin para el diseo de un filtro digital IIR pasa-alto, partiendo de la aproximacin de la funcin analgica Chebyshev tipo I: Rp = 3 dB : Rs = 40 dB : Wp = 1200 rad/seg. : Ws = 700 rad/seg. : >> Rp = 3; >> Rs = 40; >> Fs = 10000; >> Ws = 2 * pi * Fs ; >> wp = 1200*pi / ( Ws / 2 ); >> ws = 700*pi / ( Ws / 2 ); atenuacin en la banda pasante. atenuacin en la banda de rechazo. frecuencia lmite en la banda pasante. frecuencia lmite en la banda de rechazo.

%frecuencia digital normalizada %frecuencia digital normalizada

>> [ orden, wc ] = cheb1ord( wp , ws , Rp , Rs ); >> [ nu2 , de2 ]= cheby1( orden , Rp , wc , 'high' ); >> puntos = 1024; >> freqz( nu2 , de2 , puntos , 'whole' , Fs ) % ver la figura 8.4

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 64

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 8.4

Respuesta en frecuencia (mdulo y fase) del filtro digital pasa alto a partir de la funcin Chebyshev I

Asimismo, se muestran las caractersticas de frecuencia y atenuacin para el diseo de un filtro digital IIR pasa-banda, partiendo de la aproximacin de la funcin analgica Chebyshev tipo II: Rp = 3 dB Rs = 38 dB Wp = [ 3400 Ws = [ 1800 : : 4200 ] rad/seg.: 5600 ] rad/seg.: atenuacin en la banda pasante. atenuacin en la banda de rechazo. frecuencias lmites en banda pasante. frecuencias lmites en banda- rechazo.

>> Rp = 3; >> Rs = 38; >> Fs = 10000; >> Ws = 2 * pi * Fs; >> wp = [ 1400*pi 4200*pi ] / ( Ws /2 ); %frecuencia digital normalizada >> ws = [ 800*pi 4850*pi ] / ( Ws /2 ); %frecuencia digital normalizada >> [ orden, wc ] = cheb2ord( wp , ws , Rp , Rs ); >> [ nu2 , de2 ]= cheby2( orden , Rs , wc ); >> puntos = 1024; >> freqz( nu2 , de2 , puntos , 'whole' , Fs ) %ver figura 8.5 3.3 Operacin de filtrado digital Se disea un filtro pasa-bajo digital Butterworth de orden 4 y frecuencia de corte de 200 Hz. A continuacin se procede a filtrar una seal cuadrada con frecuencia principal igual a 100 Hz, y muestreada a 2 KHz. >> Fs = 2000; >> Fc = 200; >> orden = 4; >> puntos = 1000; >> [ Nu , De ] = butter( orden , Fc / (Fs/2) )
MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP Pgina 65

Laboratorio de Procesamiento Digital de Seales

2011-III

>> freqz( Nu , De , puntos , whole , Fs ) >> n = 0: Fs - 1; >> x = square( 2* pi * 100 * n / Fs ); >> subplot( 2 , 1 , 1 ), plot( n , x ) >> axis( [ 200 360 -1.5 1.5 ] ) >> y = filter( Nu , De , x ); >> subplot( 2 , 1 , 2 ), plot( y ) >> axis( [ 200 360 -1.5 1.5 ] )

% filtrado de la seal cuadrada % ver la Figura 8.6

Figura 8.5

Respuesta en frecuencia (mdulo y fase) del filtro digital pasa banda a partir de la funcin Chebyshev II

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Disear un filtro analgico pasa alto Butterworth con las siguientes especificaciones: atenuacin de pasa-banda hasta 1.8 dB en la frecuencia de 20.8 Hz y atenuacin de para-banda de 31 dB en la frecuencia de 12.6 Hz. Posteriormente, digitalizar dicho filtro utilizando un periodo de muestreo de 100 mili segundos. Finalmente, graficar su correspondiente diagrama de polos y ceros, su respuesta impulsional y la representacin en frecuencia (magnitud y fase) desde Fs/2 a Fs/2.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 66

Laboratorio de Procesamiento Digital de Seales

2011-III

(a) Figura 8.6.

(b)

a) Respuesta en frecuencia del filtro diseado. b) Seal de entrada y salida al filtro digital diseado.

4.2

A partir del siguiente bosquejo, disee el filtro digital correspondiente haciendo uso de la funcin Chebyshev Tipo II. Utilizar Ws = 2000 rad/seg. Luego, grafique el filtro en el dominio del tiempo discreto, el diagrama de polos y ceros, y la representacin en frecuencia desde Fs/2 a Fs/2.

- 3 dB

-41 dB dB

0 4.3

400

440

620

680

1000

rad / seg Disear un filtro digital IIR Pasa-Banda de orden 8, a partir de la funcin Chebyshev I. Deber de contar con un rizado menor a 2 dB en la banda pasante. El filtro debe encontrarse muestreado a 10 KHz y con frecuencias de corte igual 2 KHz y 3.2 KHz.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 67

Laboratorio de Procesamiento Digital de Seales

2011-III

EXPERIENCIA DE LABORATORIO N 09

INTRODUCCIN AL FILTRADO ADAPTATIVO. ALGORITMO LEAST MEAN SQUARE

1.

OBJETIVOS: 1.1 Utilizar el algoritmo LMS (least mean square) para disear filtros adaptivos. 1.2 Realizar una operacin de filtrado adaptativo.

2.

FUNDAMENTO TERICO: 2.1 Filtro adaptivo Son sistemas discretos que se auto disean a travs de un algoritmo recursivo, cambiando sus parmetros de forma dinmica a travs del tiempo. Para ello, emplean un criterio de adaptacin que se encuentra relacionado con la obtencin de una seal de error existente: entre la seal de salida y la deseada. Estos sistemas adaptivos son utilizados en diferentes tipos de aplicaciones: a) Prediccin. b) Modelado. c) Eliminacin de interferencias y de eco. d) Identificacin de sistemas. e) Control adaptivo. A continuacin, en la Figura 9.1, se muestra un diagrama de bloques simplificado de un filtro adaptivo.

Figura 9.1.

Diagrama de bloques de un filtro adaptivo.

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 68

Laboratorio de Procesamiento Digital de Seales

2011-III

2.2

Algoritmo LMS El algoritmo LMS (least mean square), es un algoritmo simple que se utiliza en la teora de filtrado adaptivo para hallar los coeficientes del filtro que minimice el valor cuadrtico medio de la seal error. Esta seal error se define como la diferencia entre la seal deseada y la seal obtenida a la salida del filtro. Su principal desventaja se presenta en la tasa de convergencia lenta. A continuacin se muestra un resumen del algoritmo LMS. 1. Se inicializan los pesos o coeficientes del filtro. w[n] 2. Se obtiene la salida del filtro. y [ n ] = w[ n ] * x[ n ] 3. Se calcula el error. e [ n ] = d[ n ] - y[ n ] 4. Se adaptan los coeficientes. w[ n + 1 ] = w[ n ] + u e[ n ] * x[ n ]

3.

EJERCICIOS SOLUCIONADOS: 3.1 Filtrado adaptivo para identificacin de sistemas Seguidamente se muestra un ejemplo aplicativo del uso del filtrado adaptivo para el caso de identificacin de sistemas. Por lo tanto, se disea, a priori, un filtro FIR pasa alto de orden 28, frecuencia de corte de 100 Hz y frecuencia de muestreo de 1000 Hz. Luego, se hace pasar una seal de error a travs del filtro diseado dando origen a una seal de salida que se denominar seal deseada d(t). Se seleccionan 41 coeficientes para el filtro adaptivo y se procede a realizar la operacin de adaptacin. >> x = 0.2*randn(1 , 600); >> Fc = 100; >> Fs = 1000; >> h = fir1( 40 , Fc / (Fs/2) , 'high' ); >> d = filter( h , 1 , x); >> w0 = zeros(1,41); >> mu = 0.8; %entrada al filtro

%Filtro pasa alto FIR %por identificar %Seal deseada %Coeficientes iniciales %del filtro adaptivo %Tasa de aprendizaje %del filtro LMS %inicializa filtro adaptivo %filtrado adaptivo

>> S = initlms( w0 , mu ); >> [ y , e , S] = adaptlms( x , d , S);

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 69

Laboratorio de Procesamiento Digital de Seales

2011-III

Segn el diagrama de bloques mostrado en la figura 9.2, cuando las seales y y d son prximas una de la otra, el filtro adaptivo consigui identificar al filtro real denotado por h.
Seal deseada: d(t)

FILTRO PASA ALTO FIR DE ORDEN 20

+
-

Error: e(t)

Ruido: x(t)
FILTRO ADAPTIVO LMS

Seal de salida: y(t)

Figura 9.2

Diagrama de bloques de filtrado adaptivo para identificacin de sistemas.

>> subplot( 3, 1, 1 ) , plot( 1:600 , y ), grid >> title('Seal de salida del filtro adaptivo') >> subplot( 3, 1, 2 ) , plot( 1:600 , d ) , grid >> title('Seal de salida del filtro a identificar') >> error = d - y; >> subplot( 3, 1, 3 ) , plot( 1:600 , error ) >> title('Seal de error')

%ver figura 9.3

Figura 9.3

Representacin grfica de las seales a) salida del filtro adaptivo. b) salida del filtro identificado. c) seal de error.
Pgina 70

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

Posteriormente, se muestran los coeficientes del filtro real identificado, y los coeficientes del filtro adaptivo utilizado. >> figure(2) >> hold on >> stem( 0:40 , h , 'or' ) , grid >> stem( 0:40 , S.coeffs , '*b' ); >> hold off >> legend(' Filtro Real ', 'Filtro Estimado' );

%ver figura 9.4

Figura 9.4 3.2

Identificacin del filtro pasa alto a travs del filtrado adaptivo

Filtrado adaptivo para cancelacin de ruido A continuacin se muestra un nuevo ejemplo aplicativo del uso del filtrado adaptivo para el caso de cancelacin de ruido. Por lo tanto, se plantea, a priori, una seal coseno de 5 Hz con ruido, y muestreada a 80 Hz. Luego, se seleccionan 80 coeficientes para el filtro adaptivo y se procede a filtrar una nueva seal de ruido con la finalidad de cancelar ambos ruidos y tener como seal de error, una seal muy prxima a la seal coseno pero sin ruido. A continuacin, en la figura 9.5, se muestra el diagrama de bloques correspondiente:

Coseno + Ruido Seal deseada: d (t)

+
-

Error e(t): Coseno

Seal de Ruido x (t)

FILTRO ADAPTIVO LMS

Seal de salida: y(t)

Figura 9.5

Diagrama de bloques de filtrado adaptivo para cancelacin de ruido.


Pgina 71

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Laboratorio de Procesamiento Digital de Seales

2011-III

>> Fs = 80; >> t = linspace( 0 , 1, Fs); >> d1 = 2*cos( 2 * pi * 5 * t ); >> d = 0.2*randn( size(t) ) + d1; >> x = 0.2*randn( size(t) );

%seal limpia %seal deseada %coseno + ruido %seal de ruido %(entrada al filtro %adaptivo) %Coeficientes iniciales %del filtro adaptivo %Tasa de aprendizaje %del filtro LMS

>> w0 = zeros(1,80); >> mu = 0.05;

>> S = initlms( w0 , mu ); >> [ y , e , S] = adaptlms( x , d , S); >> subplot(2, 1, 1), plot( d1 ), grid >> title('Seal COSENO sin ruido') >> subplot(2, 1, 2), plot( e ), grid >> title('Seal de ERROR (cancelacin de ruido)')

%inicializa filtro adaptivo %filtrado adaptivo

%ver figura 9.6

Figura 9.6

Seal COSENO sin ruido y seal de ERROR producto de la cancelacin de ruido

Tambin es posible observar el error encontrado en la seal COSENO sin ruido y la seal donde se realiz la cancelacin del ruido. Para ello, se debe realizar la siguiente operacin: >> error = d1 - e; >> figure(2) >> plot( error )

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 72

Laboratorio de Procesamiento Digital de Seales

2011-III

3.1

Algoritmo de Filtrado adaptivo Utilizando los comandos del software Matlab, se simplifica el uso del algoritmo de filtrado adaptivo. Por lo tanto, a continuacin se representa el algoritmo de filtrado adaptivo LMS utilizando la teora indicada en la seccin 2.2, con la finalidad de entenderla y poder programarla en cualquier otro lenguaje de programacin de alto nivel. Se aplica este nuevo ejemplo para el caso de identificacin de sistemas. Entonces, como seal deseada se considera la salida del filtro pasa bajo con frecuencia de corte igual a 200 Hz y muestreo de 1000 Hz, previamente diseado. >> N = 10000; >> Fs = 1000; >> h = fir1( 28 , 200 / (Fs/2) ); >> X = randn(1,N); >> D = filter( h , 1 , X ); >> M = 28; >> mu = 0.02; >> Y = zeros(1,N); >> E = Y; >> w = [1 zeros(1,M-1) ]'; >> pr = 0:-1:-M+1; >> for n = M:N XR = X(n+pr) ; Y(n) = XR * w; E(n) = D(n) - Y(n); w = w + ( mu*E(n)*XR )'; end >> [ H1 , W ] = freqz( h , 1 , 1024 , Fs ); >> [ H2 , W ] = freqz( w , 1 , 1024 , Fs ); >> mH1 = 20*log10( abs( H1 ) ); >> mH2 = 20*log10( abs( H2 ) ); >> fH1 = unwrap( angle( H1 ) ); >> fH2 = unwrap( angle( H2 ) ); >> subplot(2,1,1) >> plot( W , mH1 , 'r' , W , mH2 , '--b' ), grid %Magnitud >> xlabel(' Frecuencia (Hz) ') %ver figura 9.7-a >> ylabel(' Magnitud (dB) ') >> legend(' Magnitud del Filtro Real ', 'Magnitud del Filtro Estimado' ); >> subplot(2,1,2) >> plot( W , fH1 , 'r' , W , fH2 , '--b' ), grid %Fase >> xlabel(' Frecuencia (Hz) ') %ver figura 9.7-b >> ylabel(' Fase () ') >> legend(' Fase del Filtro Real ', 'Fase del Filtro Estimado' ); %tamao del vector de entrada

%nmero de coeficientes del %filtro adaptivo %factor de aprendizaje %salida del filtro adaptivo

%re-ordenando las muestras %algoritmo iterativo

%respuesta en frecuencia

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 73

Laboratorio de Procesamiento Digital de Seales

2011-III

Figura 9.7

Comparacin de las respuestas en frecuencia (magnitud y fase) del filtro real y el estimado.

4.

EJERCICIOS POR SOLUCIONAR: 4.1 Desarrollar una rutina de programacin para una aplicacin de identificacin de sistemas utilizando un filtro adaptivo LMS. Considerar como el sistema a identificar, un filtro multi banda muestreado a 1 KHz y conformado por 3 bandas. Deber de elegir adecuadamente el factor de aprendizaje del filtro adaptivo, el nmero de coeficientes y las frecuencias de corte para el filtro multi banda. Desarrollar una rutina de programacin para una aplicacin de cancelacin de ruido en un electrocardiograma, utilizando un filtro adaptivo LMS. Considerar como seal deseada a la suma de una onda ECG y una onda coseno de 60 Hz. Deber de elegir adecuadamente el factor de aprendizaje del filtro adaptivo, el nmero de coeficientes, la duracin de la seal ECG y la frecuencia de muestreo para ambas seales. Desarrollar una rutina de programacin para una aplicacin de prediccin de una muestra en una seal compuesta, utilizando un filtro adaptivo LMS. Considerar como la seal a predecir la suma de una onda coseno de 20 Hz y onda seno de 35 Hz. Ambas muestreados a 1 KHz. Deber de elegir adecuadamente el factor de aprendizaje del filtro adaptivo, el nmero de coeficientes y la duracin de la seal a predecir.

4.2

4.3

MSc. Pedro Freddy Huaman Navarrete Docente Tiempo Completo FIEM UTP

Pgina 74

You might also like