Guia Laboratorio PDS UTP

download Guia Laboratorio PDS UTP

of 74

Transcript of Guia Laboratorio PDS UTP

  • EXPERIENCIAS DE

    LABORATORIO

    Asignatura : Procesamiento Digital de Seales

    Ciclo : IX

    Software : MATLAB

    Experiencias : 09

    Docente : Pedro Freddy Huaman Navarrete

    Ciclo acadmico : 2011 - III

    Carrera de Ingeniera Electrnica

    FACULTAD DE INGENIERA ELECTRNICA Y

    MECATRNICA

    JULIO 2011

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 2 Docente Tiempo Completo FIEM UTP

    EXPERIENCIAS DE LABORATORIO PARA LA ASIGNATURA DE PROCESAMIENTO DIGITAL DE SEALES

    EXPERIENCIA DE LABORATORIO

    SEMANA DE CLASES TEMA DE LABORATORIO

    1ra Experiencia de Laboratorio

    Semana 01 Introduccin al Toolbox Signa Processing del Matlab

    2da Experiencia de Laboratorio

    Semana 02 Grfico de seales peridicas y no peridicas. Convolucin. Semana 03

    3ra Experiencia de Laboratorio

    Semana 04 Cambio de la tasa de muestreo: Decimacin e Interpolacin. Semana 05

    4ta Experiencia de Laboratorio

    Semana 06 Transformada discreta de Fourier: Directa e Inversa

    Semana 07

    5ta Experiencia de Laboratorio

    Semana 08 Transformada discreta de Fourier corta en el tiempo. Espectrograma. Semana 09

    EXAMEN PARCIAL -------------------- --------------------

    6ta Experiencia de Laboratorio

    Semana 11 Transformada Z. Diagrama de polos y ceros. Estructura de filtros digitales. Semana 12

    7ma Experiencia de Laboratorio

    Semana 13 Filtros digitales no recursivos. Pasa-Bajo, Pasa-Alto, Pasa-Banda y Rechaza-Banda.

    Semana 14

    8va Experiencia de Laboratorio

    Semana 15 Filtros digitales recursivos. Transformacin de frecuencia. Semana 16

    9na Experiencia de Laboratorio

    Semana 17 Introduccin al filtrado adaptivo: algoritmo Least Mean Square. Semana 18

    EXAMEN FINAL -------------------- --------------------

    EXAMEN SUSTITUTORIO -------------------- --------------------

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 3 Docente Tiempo Completo FIEM UTP

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

    5. Experiencia de Laboratorio N 05: Transformada discreta de Fourier corta en el tiempo. Espectrograma. 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, Pasa-Alto, 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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 4 Docente Tiempo Completo FIEM UTP

    EXPERIENCIA DE LABORATORIO N 01

    INTRODUCCIN AL TOOLBOX SIGNAL PROCESSING DEL MATLAB

    1. OBJETIVOS:

    1.1 Dar una introduccin al toolbox de procesamiento de seales del software Matlab.

    1.2 Realizar operaciones con vectores para representar seales digitales en funcin al tiempo.

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 5 Docente Tiempo Completo FIEM UTP

    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; %generando el vector de nmeros %aleatorios. >> V1 = round( V1 ); %redondeando los elementos del %vector V1. >> plot( t, V1 ) %graficando el vector de ruido %en la figura 1.3 >> axis( [ 0.38 0.40 -20 20 ] ) %limitando la visualizacin del %vector de ruido de la figura 1.3 >> grid >> sound( V1 , 8000 ) %reproduciendo el audio ruidoso

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 6 Docente Tiempo Completo FIEM UTP

    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 ); %el alumno debe de copiar %cualquier archivo de extensin

    %WAV a la carpeta de trabajo del %Matlab.

    >> figure( 3 ), plot( V2 ) %Ver figura 1.4 >> grid >> V2( 10 ) %verificando el valor de la %dcima muestra de dicha seal.

    Figura 1.4 Seal de audio ledo desde el Matlab

    0.38 0.382 0.384 0.386 0.388 0.39 0.392 0.394 0.396 0.398 0.4-20

    -15

    -10

    -5

    0

    5

    10

    15

    20

    0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

    x 104

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 7 Docente Tiempo Completo FIEM UTP

    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 ); %genera una matriz con componentes

    %aleatorios entre 0 y 255. >> IM = round( IM ); >> figure( 1 ) >> colormap( gray ( 256 )) %configura la imagen a tonalidades de %gris >> image( IM ) %Ver figura 1.5 >> IM( 4 , 3) %verificando el contenido de la cuarta %fila y tercera columna

    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.

    20 40 60 80 100 120

    20

    40

    60

    80

    100

    120

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 8 Docente Tiempo Completo FIEM UTP

    >> load imdemos %cargar distintas variables propias del

    %Matlab que corresponden a imgenes %digitales en formato de grises.

    >> figure( 2 )%ver figura 1.6 >> colormap( gray ( 256 ) ) >> subplot( 2 , 1 , 1) , image( trees) >> subplot( 2 , 1 , 2) , image( saturn )

    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 ); %el alumno debe de copiar cualquier

    %archivo de extensin JPEG o BMP, %a la carpeta de trabajo del Matlab.

    >> figure( 2 )%ver figura 1.7 >> image( IM2 ) >> IM2( 5 , 15 , : ) %verificando el color contenido en el %pixel de la quinta fila y quinceava %columna. >> size( IM2 ) %Esto muestra la presencia de tres %matrices de 600x800 pixeles. ans = 600 800 3

    20 40 60 80 100 120

    20

    40

    60

    80

    100

    120

    20 40 60 80 100 120

    20

    40

    60

    80

    100

    120

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 9 Docente Tiempo Completo FIEM UTP

    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 %cargando un arreglo >> whos

    Name Size Bytes Class

    Attributes

    D 4-D 442368 uint8 Map 89x3 2136 double siz 1x3 24 double

    >> size( D ) %27 cuadros de 128x128 ans = 128 128 1 27 >> 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 ) )

    100 200 300 400 500 600 700 800

    100

    200

    300

    400

    500

    600

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 10 Docente Tiempo Completo FIEM UTP

    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.

    20 40 60 80 100 120

    20406080

    100120

    20 40 60 80 100 120

    20406080

    100120

    20 40 60 80 100 120

    20406080

    100120

    20 40 60 80 100 120

    20406080

    100120

    20 40 60 80 100 120

    20406080

    100120

    20 40 60 80 100 120

    20406080

    100120

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 11 Docente Tiempo Completo FIEM UTP

    EXPERIENCIA DE LABORATORIO N 02

    GRFICO DE SEALES PERIDICAS Y NO PERIDICAS. CONVOLUCIN.

    1. OBJETIVOS:

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

    2. FUNDAMENTO TERICO:

    2.1 Funciones discretas Entre las ms importantes encontramos:

    El impulso unitario:

    kn

    knkn

    ,1

    ,0][

    El escaln unitario:

    kn

    knkn

    ,1

    ,0][

    2.2 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), con n como nmero entero.

    Figura 1.1 Ejemplo de seal peridica.

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-4

    -3

    -2

    -1

    0

    1

    2

    3

    4

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 12 Docente Tiempo Completo FIEM UTP

    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.

    Figura 1.2 Ejemplo de seal no peridica.

    2.4 Operacin de convolucin.

    La operacin de convolucines 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.

    ][][][][][ nxnhnhnxny

    ][ ][][ knhkxnyk

    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 ]; %tiempo discreto

    0 0.5 1 1.5 2 2.5

    x 104

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    h [n] y [n] x [n]

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 13 Docente Tiempo Completo FIEM UTP

    >> x = [ 5 9 3 -4 0 8 7 ]; %seal discreta >> 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 )

    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 ) %ver figura1.4 >> subplot(3,1,2), stem( n2 , x2 ) >> subplot(3,1,3), stem( n3 , r3 )

    0 2 4 6-4

    -2

    0

    2

    4

    6

    8

    10Seal Contnua

    tiempo

    0 2 4 6-4

    -2

    0

    2

    4

    6

    8

    10Seal Discreta

    tiempo

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 14 Docente Tiempo Completo FIEM UTP

    Figura 1.4 Ejemplo de seal impulso, escaln y ruido.

    3.2 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; %frecuencia de muestreo >> n = 0:Fs-1; >> fase = 90; >> A = 2; >> F = 3; %frecuencia fundamental: >> x = A * sin ( 2*pi* F*n / Fs + fase*pi/180); % Fs> 2*F >> stem ( n , x ,r ) % Ver figura 1.5

    0 1 2 3 4 5 6 70

    1

    2

    -20 -15 -10 -5 0 5 10 15 20-6

    -4

    -2

    0

    0 100 200 300 400 500 600 700 800 900 10000

    0.5

    1

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 15 Docente Tiempo Completo FIEM UTP

    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 % utilizado para congelar la >> plot( n , x , r ) % figura y %volver a graficar >> hold off % sobre ella. Ver figura 1.6

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

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 16 Docente Tiempo Completo FIEM UTP

    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 ) %ver figura 1.7

    Figura 1.7 Seal tren de pulsos obtenido de la onda cuadrada.

    3.3 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

    0 5 10 15 20 25 30-0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    1.4

    1.6

    1.8

    2

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 17 Docente Tiempo Completo FIEM UTP

    >> Lat = 60 / 70; % tiempo de duracin de un latido >> t = linspace( 0 , Lat , 1000 ); % 70 latidos por minuto >> plot( t , x ), grid % ver figura 1.8 >> text(0.35,0.7, 'Complejo QRS')

    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.

    ) () (sin)(

    senctf

    >> theta=linspace(-10,10,100); >> w =sinc( theta ); >> subplot( 1 , 2 , 1) , >> plot(t,W) %Forma Contnua. Figura 1.9 >> subplot( 1 , 2 , 2) , >> stem(t,W) %Forma Discreta. Figura 1.9

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

    0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Complejo QRS

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 18 Docente Tiempo Completo FIEM UTP

    Figura 1.9 Funcin SINC. En forma continua y discreta.

    ]4[6]3[5]1[4][][ nnnnnx

    ]5[2][][1 nnnh

    ]9[17]8[8]7[5.0][2 nnnnh >> 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

    Figura 1.10 Resultado de la convolucin.

    -10 -5 0 5 10-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    -10 -5 0 5 10-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    0 2 4 6 8 10 12 14 16 18-300

    -250

    -200

    -150

    -100

    -50

    0

    50

    100

    150

    h1[n] y [n] x [n] h2 [n]

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 19 Docente Tiempo Completo FIEM UTP

    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.

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

    4.3 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

    Figura 1.11 Diagrama de bloques por analizar.

    +

    x [ n]

    h1[ n ]

    3 [n] r [ n]

    + X

    h2[ n ]

    y [ n]

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 20 Docente Tiempo Completo FIEM UTP

    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.

    2.2 Interpolacin Es una operacin encargada de aumentar la frecuencia de muestreo por un factor entero denominado 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

    M

    Pasa-bajo

    Fcorte

    = / M

    L Pasa-bajo

    Fcorte

    = / L

    M

    Pasa-bajo

    Fcorte

    = / L

    Pasa-bajo

    Fcorte

    = / M L

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 21 Docente Tiempo Completo FIEM UTP

    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 )

    Figura 3.1 Resultado de la decimacin e interpolacin.

    3.2 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; >> f = 5; >> x = 2 * sin(2*pi*f*n/Fs );

    0 0.5 1-3

    -2

    -1

    0

    1

    2

    3Seal Original

    0 0.5 1-3

    -2

    -1

    0

    1

    2

    3Seal Decimada

    0 0.5 1-3

    -2

    -1

    0

    1

    2

    3 Seal Interpolada

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 22 Docente Tiempo Completo FIEM UTP

    >> stem( n , x ) %ver figura 3.2 >> help decimate >> x2 = decimate(x,2); >> Fs = Fs / 2; >> stem(0:Fs-1 , x2 )

    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 pasabajo 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 ) %ver figura 3.3

    Figura 3.3 Versin interpolada de la onda seno

    0 5 10 15 20 25 30 35 40 45 50-2.5

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

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

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 23 Docente Tiempo Completo FIEM UTP

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

    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.

    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 = 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 ) >>help resample

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

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    L M x [ n ] xT [ n ]

    M

    LFs *

    Fs

    Fs * L

    Fs_Final 3 4

    Fs_Incial

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 24 Docente Tiempo Completo FIEM UTP

    >> 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 ) %ver figura 3.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.

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

    4.3 Implementar una seal multitono 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.

    0 0.5 1-2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    0 0.5 1-2.5

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    2.5

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 25 Docente Tiempo Completo FIEM UTP

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

    kN

    N

    n

    enxkX

    n j -21

    0

    ][)(

    kN

    jN

    k

    ekXN

    nx

    n 21

    0

    )(1

    ][

    1 ..., ,2 ,1 ,0 Nk

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 26 Docente Tiempo Completo FIEM UTP

    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) %ver figura 4.1

    Figura 4.1 Seal discreta con Fs = 100 Hz.

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

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 27 Docente Tiempo Completo FIEM UTP

    >> 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); % mdulo para N=16 puntos >> fX_16 = angle (X_16); % fase para N=16 puntos >> mX_512 = abs (X_512); % mdulo para N=512 puntos >> fX_512 = angle (X_512); % fase para N=512 puntos >> figure(1) >> f_16 = linspace(0,Fs,16); >> f_512 = linspace(0,Fs,512); >>subplot(2,1,1), stem(f_16 , mX_16) >>subplot(2,1,2), stem(f_16 , fX_16) %ver figura 4.2

    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

    0 10 20 30 40 50 60 70 80 90 1000

    2

    4

    6

    8

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

    -2

    0

    2

    4

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 28 Docente Tiempo Completo FIEM UTP

    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) %ver figura 4.4 >> subplot(2,1,2), stem(f_512 , iX_512)

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

    0 10 20 30 40 50 60 70 80 90 1000

    10

    20

    30

    40

    50

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

    -2

    0

    2

    4

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

    0

    20

    40

    60

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

    -20

    0

    20

    40

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 29 Docente Tiempo Completo FIEM UTP

    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) ) %ver figura 4.5

    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

    Figura 4.6 Mdulo de la TDF de una seal peridica

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

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    -60 -40 -20 0 20 40 600

    50

    100

    150

    200

    250

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 30 Docente Tiempo Completo FIEM UTP

    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) %ver figura 4.7

    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

    0 10 20 30 40 50 60 70 80 90 1000

    10

    20

    30

    40

    50

    60

    70

    80

    90

    100

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 31 Docente Tiempo Completo FIEM UTP

    Figura 4.8 Mdulo de la TDF de una seal peridica (cuadrada)

    3.2 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 ); %tomando solamente un canal de x >> tX = fft ( x1 , tam ); >> mtX = abs (tX); >> mtX = fftshift( mtX ); >> f = linspace( -Fs/2 , Fs/2 , tam ); >> plot( f , mtX ) %ver figura 4.9

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

    -100 -80 -60 -40 -20 0 20 40 60 80 1000

    20

    40

    60

    80

    100

    120

    140

    -1.5 -1 -0.5 0 0.5 1 1.5

    x 104

    0

    50

    100

    150

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 32 Docente Tiempo Completo FIEM UTP

    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.

    4

    0

    3

    1

    )22

    )12(cos()

    2(2][

    mm

    mn

    mn

    sennx

    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 en el intervalo de -Fs/2 a Fs/2.

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 33 Docente Tiempo Completo FIEM UTP

    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.

    njn

    emnwnxmXnxSTFT ][ ][),( ][

    Donde: x[n] : seal discreta en el tiempo

    X(m,) : Transformada de Fourier corta en el tiempo de x[n] w[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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 34 Docente Tiempo Completo FIEM UTP

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

    Tiempo Tiempo

    Frecuencia Frecuencia

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 35 Docente Tiempo Completo FIEM UTP

    (a) (b)

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

    (a) (b)

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 36 Docente Tiempo Completo FIEM UTP

    >> 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 %extensinWAV a la carpeta %de trabajo del Matlab.

    >> size( V2 ) >> x = V2( : , 1 ); %en caso de ser una seal

    %tipo estreo, se toma solo un %canal

    >> figure( 1 ), plot( V2 ) %Ver figura 5.5 >> grid >> NFFT = 512; >> WINDOW = hamming(NFFT); >> NOVERLAP = 500; >> figure(2) >> spectrogram( x ,WINDOW,NOVERLAP,NFFT,Fs); %Ver figura 5.6

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 37 Docente Tiempo Completo FIEM UTP

    Figura 5.5 Representacin temporal de una seal no peridica

    Figura 5.6 Representacin del espectrograma en 3D de una seal no peridica

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 38 Docente Tiempo Completo FIEM UTP

    4.2 Representar el espectrograma de una seal no peridica cuya frecuencia disminuye linealmente, mientras transcurreel 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.

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

    X +

    10

    Seal

    Portadora

    Seal AM Seal

    Modulante

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 39 Docente Tiempo Completo FIEM UTP

    EXPERIENCIA DE LABORATORIO N 06

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

    1. OBJETIVOS:

    1.1 Obtener laTransformada 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.

    m

    nznxzX ][)(

    Seguidamente se muestra algunas funciones discretas y su respectiva

    Transformada Z.

    Sea:

    )( ][ zXnx

    Entonces:

    11

    1 ][

    1 ][

    zn

    n

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 40 Docente Tiempo Completo FIEM UTP

    1

    1

    1

    1 ][

    1

    1 ][

    1 ][

    ][

    az

    zmna

    azna

    z

    zmn

    zmn

    mmn

    n

    m

    m

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

    M

    k

    k

    N

    k

    k knxbknya00

    ][ ][

    .. (6.1)

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

    M

    k

    k

    N

    k

    k XbYa0

    k-

    0

    k- (z)z (z)z

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

    N

    No

    M

    Mo

    zazazaa

    zbzbzbb

    zX

    zYzH

    ...

    ...

    )(

    )()(

    2

    2

    1

    1

    2

    2

    1

    1

    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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 41 Docente Tiempo Completo FIEM UTP

    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): cuando N = 0 y M 0 Modelo AR (auto-regresivo): cuando N 0 y M = 0 Modelo ARMA : 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).

    1

    zb...zbzbb

    )z(X

    )z(Y)z(H

    M

    M

    2

    2

    1

    1o

    Figura 6.2 Estructura de filtros digitales correspondiente al modelo MA.

    Z-1

    Z-1

    Z-1

    b0 b1 bM b2

    X (z)

    Y (z)

    . . .

    . . .

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 42 Docente Tiempo Completo FIEM UTP

    3. EJERCICIOS SOLUCIONADOS:

    3.1 Transformada Z en forma literal

    Con ayuda del toolboxSymbolic del Matlab, es posible obtener la Transformada Z directa o inversa en forma literal. >> help ztrans

    >> help iztrans >> syms n z %se definen las variables literales: tiempo y Z. >> f1 = 0.2^(n-2); >> F1 = ztrans( f1 ) %se obtiene la Transformada Z directa >> 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.

    21

    1

    z1.0z7.01

    z2

    )z(X

    )z(Y)z(H

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 43 Docente Tiempo Completo FIEM UTP

    Figura 6.3 Diagrama de polos y ceros de la funcin de transferencia H(z) del ejemplo

    anterior. >> [ r , p , k ] = residuez( Nu , De ) % Obtener la expansin en % fracciones parciales r = -6.6667 6.6667 p = -0.5000 -0.2000 k = [] >> dstep( Nu , De , 20 ) % 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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 44 Docente Tiempo Completo FIEM UTP

    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.

    321 072.071.02.01

    4

    )(

    )()(

    zzzzX

    zYzH

    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

    Z-1

    Z-1

    4

    -0.2

    Z-1

    Y (z) X (z)

    0.71

    0.072

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 45 Docente Tiempo Completo FIEM UTP

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

    54321

    31

    0063.00839.0142.072.04.01

    74

    )(

    )()(

    zzzzz

    zz

    zX

    zYzH

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 46 Docente Tiempo Completo FIEM UTP

    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.

    4321

    42

    0159.02206.05775.045.01

    74 1

    )(

    )()(

    zzzz

    zz

    zX

    zYzH

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 47 Docente Tiempo Completo FIEM UTP

    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.

    ]4[a ]3[ ]2[c ]1[ ][][

    )(

    )()( 4321

    nnbnnbnanh

    azbzczbzazX

    zYzH

    Z-1

    Z-1

    Z-1

    Z-1

    a b a b c

    X (z)

    Y (z)

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 48 Docente Tiempo Completo FIEM UTP

    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 todas las frecuencias menores a esta. Filtro Pasa-alto: posee una frecuencia de corte y deja pasar todas las frecuencias mayores a esta. Filtro Pasa-banda: posee dos frecuencias de corte y deja pasar todas las frecuencias comprendidas entre estas dos frecuencias. Filtro Rechaza-banda: posee dos frecuencias de corte y rechaza todas las frecuencias comprendidas entre estas dos frecuencias.

    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

    avenladetamaoM

    Mn

    nM

    nw

    tan :

    10

    1

    2cos*46164.053836.0][

    Funcin SINC o filtro ideal en el dominio del tiempo discreto

    n

    nsenncnhi

    ) ()(sin][

    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.

    ][*][][ nhnwnh i

    2.4 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 impulsionaldel filtro digital no recursivo, tal como lo muestra la figura 7.1.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 49 Docente Tiempo Completo FIEM UTP

    Figura 7.1 Representacin de la entrada y salida de un filtro digital.

    ][][][][][ nxnhnhnxny

    3. EJERCICIOS SOLUCIONADOS:

    3.1 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; % orden del filtro FIR >> Fc = 2000; % frecuencia de corte >> Fs = 10000; % frecuencia de muestreo >> fcN = Fc / Fs; % frecuencia normalizada >> 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 ]; % filtro ideal en el tiempo discreto >> w = hamming( M+1 ); % ventana Hamming >> 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.2 >> grid >> 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 )

    h [n] x [n] y [n]

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 50 Docente Tiempo Completo FIEM UTP

    Figura 7.2 Representacin del filtro digital FIR en el dominio del tiempo

    Figura 7.3 Representacin del filtro digital FIR en el dominio de la frecuencia

    3.2 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; % orden del filtro FIR >> Fc = 3000; % frecuencia de corte >> Fs = 10000; % frecuencia de muestreo >> fcN = Fc / Fs; % frecuencia normalizada >> wc = 2*pi*fcN;

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 51 Docente Tiempo Completo FIEM UTP

    >> 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 ]; % filtro ideal Pasa-Alto en el tiempo discreto >> w = triang( 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.4 >> grid >> 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 Representacin del filtro digital FIR en el dominio del tiempo

    3.3 Filtro digital no recursivo rechaza-banda. Para disear un filtro digital no recursivo rechaza-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 rechaza-banda con Fc1=2.1 KHz, Fc2=3.5 KHz, Fs = 10 KHz y utilizando una ventana hanning. >> M = 66; % orden del filtro FIR >> Fc1 = 2100; % frecuencia de corte 1 >> Fc2 = 3500; % frecuencia de corte 2 >> Fs = 10000; % frecuencia de muestreo >> fcN1 = Fc1 / Fs; % frecuencia normalizada 1

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 52 Docente Tiempo Completo FIEM UTP

    >> fcN2 = Fc2 / Fs; % frecuencia normalizada 2

    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 )

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 53 Docente Tiempo Completo FIEM UTP

    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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 54 Docente Tiempo Completo FIEM UTP

    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)

    unitariocrculoelsobrensubdivisidepuntoi

    PpoloPceroFase

    Ppolodist

    PcerodistHMdulo

    zzzH

    zzzH

    iii

    i

    ioi

    :

    ,,

    ,

    , log*20

    )8146.21(2077.0)(

    2077.05846.02077.0)(

    10

    21

    21

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

    (cero, Pi ): ngulo de cada cero a un punto Pi del plano Z.

    (polo, Pi ): 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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 55 Docente Tiempo Completo FIEM UTP

    2*1*2077.0log*20

    2*1*2077.0log*20

    2*1*2077.0log*20

    2*1*2077.0log*20

    2*1*2077.0log*20

    ])0,1[],0,4171.0([2

    ])0,1[],0,3973.2([1

    500:

    ])7071.0,7071.0[],0,4171.0([2

    ])7071.0,7071.0[],0,3973.2([1

    375:

    ])1,0[],0,4171.0([2

    ])1,0[],0,3973.2([1

    250:

    ])7071.0,7071.0[],0,4171.0([2

    ])7071.0,7071.0[],0,3973.2([1

    125:

    ])0,0[],0,4171.0([2

    ])0,0[],0,3973.2([1

    0:

    :

    ,,

    ,

    , log*20

    50050010 500

    37537510 753

    25025010 250

    12512510 251

    0010 0

    500

    500

    375

    375

    250

    250

    125

    125

    0

    0

    10

    ddMdulo

    ddMdulo

    ddMdulo

    ddMdulo

    ddMdulo

    disd

    disd

    HzFPara

    disd

    disd

    HzFPara

    disd

    disd

    HzFPara

    disd

    disd

    HzFPara

    disd

    disd

    HzFPara

    unitariocrculoelsobrensubdivisidepuntoi

    PpoloPceroFase

    Ppolodist

    PcerodistHMdulo

    Hz

    Hz

    Hz

    Hz

    Hz

    iii

    i

    ioi

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 56 Docente Tiempo Completo FIEM UTP

    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 Representacin del filtro digital FIR en plano Z

    3.4 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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 57 Docente Tiempo Completo FIEM UTP

    >> orden = 80; >> w = hamming( orden+1 ); %Ventana hamming. >> Fc = [ 300 405 ] / (Fs/2); %Frecuencia de corte normalizada >> h = fir1(orden , Fc , w ); %Diseo del filtro utilizando FIR1 >> y = conv( h , x ); %Filtrado digital o convolucin solo >> nn = linspace( 0 , 1 , length(y) ); %para secuencias finitas. >> TY = abs( fft( y , 4096 ) ); %TDF de la seal de salida. >> subplot( 2 , 2, 3) , plot( nn, y ) %Seal de salida en el tiempo >> subplot( 2 , 2, 4) , plot( F, TY ) %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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 58 Docente Tiempo Completo FIEM UTP

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

    M

    Mo zbzbzbzbbzX

    zYzH . . .

    )(

    )()( 33

    2

    2

    1

    1

    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.

    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.

    rad / seg

    0 400440 6206801000

    -41 dB

    dB

    - 3 dB

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 59 Docente Tiempo Completo FIEM UTP

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

    gfedcbagzfzez

    dzczbza

    zX

    zYzH ,,,,,, ,

    1)(

    )()(

    321

    321

    Figura 8.1. Estructura discreta de un filtro IIR.

    Z-1

    x [n] y [n] +

    +

    +

    Z-1

    Z-1

    +

    +

    +

    +

    +

    + +

    +

    +

    +

    +

    +

    +

    +

    +

    a

    b

    c

    d

    + e

    + f

    - g

    w[n]

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 60 Docente Tiempo Completo FIEM UTP

    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: rizado u ondulacin de la banda pasante.

    2: rizado u ondulacin del para banda (banda de rechazo). fp: frecuencia lmite de la banda pasante. fs: frecuencia lmite del para banda (banda de rechazo). fn: 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:

    110 1 1.02

    nfn

    log

    110

    110log

    2/1

    1.0

    1.0

    1

    2

    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 pasa-banda o elimina-banda.

    1

    1 - 1

    2

    f p f s f

    Para banda

    Banda

    pasante

    Banda de

    transicin

    H( f )

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 61 Docente Tiempo Completo FIEM UTP

    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:

    1

    12

    z

    z

    Ts

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

    3

    21

    3

    1

    3

    1

    51

    12

    2H(z)

    5

    2)(

    1

    1

    z

    z

    z

    z

    T

    ssH

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

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

    ]3[*]2[*]1[*][*][

    ]3[*]2[*]1[*][][

    nwdnwcnwbnwany

    nwgnwfnwenxnw

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 62 Docente Tiempo Completo FIEM UTP

    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 1dB 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 2 . Luego, normalizamos la frecuencia.

    >> Fp = 0.70; >> Fs = 1.45; >> d1 = -1; % atenuacin en la banda pasante (en dB) >> d2 = -30; % atenuacin en la banda de rechazo (en dB)

    >> e2 = power( 10 , - 0.1*d1 ) - 1 ; % variable 2

    >> 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 ) % diagrama de polos y ceros Se obtiene:

    1 3.86s 7.46s 9.14s 7.46s 3.86s s

    1)(

    23456 sHN

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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 63 Docente Tiempo Completo FIEM UTP

    2

    1

    1

    1)( )*()(

    *2

    3

    2

    2

    33

    npND v

    vHvwsHsH

    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 ) %diagrama de polos y ceros del filtro % pasa-bajo analgico desnormalizado >> freqs( num2 , den2 ) % respuesta en frecuencia El filtro analgico pasa-bajo desnormalizado H(s) resultante, ser:

    14226.61 11166.62s 4382.40s 1090.37s 180.86s 19.02s s

    609962.14226)(

    23456 sHD

    >> Ts = 0.01; >> Fs = 1 / Ts; >> [ numD , denD ] = bilinear ( num2 , den2 , Fs ); % digitalizando >> zplane( numD , denD ) >> puntos = 1024; >> freqz( numD , denD , puntos , 'whole', Fs ) % ver la figura 8.3 El filtro digital pasa-bajo H(z) resultante, ser:

    6-5-4-3-2-1-

    6-54-32-19

    0.83z 5.12z - 13.20z 18.17z - 14.07z 5.81z - 1

    .200 1.21z 03.3 4.04z 03.3 1.21z 20.010)(

    zzzzH

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 64 Docente Tiempo Completo FIEM UTP

    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 : atenuacin en la banda pasante. Rs = 40 dB : atenuacin en la banda de rechazo.

    Wp = 1200 rad/seg. : frecuencia lmite en la banda pasante.

    Ws = 700 rad/seg. : frecuencia lmite en la banda de rechazo. >> Rp = 3; >> Rs = 40; >> Fs = 10000; >> Ws = 2 * pi * Fs ; >> wp = 1200*pi / ( Ws/2); %frecuencia digital normalizada >> ws = 700*pi / ( Ws/2); %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

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 65 Docente Tiempo Completo FIEM UTP

    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 : atenuacin en la banda pasante. Rs = 38 dB : atenuacin en la banda de rechazo.

    Wp = [3400 4200] rad/seg.: frecuencias lmites en banda pasante.

    Ws = [ 1800 5600 ] rad/seg.: 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) )

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 66 Docente Tiempo Completo FIEM UTP

    >> 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 ); % filtrado de la seal cuadrada >> subplot( 2 , 1 , 2 ), plot( y ) % ver la Figura 8.6 >> axis( [ 200 360 -1.5 1.5 ] )

    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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 67 Docente Tiempo Completo FIEM UTP

    (a) (b)

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

    4.3 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 10KHz y con frecuencias de corte igual 2KHz y 3.2 KHz.

    rad / seg

    0 400 440 620 680 1000

    -41 dB

    dB

    0 dB

    - 3 dB

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 68 Docente Tiempo Completo FIEM UTP

    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.

  • Laboratorio de Procesamiento Digital de Seales 2011-III

    MSc. Pedro Freddy Huaman Navarrete Pgina 69 Docente Tiempo Completo FIEM UTP

    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 de