Vous êtes sur la page 1sur 74

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
ToolboxSignalProcessing
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 10
4
-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
20
40
60
80
100
120
20 40 60 80 100 120
20
40
60
80
100
120
20 40 60 80 100 120
20
40
60
80
100
120
20 40 60 80 100 120
20
40
60
80
100
120
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 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:

=
=
=
k n
k n
k n
, 1
, 0
] [ o

El escaln unitario:

>
<
=
k n
k n
k n
, 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.







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

] [ ] [ ] [ k n h k x n y
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 ]; %tiempo discreto
0 0.5 1 1.5 2 2.5
x 10
4
-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 o [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
10
Seal Contnua
tiempo
0 2 4 6
-4
-2
0
2
4
6
8
10
Seal 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 7
0
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 1000
0
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 1
0
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.

u t
u t
u

) (
) ( sin ) (
sen
c t f = =

>> 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], h
1
[n] y h
2
[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 ] [ ] [ + + + = n n n n n x o o o o

] 5 [ 2 ] [ ] [
1
= n n n h o o

] 9 [ 17 ] 8 [ 8 ] 7 [ 5 . 0 ] [
2
+ + = n n n n h o o o






>> 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
h
1
[n]
y [n]
x [n] h
2
[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 ] = o [n] - 2 o [n-2]

h1 [ n ] = o [n] - 8 o [n-1] + 3 o [n-2 ]
h2 [ n ] = 2 o [n - 1] + 2 o [n - 3]
r[n]= seal de rudo
















Figura 1.11 Diagrama de bloques por analizar.

+
x [ n]
h
1
[ n ]
3 o [n]
r [ n]
+ X
h
2
[ 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
=t / M
L
Pasa-bajo
Fcorte
=t / L
+M
Pasa-bajo
Fcorte
=t / L
Pasa-bajo
Fcorte
=t / 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*t*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
3
Seal Original
0 0.5 1
-3
-2
-1
0
1
2
3
Seal 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 ]
x
T
[ n ]
M
L Fs *

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.

k
N
N
n
e n x k X
n j -2
1
0
] [ ) (
t

=
=


k
N
j
N
k
e k X
N
n x

n 2
1
0
) (
1
] [
t

=
=


1 ..., , 2 , 1 , 0 = N k


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(2t*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 100
0
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 100
0
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 60
0
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 100
0
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 100
0
20
40
60
80
100
120
140
-1.5 -1 -0.5 0 0.5 1 1.5
x 10
4
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
)
2 2
) 1 2 (
cos( )
2
( 2 ] [
m m
m
n
m
n
sen n x
t t t


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.

{ }
n j
n
e m n w n x m X n x STFT

] [ ] [ ) , ( ] [
e
e

=
= =



Donde:
x[n] : seal discreta en el tiempo
X(m,e) : 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
n
z n x z X ] [ ) (


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

Sea:

) ( ] [ z X n x


Entonces:

1
1
1
] [
1 ] [

z
n
n

o

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
z
m n a
az
n a
z
z
m n
z m n
m
m n
n
m
m

o


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
k n x b k n y a
0 0
] [ ] [
.. (6.1)


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



= =
=
M
k
k
N
k
k
X b Y a
0
k -
0
k -
(z) z (z) z


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


N
N o
M
M o
z a z a z a a
z b z b z b b
z X
z Y
z H


+ + + +
+ + + +
= =
...
...
) (
) (
) (
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
z b ... z b z b b
) z ( X
) z ( Y
) z ( H
M
M
2
2
1
1 o

+ + + +
= =














Figura 6.2 Estructura de filtros digitales correspondiente al modelo MA.
Z
-1
Z
-1
Z
-1

b
0
b
1
b
M
b
2

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.

2 1
1
z 1 . 0 z 7 . 0 1
z 2
) 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.

3 2 1
072 . 0 71 . 0 2 . 0 1
4
) (
) (
) (

+
= =
z z z z X
z Y
z H























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.

5 4 3 2 1
3 1
0063 . 0 0839 . 0 142 . 0 72 . 0 4 . 0 1
7 4
) (
) (
) (


+ + +
+
= =
z z z z z
z z
z X
z Y
z H

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.

4 3 2 1
4 2
0159 . 0 2206 . 0 5775 . 0 45 . 0 1
7 4 1
) (
) (
) (


+
+ +
= =
z z z z
z z
z X
z Y
z H


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 [ ] [ ] [
) (
) (
) (
4 3 2 1
+ + + + =
+ + + + = =

n n b n n b n a n h
az bz cz bz a
z X
z Y
z H
o o o o o











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

a ven la de tamao M
M n
n
M
n w
tan :
1 0
1
2
cos * 46164 . 0 53836 . 0 ] [
s s
|
.
|

\
|

=
t


Funcin SINC o filtro ideal en el dominio del tiempo discreto

n
n sen
n c n h
i

) (
) ( sin ] [
t
t
= =

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.

] [ * ] [ ] [ n h n w n h
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.

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

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 Fc
1
=2.1 KHz, Fc
2
=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)

( ) ( )
( ) ( )
( ) ( )
unitario crculo el sobre n subdivisi de punto i
P polo P cero Fase
P polo dist
P cero dist
H Mdulo
z z z H
z z z H
i i i
i
i
o i
:
, ,
,
,
log * 20
) 8146 . 2 1 ( 2077 . 0 ) (
2077 . 0 5846 . 0 2077 . 0 ) (
10
2 1
2 1
Z Z =
|
|
.
|

\
|
[
[
=
+ + =
+ + =




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.
Z(cero, Pi ): ngulo de cada cero a un punto Pi del plano Z.
Z(polo, Pi ): ngulo de cada polo a un punto Pi del plano Z.


Para el ejemplo anterior, los ceros son:

Cero
1
= -2.3973
Cero
2
= -0.4171

Y los polos se encuentran en el origen, por lo tanto su distancia a cada punto P
i

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 . 0 log * 20
2 * 1 * 2077 . 0 log * 20
2 * 1 * 2077 . 0 log * 20
2 * 1 * 2077 . 0 log * 20
2 * 1 * 2077 . 0 log * 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
500 500 10 500
375 375 10 75 3
250 250 10 250
125 125 10 25 1
0 0 10 0
500
500
375
375
250
250
125
125
0
0
10
d d Mdulo
d d Mdulo
d d Mdulo
d d Mdulo
d d Mdulo
dis d
dis d
Hz F Para
dis d
dis d
Hz F Para
dis d
dis d
Hz F Para
dis d
dis d
Hz F Para
dis d
dis d
Hz F Para
unitario crculo el sobre n subdivisi de punto i
P polo P cero Fase
P polo dist
P cero dist
H Mdulo
Hz
Hz
Hz
Hz
Hz
i i i
i
i
o i
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
Z Z =
|
|
.
|

\
|
[
[
=


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 (P
i
) 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
M o
z b z b z b z b b
z X
z Y
z H

+ + + + + = = . . .
) (
) (
) (
3
3
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 = 2000t 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 400t440t 620t680t1000t
-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.

9 e
+
+ + +
= =


g f e d c b a
gz fz ez
dz cz bz a
z X
z Y
z H , , , , , , ,
1 ) (
) (
) (
3 2 1
3 2 1
















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:

o
1
: rizado u ondulacin de la banda pasante.
o
2
: rizado u ondulacin del para banda (banda de rechazo).
f
p
: frecuencia lmite de la banda pasante.
f
s
: frecuencia lmite del para banda (banda de rechazo).
f
n
: 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:

1 10
1
1 . 0 2
=
o
c


( )
n
f
n
log
1 10
1 10
log
2 / 1
1 . 0
1 . 0
1
2
|
|
.
|

\
|

o
o
















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 - o
1

o
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
1 2
z
z
T
s
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
2
1
3
1
3
1

5
1
1 2
2
H(z)
5
2
) (
1
1

+
+
=
+
|
.
|

\
|
+

=
+
=
z
z
z
z
T
s
s H
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 o[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 [ * ] [ ] [
+ + + =
+ + =
n w d n w c n w b n w a n y
n w g n w f n w e n x n w


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

>> 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 H
N
(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
) (
2 3 4 5 6
+ + + + + +
= s H
N

Se desnormaliza el filtro normalizado H
N
(s), y se obtiene H
D
(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
3 3
=
+
= =
n
p N D
v
v H v w s H s H
c

Donde:
H
D
(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
) (
2 3 4 5 6
+ + + + + +
= s H
D


>> 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 -5 4 -3 2 -1 9
0.83z 5.12z - 13.20z 18.17z - 14.07z 5.81z - 1
.20 0 1.21z 03 . 3 4.04z 03 . 3 1.21z 20 . 0 10
) (
+ + +
+ + + + + +
=

z z z
z H

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 t rad/seg. : frecuencia lmite en la banda pasante.
Ws = 700 t 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 = [3400t 4200t] rad/seg.: frecuencias lmites en banda pasante.
Ws = [ 1800t 5600t ] 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 = 2000t 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 400t 440t 620t 680t 1000t
-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 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); %entrada al filtro
>> Fc = 100;
>> Fs = 1000;
>> h = fir1( 40 , Fc / (Fs/2) , 'high' ); %Filtro pasa alto FIR
%por identificar
>> d = filter( h ,1,x); %Seal deseada
>> w0 = zeros(1,41); %Coeficientes iniciales
%del filtro adaptivo
>> mu = 0.8; %Tasa de aprendizaje
%del filtro LMS

>> S = initlms(w0,mu); %inicializa filtro adaptivo
>> [y,e,S] = adaptlms(x,d,S); %filtrado adaptivo

Laboratorio de Procesamiento Digital de Seales 2011-III

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


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.













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.
FILTRO PASA
ALTO FIR DE
ORDEN 20
+
Ruido:
x ( t )
Error:
e(t)
Seal
deseada: d(t)
+
-
FILTRO
ADAPTIVO
LMS
Seal de
salida: y(t)
Laboratorio de Procesamiento Digital de Seales 2011-III

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


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 Identificacin del filtro pasa alto a travs del filtrado adaptivo


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













Figura 9.5 Diagrama de bloques de filtrado adaptivo para cancelacin de ruido.

+
Coseno + Ruido
Seal deseada: d (t)
Error e(t):

Coseno
+
-
FILTRO
ADAPTIVO
LMS
Seal de
salida: y(t)
Seal de Ruido
x (t)
Laboratorio de Procesamiento Digital de Seales 2011-III

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


>> Fs = 80;
>> t = linspace( 0 , 1, Fs);
>> d1 = 2*cos( 2 * pi * 5 * t ); %seal limpia
>> d = 0.2*randn( size(t) ) + d1; %seal deseada
%coseno + ruido
>> x =0.2*randn( size(t) ); %seal de ruido
%(entrada al filtro
%adaptivo)

>> w0 = zeros(1,80); %Coeficientes iniciales
%del filtro adaptivo
>> mu = 0.05; %Tasa de aprendizaje
%del filtro LMS



>> S = initlms( w0 , mu ); %inicializa filtro adaptivo
>> [y,e,S] = adaptlms(x,d,S); %filtrado adaptivo

>> subplot(2, 1, 1), plot( d1 ), grid
>> title('Seal COSENO sin ruido')
>> subplot(2,1,2), plot( e ), grid %ver figura 9.6
>> title('Seal de ERROR (cancelacin de ruido)')


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 )


Laboratorio de Procesamiento Digital de Seales 2011-III

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


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; %tamao del vector de entrada
>> Fs = 1000;
>> h = fir1( 28 , 200 / (Fs/2) );
>> X = randn(1,N);
>> D = filter( h , 1 , X );
>> M = 28; %nmero de coeficientes del
%filtro adaptivo
>> mu = 0.02; %factor de aprendizaje
>> Y = zeros(1,N); %salida del filtro adaptivo
>> E = Y;
>> w = [1 zeros(1,M-1) ]';
>> pr = 0:-1:-M+1; %re-ordenando las muestras

>> for n = M:N %algoritmo iterativo
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 ); %respuesta en frecuencia
>> [ 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' );
Laboratorio de Procesamiento Digital de Seales 2011-III

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




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.

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

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