You are on page 1of 93

Ejercicios en MATLAB para


Procesamiento Digital de Señales

Rubén Orozco Morales


Humberto Bolaños Rodríguez

1999, Editorial Feijóo de la Universidad Central “Marta Abreu” de Las Villas


ISBN 959-250-006-1
Contenido

Prefacio III

Introducción 1

Tema 1: Secuencias en el dominio del tiempo. 9

Tema 2: Transformada de Fourier y Respuesta de Frecuencias. 15

Tema 3: Transformada Z. 21

Tema 4: Filtros Digitales. 26

Tema 5: Secuencias Aleatorias. 36

Tema 6: Estructuras para sistemas LTI. 45

Tema 7: Muestreo, Interpolación y Diezmado de Secuencias. 52

Tema 8: Transformada de Hilbert, Cepstrum y Sistemas


Homomórficos 58

Anexo I: Respuestas de algunos ejercicios. 74

Anexo II: Principales funciones de MATLAB  utilizables en la


solución de los ejercicios. 93

Ejercicios en MATLAB para Procesamiento Digital de Señales


Prefacio

Por muchos es conocido el impacto del Procesamiento Digital de Señales (PDS) en la vida moderna. Con los
ritmos acelerados de migración hacia la digitalización, esta disciplina técnica ha sido situada en un lugar de
importancia extrema, a donde necesariamente deben confluir las señales de carácter discreto, no importa la
fuente de donde provengan.

La amplísima gama de beneficios que reporta la utilización del PDS amerita su estudio y aplicación a
profundidad, aunque las características de su naturaleza lo hacen un tema complejo. De hecho, a pesar de la
basta bibliografía y base teórica con que se cuenta hasta el momento, existe un cierto grado de dificultad en
su asimilación por parte de los principiantes.

Este texto presenta un paquete de ejercicios que fueron concebidos para el apoyo en el entrenamiento de los
estudiantes de los cursos de PDS que se imparten en las maestrías de Telecomunicaciones, Electrónica e
Ingeniería Biomédica en la Universidad Central de las Villas. El uso de la computadora para la resolución de
estos ejercicios, mediante el paquete matemático MATLAB, constituye una herramienta doblemente
poderosa ya que el estudiante, por una parte se enfrenta a problemas utilizando un dispositivo capaz de
agilizarle notablemente su resolución, y por otra parte, desarrolla habilidades correspondientes al uso de
medios computacionales.

Para hacer más clara la comprensión de los ejercicios de este texto, junto a la orientación los mismos se
incluye una breve reseña de los objetivos del tema en cuestión y las funciones más utilizadas del MATLAB,
de forma tal que constituye una ayuda sutil pero potente a la hora de enfrentar dicha tarea.

En todos los ejercicios se hace énfasis en la interpretación de los resultados para que el alumno valore el
significado de los mismos sobre la base de sus conocimientos teóricos. Por otra parte, no se requiere de un
conocimiento previo profundo de MATLAB, ya que a lo largo de los diversos capítulos se utiliza el método
de “aprender mientras se hace”; se le orienta al alumno qué funciones de MATLAB utilizar y qué pasos dar
para llegar a los resultados esperados. De esta forma, una vez que se considera que el alumno ha dominado la
forma de utilizar el MATLAB para la solución de un problema específico (como puede ser el cálculo de una
transformada discreta de Fourier), si dicho problema se presenta en un próximo ejercicio, sólo se la pide que
lo realice sin ninguna orientación.

Este texto está estructurado en introducción, ocho temas y dos anexos. La introducción hace una breve
descripción general del PDS, sus ventajas, aplicaciones fundamentales, así como de la utilización de la
computación como medio auxiliar en su enseñanza. Por último, expone los criterios de los autores en
relación con la utilización del sistema MATLAB en la enseñanza del PDS.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Prefacio IV

Los ocho temas en los que se agrupan los ejercicios son:


Tema 1: Secuencias en el dominio del tiempo.
Tema 2: Transformada de Fourier y Respuesta de frecuencias.
Tema 3. Transformada Z.
Tema 4: Filtros digitales.
Tema 5: Secuencias aleatorias.
Tema 6: Estructuras para sistemas LTI.
Tema 7: Muestreo, Interpolación y Diezmado de Secuencias.
Tema 8: Transformada de Hilbert , Cepstrum y Sistemas Homomórficos

Esta división se ajusta a los programas docentes de los cursos de PDS. Al inicio de cada tema se da una breve
introducción y se señalan los principales objetivos del mismo, además en el enunciado de los ejercicios
muchas veces se sugiere cuales deben ser algunas de las funciones del MATLAB que pueden utilizarse para
resolver el ejercicio en cuestión. Tales funciones se indican utilizando letra arial negrita. Ello no quiere decir
que la función MATLAB que se sugiere sea la única a utilizar en la solución del ejercicio. Igual formato
(arial negrita) se utiliza siempre que en este texto se mencione una función propia del MATLAB.

La solución de algunos de los ejercicios se ofrecen en el anexo I .

En el anexo II, encontrará algunas de las posibles funciones del MATLAB que pueden ser utilizadas en la
solución de los ejercicios de cada tema . Al lado de cada función se incluye una breve descripción de lo que
ella hace, la cual puede ser ampliada si en la ventana de comandos del MATLAB solicita la ayuda de la
función con el formato [help NombreDeFunción].

Junto con este texto se oferta, en una carpeta identificada con el nombre “señales”, un conjunto de señales
que deben ser utilizadas en la solución de algunos ejercicios. Es recomendable hacer una copia de la carpeta
de señales en el disco duro de su máquina, y trabajar con dicha copia para evitar que cualquier error pueda
borrar las señales del disquete. Dichas señales están grabadas en formato MATLAB (lo que se indica
utilizando la extensión .mat), por lo cual pueden ser cargadas con la función load, indicando el camino hacia
la carpeta en que se encuentran, y luego trazarlas mediante plot.

Los autores agradecemos a los estudiantes que, durante la utilización de estos ejercicios, han contribuido con
sus sugerencias a una gradual perfección de los mismos. Además, agradeceremos igualmente todas aquellas
sugerencias que nos puedan hacer en el futuro, las que sabremos recoger en nuevas ediciones de este texto.

Rubén Orozco Morales


Humberto Bolaños Rodríguez

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción

El Procesamiento Digital de Señales (PDS), en su generalidad, no es más que la representación


matemática y el tratamiento (numérico) de las variables (señales) obtenidas de cualquier proceso
físico de la naturaleza, ya sean señales provenientes de los procesos biológicos (bioseñales), de
sistemas de comunicación, de la actividad de la corteza terrestre (sísmicas), de la economía, de
procesos industriales, entre otras, siendo los rasgos fundamentales del PDS la manipulación
algorítmica de estas señales para extraer la información que poseen o la transformación de las
mismas para diversos fines.

Una señal de tiempo discreto, denominada secuencia, se define sólo en instantes discretos de
tiempo, y puede ser creada por el muestreo y la cuantificación de una señal analógica.

Dado que los sistemas de cómputo sólo realizan operaciones aritméticas y lógicas, el PDS no es más
que un conjunto de operaciones, cálculos aritméticos y manipulaciones numéricas, efectuadas sobre
una secuencia determinada, la cual, en forma digital está representada por un conjunto de números,
con el objetivo de obtener una nueva secuencia que representa la señal tratada; de esta forma, se
pueden realizar disímiles operaciones como son, análisis espectral, filtrado lineal y no lineal,
codificación, modulación, extracción de parámetros, transformaciones desde y hacia el dominio
transformado, cambios en las razones efectivas de muestreo por interpolación o extrapolación, etc.

Hay muchas razones por las cuales el procesamiento de la señal en forma digital es más ventajoso
que en forma analógica. A diferencia de los circuitos analógicos, la operación de los circuitos
digitales no depende de valores precisos de parámetros de los componentes del sistema, por lo cual,
son menos sensible a valores de tolerancia de sus componentes y mas independientes del ambiente
exterior, como por ejemplo la temperatura.

Los circuitos digitales pueden ser fácilmente reproducidos en grandes cantidades y no requieren de
ningún ajuste durante su fabricación o durante la vida del sistema. Además poseen gran estabilidad
en las características de explotación, y son muy fáciles de supervisar. Por otro lado, con los
recientes avances en los circuitos de muy alta escala de integración (VLSI), ha sido posible integrar
sistemas de procesamiento digital de señales complejos y altamente sofisticados en un simple
procesador.

El procesamiento digital permite compartir los recursos de un DSP dado entre un número de
señales, multiplexándolas por división en el tiempo, lo cual, a diferencia de los sistemas analógicos,

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 2

está libre de estados transitorios; permitiendo reducir el costo de operación por señal. Además,
conmutando los coeficientes del procesador al arribo de cada señal y realizando la demultiplexación
a la salida del mismo, podemos verlo como dos sistemas diferentes.

La implementación digital permite de manera fácil realizar cambios en el sistema para su mejora;
por ejemplo, con solo aumentar el número de cifras binarias en la representación de los datos y
coeficientes se pueden reducir las distorsiones a un nivel deseado, ajuste que puede ser realizado
durante el procesamiento. Una aplicación del cambio de dichos coeficientes se ve en la realización
de sistemas con características programables como filtros selectivos en frecuencia con frecuencias
de corte variables. Por otra parte ciertas características imposibles de realizar rigurosamente en el
campo analógico pueden serlo de forma digital, ejemplo de esto es la linealidad de la respuesta de
fase.

Las señales digitales pueden ser almacenadas casi indefinidamente, sin ninguna pérdida en la
información, en diferentes medios como son discos duros, cintas magnéticas, discos compactos etc,
la cual queda disponible para ser transportada y/o para su procesamiento en tiempo no real (off-line)
en laboratorios.

Todo lo anteriormente expuesto, unido al continuo decrecimiento en los costos del hardware de los
procesadores digitales, trae consigo un rápido incremento de las aplicaciones del procesamiento
digital de señales.

Son muchas y muy disimiles las aplicaciones que posee el procesamiento digital de las señales en
nuestros días, sus metodologías han sido aplicadas a equipos electrodomésticos,
telecomunicaciones, en el desarrollo de la electrónica automotriz, para la instrumentación y el
control de procesos en la producción industrial, equipos electromédicos, procesamiento de
imágenes, tratamiento de señales biológicas en medicina como son las señales electrocardiográficas
y electroencefalográficas, entre otras. En muchos de estos casos se impone la restricción del
procesamiento en tiempo real (on line); esto es, el medio físico en el que se inserta el sistema de
PDS determina el intervalo de tiempo en que debe realizarse el procesamiento de los datos. Por
tanto, en los sistemas de tiempo real los algoritmos de PDS no deben caracterizarse tan solo por su
potencialidad y eficacia, sino también por su eficiencia computacional.

Aplicaciones típicas del tratamiento digital de señales podemos encontrarlas actualmente en la red
mundial de telecomunicaciones la cual está evolucionando de forma constante a la digitalización
con objetivos definidos como la mejora en la calidad de los enlaces, introducción de nuevos

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 3

servicios entre los que podemos mencionar la telefonía celular, los servicios de televisión por cable,
el telediagnóstico en los servicios médicos, etc. También podemos mencionar el tratamiento en
señales de audio donde encontramos desde el surgimiento y expansión de los discos compactos
hasta la ecualización, filtrado de señales, efectos especiales etc.

En el campo de aplicaciones del PDS podemos mencionar los trabajos desarrollados por el Centro
de Estudios de Electrónica y Tecnologías de la Información (CEETI) de la Universidad Central de
Las Villas, dentro de los cuales se encuentran el procesamiento digital de señales biomédicas
(electrocardiográficas, electromiográficas y voz).

En general el procesamiento digital de señales lo podemos encontrar en casi todas las esferas de la
vida actual con una tendencia siempre creciente.

Estudio del Procesamiento Digital de Señales.


Teniendo en cuenta el desarrollo alcanzado por el PDS así como la gran variedad de sus
aplicaciones se hace necesario su continuo estudio, razón por la cual desde la década de los años 70
se ha incluido dentro de los programas de estudio de muchas carreras y maestrías en Universidades
de todo el mundo. Además, en muchas universidades se imparten asignaturas dedicadas al
procesamiento digital de señales específicas como pueden ser: Procesamiento Digital de Imágenes,
Procesamiento Digital de Bioseñales, etc.

En La Universidad Central de Las Villas desde el curso 97-98 se incluyó el PDS como asignatura en
el programa de pregrado de la carrera de Telecomunicaciones y Electrónica y desde hace algunos
años, para la enseñanza de postgrado, específicamente para las maestrías en Electrónica,
Telecomunicaciones y mas recientemente en Ingeniería Biomédica , enseñanza hacia la cual va
dirigida el desarrollo de este texto.

Los temas para los cuales hemos confeccionado los ejercicios en MATLAB son:

Tema 1: Secuencias en el dominio del tiempo. En este tema el estudiante debe saber realizar
operaciones con secuencias de tiempo discreto en el dominio del tiempo, clasificar los sistemas de
tiempo discreto, representarlos mediante ecuaciones en diferencias finitas y diagramas de
simulación, así como aplicar el concepto de la convolución discreta.

Tema 2: Transformada de Fourier y Respuesta de frecuencias. Aquí debe saber representar


secuencias y sistemas de tiempo discreto en el dominio de la frecuencia, conocer y aplicar el

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 4

concepto de respuesta de frecuencias, conocer y aplicar las propiedades de transformada de Fourier


de tiempo discreto, transformada discreta de Fourier y transformada rápida de Fourier.

Tema 3. Transformada Z. En él se aplica la transformada Z a: el análisis de secuencias y sistemas


de tiempo discreto, la representación de sistemas mediante funciones de sistemas, los diagramas de
polos y ceros, así como al análisis de la estabilidad de los sistemas de tiempo discreto.

Tema # 4: Filtros digitales. En este tema el estudiante debe diseñar y analizar distintos tipos de
filtros digitales IIR y FIR, además saber aplicar los métodos de aproximación para filtros
analógicos: aproximantes de Butterworth, Chebyshev 1 y 2, elíptica y Bessel. Diseñar filtros IIR
mediante analogía entre las ecuaciones en diferencia finita y las ecuaciones diferenciales, mediante
la invarianza a la respuesta impulsiva y la invarianza al escalón, y mediante transformaciones
bilineales. También dominar el diseño de filtros FIR mediante: muestreo en frecuencias,
enventanado, y optimización. Comparación entre los filtros digitales IIR y FIR y transformación de
frecuencias en el dominio del tiempo discreto.

Tema # 5: Secuencias aleatorias. Aquí se profundizan los conocimientos acerca de los procesos
estocásticos de tiempo discreto, la caracterización estadística y la caracterización probabilística de
las secuencias aleatorias, los periodogramas promedio y cruzados, el comportamiento de las
secuencias aleatorias ante sistemas lineales, así como la utilización de la magnitud de la coherencia
cuadrada.

Tema # 6: Estructuras para sistemas lineales e invariantes en el tiempo (LTI). El objetivo en


este tema es conocer los problemas asociados con la precisión finita de los procesadores digitales de
señales y las propiedades de diversas estructuras ante tales problemas. Se analizan diversas
representaciones de los sistemas LTI, la sensibilidad, el ajuste de escala, y diversos tipos de ruidos.

Tema # 7: Muestreo, Interpolación y Diezmado de Secuencias. En este tema se analizan las


propiedades en los dominios del tiempo y de la frecuencia de los sistemas discretos muestreados,
diezmados e interpolados. Además se analizan sistemas sencillos con razón de muestreo múltiple y
los filtros polifase.

Tema # 8: Transformada de Hilbert , Cepstrum y Sistemas Homomórficos. En él se persigue


conocer los fundamentos y la aplicación de la transformada de Hilbert en el establecimiento de las
relaciones entre la parte real y la parte imaginaria, o la magnitud y la fase de la transformada de
Fourier de tiempo discreto, saber diseñar transformadores de Hilbert, así como saber calcular y
utilizar las partes analíticas y antianalíticas de secuencias.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 5

La computación como complemento en la enseñanza del PDS.


El actual desarrollo de los dispositivos electrónicos y microelectrónicos ha disminuido los costos de
producción y de ventas de las computadoras personales, propiciándose un gran desarrollo en los
recursos de software y hardware lo que favorece un vertiginoso avance en el uso de la computación
tanto desde el punto de vista científico como educacional en la aplicación de las computadoras
como medio auxiliar del proceso de enseñanza-aprendizaje.

La Enseñanza Asistida por Computadora (EAC), podemos definirla como el proceso de enseñanza y
aprendizaje que incorpora a la computadora como elemento para añadir una nueva dimensión y
producir cambios cualitativos que ayuden a superar la contradicción planteada entre el volumen
creciente de información que deben asimilar los estudiantes y la duración limitada de los períodos
de aprendizaje, en un mundo que reclama una creciente calidad profesional.

Al incluir la computadora en este proceso se valora entre otras cosas la necesidad real de su
utilización así como la creación y desarrollo de diferentes capacidades en los alumnos que
favorezcan su futuro desempeño como profesionales.

Dentro de las formas consideradas como clásicas para incorporar la computadora al proceso de
enseñanza aprendizaje encontramos la simulación, la cual es un proceso que genera un ambiente
representativo del objeto de estudio, que ayuda al alumno a construir una imagen que modela el
objeto de referencia mediante la experimentación.

La simulación aporta, entre otras cosas, la posibilidad de alterar diferentes parámetros y observar
los efectos que se producen, para los cual se puede manipular a voluntad el transcurso de la variable
tiempo, y observar fenómenos transitorios que no se perciben fácilmente en la realidad, además es
un medio libre de riesgos, porque no se opera sobre el objeto en sí, sino sobre un modelo
representativo de éste. Así, la enseñanza asistida por computadora motiva al estudiante y lo entrena
en el uso de una herramienta de trabajo normal en cualquier profesión.

En general la simulación utilizando computadoras personales tiene gran aplicación como medio de
enseñanza, porque permite que el alumno en breve tiempo resuelva problemas que en ocasiones
pueden ser complejos, aprenda procedimientos, interprete las características de diferentes
fenómenos, tome decisiones, compare resultados de diferentes variantes de un mismo sistema, etc

Con este texto el educando simula sistemas de procesamiento digital, utilizándose para ello señales
del mundo real previamente adquiridas, discretizadas y almacenadas en disco, o generadas mediante
simulación, utilizando el propio paquete MATLAB.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 6

Para el diseño y simulación mediante computadoras de sistemas de PDS se han desarrollado


diversos paquetes de programas. En los primeros años de su enseñanza, algunas universidades
desarrollaron software para estos fines, los cuales luego ganaron popularidad gracias a sus
potencialidades, como lo fue el Personal Computer-Digital Signal Procesing (PC-DSP), el cual es
un paquete de software usado para el análisis, diseño, e implementación de señales y sistemas de
tiempo discreto que fue escrito para proveer a los estudiantes de un ambiente integrado de
procesamiento de señales en el cual los problemas reales de procesamiento digital de señales
pudieran ser resueltos. Este software emplea una interfaz de usuario interactiva y para su uso no es
necesario poseer conocimientos previos de programación, pudiendo correr en microcomputadoras
IBM-AT con poca capacidad de memoria.

No obstante, desde mediados de la década de los años 90 los dos sistemas que más han ganado
popularidad para el diseño y simulación en computadoras de sistemas de PDS son el LabView de
National Instruments y el MATLAB de la MathWork.

El LabView ha sido desarrollado para tareas de medición, procesamiento de señales, control, etc.
El mismo se caracteriza por usar una interface de usuario gráfica y opera mediante la construcción
de programas denominados Instrumentos Virtuales (VI) en los cuales ocurre la presentación de la
información de una manera amena y eficiente. Este software posee la opción de ejecutar múltiples
tareas de manera simultánea y además se pueden ejecutar otras aplicaciones, mientras se corre una
aplicación. Posee gran cantidad de instrumentos virtuales implementados, los cuales ayudan
grandemente en la programación y tiene funciones específicas para: generación y procesamiento de
señales, filtrado, enventanado, tratamiento estadístico, regresión, álgebra lineal, así como para el
trabajo con diferentes tipos de arreglos.

Utilización del paquete MATLAB en el PDS


Dentro de las herramientas de software utilizadas en la actualidad tanto para la investigación
científica como para la enseñanza encontramos el paquete MATLAB de MathWork, el cual es un
sistema interactivo y además un lenguaje de programación fácil con un ambiente funcional y con
amplias facilidades gráficas lo que hace posible observar el resultado del procesamiento y
comprender mejor, operaciones complejas. Su elemento fundamental de información es una matriz
numérica rectangular que puede poseer elementos complejos y que no requiere dimensión, esto
permite la solución de muy diversos problemas matemáticos en lapsos pequeños de tiempo y en la
forma en que los mismos han sido escrito matemáticamente. Como sabemos, la matemática es el

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 7

lenguaje común de muchas ciencias e ingenierías, por lo que el basamento del MATLAB lo hace
una herramienta accesible y poderosa, por sus bloques fundamentales de matrices, arreglos de datos,
gráficos etc.

Una de las ventajas del MATLAB es que posee una poderosa biblioteca de funciones ya
implementadas, muchas de las cuales son intrínsecas del software, otras vienen recogidas en
diferentes toolboxes para disciplinas específicas, y además brinda la facilidad de que el usuario cree
sus propias funciones sin que haya diferencia a la hora de usarlas, lo cual permite un desarrollo
constante del MATLAB. Como ejemplo de los diferentes toolboxes podemos mencionar el de
procesamiento de señales (Signal Processing Toolbox) que consta con comandos para procesar
señales de una y dos dimensiones, análisis espectral, filtrado digital, análisis de la transformada
rápida de fourier, aritmética compleja, etc, el toolbox de control de sistemas (Control System
toolbox) que incluye comandos para la ingeniería del control y la teoría de sistemas, el de estadística
(Statistics Toolbox),el de señales y sistemas (Signals and Systems toolbox) entre otros, los cuales
son de gran ayuda para el programador ya que agrupan funciones comúnmente usadas en una u otra
rama de las ciencias. Este sistema posee una ayuda (help) que puede ser invocada en cualquier
momento sobre un comando específico, lo cual favorece en gran medida la programación.

Todo esto hace del MATLAB una herramienta de software ideal para el estudio del procesamiento
digital de señales.

Independientemente de que no es requisito de este texto un conocimiento profundo de MATLAB,


el alumno puede ampliar sus conocimientos sobre esta materia consultando el siguiente texto:

• Signal Processing Toolbox, for use with MATLAB, T. P. Krauss, L. Shure, and J. N. Little,
The Math Works Inc., 1993.

Por otra parte, diversos eminentes profesores de las principales universidades del primer mundo, así
como destacados científicos de varias instituciones de estos países, han publicado algunos textos
dedicados también a la aplicación del MATLAB en el Procesamiento Digital de Señales. Tales
textos pueden servir como complemento de este, así como son complementos unos de otros entre sí.
Algunos de ellos, organizados por fecha de publicación, son los siguientes:

• Digital filters. A computer laboratory textbook, R. Mersereau and M. Smith, John Wiley &
Sons, Inc., 1993.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Introducción 8

• Computer-Based Exercises for Signal Processing using MATLAB, C. S. Burrus, J. H.


McClellan, A. V. Oppenheim, T. W. Parks, R. W. Schafer, and H. W. Schussler, Matlab
Curriculum Series, Prentice Hall, Englewood Cliffs, NJ, 1994.

• Signal processing algorithms in MATLAB, Stearn and David, Prentice Hall Signal Processing
Series, 1996.

Además, diversos textos publicados recientemente dedicados al Procesamiento Digital de Señales


incluyen en los ejercicios propuestos algunos en los que debe utilizarse el MATLAB. Entre ellos
pueden citarse:

• Digital Signal Processing. Principles, algorithms, and applications, J. G. Proakis, and D. G.


Manolakis, Third Edition, Prentice Hall, NJ, 1996.

• Random Signal Processing, D. F. Mix, Electrical Engineering Series, Prentice Hall, Englewood
Cliffs, NJ, 1996.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 1

Secuencias en el dominio del tiempo

En el análisis de los sistemas de procesamiento de señales de tiempo discreto las secuencias


son generadas y manipuladas de diferentes formas, una vez estudiado el tema #1: Secuencias
en el dominio del tiempo, el estudiante debe saber realizar operaciones con secuencias de
tiempo discreto en el dominio del tiempo y también conocer las clases de señales y la
clasificación de las secuencias.

Con la realización de los ejercicios que a continuación se proponen se podrán realizar


operaciones elementales con matrices, generación de distintos tipos de secuencias así como se
conocerán funciones propias del MATLAB para generar secuencias útiles en el
procesamiento digital de señales.

Se podrán determinar gráficamente las partes de una secuencia. Así como parámetros de las
mismas, Periodicidad, medidas de distancia, etc.

En el anexo I se encuentran algunas de las respuestas a los ejercicios lo que permitirá ir


corrigiendo posibles errores y comparar diferentes variantes de solución, , Además el anexo
IX recoge las funciones del MATLAB que pueden ser de mayor utilidad agrupadas por
temas. Todo esto permitirá una mejor comprensión desde el punto de vista gráfico y una
profundización de lo estudiado en clases.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo. 10

Ejercicios

1. Genere una matriz cuadrada T(4x4)cuyo determinante (det) no sea nulo, un vector columna
t1(1x4) y un vector fila t2(4x1).
a). Calcule:
El producto matricial o producto interno de t1 y t2.
El vector fila correspondiente al producto de arreglos de t1 y t2.
b). Determine la matriz inversa de T (inv) y el resultado de multiplicar T por su inversa.
c). Determine la descomposición en valores singulares de T (svd) y compruebe el resultado.

2. Genere las siguientes secuencias y trácelas en una figura (plot) indicando n en el eje de las
abcisas.
a) x1[n] = 0.65δ[n], -15 ≤ n ≤ 15.
b) x2[n] = sen(3πn + π/4), -20 ≤ n ≤ 20.
c) Exponencial alternante, x3[n], muestreada a 100 muestras por segundo.
d) Un impulso en base a la suma de escalones.
e) Un escalón en base a la suma de impulsos.
f) La secuencia y[n] = x3[-n + 2], siendo x3[n] la generada en el inciso c).
g) La secuencia de ondas triangulares
n
 20 0 ≤ n < 20,
 n
x5[n] = 2 − 20 ≤ n < 60,
 20
 n −4 60 ≤ n < 80.
 20

h) El diente de sierra
 n
 0 ≤ n < 20
x6[n] =  20
n
 −2 20 ≤ n < 40.
 20

3. Para la secuencia compleja


x4[n] = (0.6 + j0.7)n, 0 ≤ n ≤ 100
Genere y grafique:
a) Las partes real e imaginaria.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo. 11

b) La conjugada.
c) Su magnitud y argumento.
d) La partes par e impar.

4. En la carpeta nombrada “señales” que se encuentra en el disquete que acompaña este texto
encontrará el fichero nombrado “signal1.mat”. Este contiene dos segmentos de tres segundos
cada uno de señales electrocardiográficas (ECG) que se han grabado en formato MATLAB
(extensión .mat), con nombres de variables “ecg1” y “ecg2”. Las mismas han sido digitalizadas,
luego de pasar por un filtro activo de premuestreo (anti-aliasing) con banda de paso de 0.01 a 100
Hz, utilizando un convertidor A/D unipolar con frecuencia de muestreo de 500 Hz y 11 bits de
resolución sobre un rango de 0-10mV, lo que se corresponde con valores de las muestras en el
rango de 0 a 2047, por lo que el valor 1024 corresponde con el nivel de 5 mV. Utilizando la
secuencias “ecg1” y “ecg2 del fichero “signal1.mat”:
a) Calcule sus valores medios.

b) Elimínele sus niveles de corriente directa y grafíquelas.

d) Grafíquelas con su eje de abcisas convertido a unidades de tiempo en lugar de número de


muestras. Recuerde que la frecuencia de muestreo es de 500 Hz.

e) Calcule sus potencias promedio con el nivel de la componente directa (DC) incluido y con el
nivel DC suprimido. Compruebe sus resultados teniendo en cuenta la potencia de la
componente directa.

5. De la secuencia que posee nombre de variable “ecg1” que se encuentra en el fichero


“signal1.mat” de la carpeta de señales, tome el latido que se encuentra en las muestras
correspondientes al intervalo (501:1012) y asígnelas a la variable “ec”; esto es, a la secuencia
ec[n].
a). Elimine el nivel de corriente directa de la secuencia ec[n].

b). Genere y observe la autocorrelación (xcorr) de la secuencia periódica


b = [ec ec ec];

c). Genere y observe la autocorrelación de la secuencia cuasiperiódica ecg1[n]. Analice el


resultado obtenido y compárelo con el obtenido para el caso de la secuencia absolutamente
periódica ec[n].

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo. 12

6. Genere y observe las secuencias x[n] y y[n] dadas por:


» t = [0:0.001:1];
» x = 10*sin(2*pi*10*t).*exp(-4*t);
» y = 1-[0:100]/100;
a) Utilizando la función xcorr de MATLAB grafique la secuencia de correlación entre x[n] y
y[n].

b) Haga un análisis del resultado obtenido y proponga una solución que resuelva cualquier
discrepancia entre sus conocimientos teóricos y el resultado que ofrece MATLAB.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2

Transformada de Fourier y Respuesta de Frecuencias

La transformada de Fourier juega un papel fundamental en el análisis de sistemas de tiempo


discreto en el dominio de la frecuencia, por lo cual, saber representar estos sistemas, así
como conocer y aplicar el concepto de respuesta de frecuencias, y las propiedades de la
transformada de Fourier de tiempo discreto, están dentro de los objetivos fundamentales de
este tema.

Con los siguientes ejercicios y utilizando en muchos de ellos señales reales como es el caso
de las señales electrocardiográficas, se estudiarán las respuestas de frecuencias de diversos
sistemas, la Transformada de Fourier de tiempo discreto (DTFT) de secuencias elementales
así como sus propiedades, además, se verán distintos tipos de secuencias y sus espectros.

También podrán ser verificadas algunas implicaciones del teorema de la convolución lineal
en el dominio de la transformada de Fourier. y se obtendrán criterios gráficos para la
selección del número de puntos en el cálculo de la DFT de las diferentes secuencias.
También, se ejercitarán conceptos como densidad espectral de potencia (DEP), principio de
ortogonalidad y otros.

Al igual que en el tema 1 en el Anexo II se encuentran algunas de las respuestas de estos


ejercicios para su verificación..

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2: Transformada de Fourier y respuesta de frecuencias. 14

Ejercicios

1. Cargue (load) las señales electrocardiográficas que se encuentran en el fichero “signal1.mat” de


la carpeta de señales. Elimine el nivel de corriente directa de la secuencia ecg1[n] y calcule su
espectro en un número de puntos, k, que sea potencia de dos. Esta señal está muestreada a 500
Hz. Determine:
a) El punto k correspondiente a los 60 Hz.

b) El nivel de corriente directa de la señal a partir de su espectro y a partir del valor medio de la
secuencia.

2. Calcule la densidad espectral de potencia (DEP) de la secuencia ecg1[n] que se encuentra en el


fichero “signal1.mat” de la carpeta de señales. Grafique la secuencia de DEP en el intervalo 0 ≤ f
≤ 100 Hz. Determine:
a) La banda de frecuencia en que se concentra la mayor cantidad de potencia de la señal
electrocardiográfica utilizada.

3. Utilizando la exponencial compleja

c[n] = e jwo n , n = 0, 1, … , N-1.

a) Para wo = 6π/N y N = 16, visualice la secuencia c[n] y su DFT X16[k]. Observe la cantidad
de puntos de la transformada que son ceros y analice este resultado teniendo en cuenta que: 1)
la exponencial compleja es también el operador base de la DFT y 2) el principio de
ortogonalidad.

b) El dual de la exponencial compleja es el impulso desplazado cuando wo es un entero múltiplo


de 2π/N. Calcule la secuencia c1[n] de 16 puntos cuya DFT es X16[k] = exp(j6πk/16).
Argumente su resultado en base al principio de dualidad entre los dominios del tiempo y la
frecuencia.

c) Utilice ahora wo = 5π/N para construir una nueva secuencia c1[n] y calcule la nueva DFT
Y16[k]. Explique por qué no hay puntos de valor cero en la transformada para este caso. Tenga
en cuenta calcular el período de la secuencia c1[n].

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2: Transformada de Fourier y respuesta de frecuencias. 15

4. Genere el tren de impulsos de longitud 207 muestras


8
p[n] = ∑ δ[n
r=0
- rM o ] , con Mo = 23.

a) Calcule la DFT de 207 puntos de p[n]: P207[n] y justifique el resultado obtenido.

b) En base a la justificación dada anteriormente argumente el resultado de calcular la DFT en


207 puntos también de
22
p1[n] = ∑ δ[n
r=0
- rM 1 ] , con M1 = 9.

Tenga presente que en ambos casos se utilizan secuencias de (9)(23) = 207 muestras.

c) Utilizando p[n], y teniendo en cuenta que en ella las últimas 22 muestras son cero, calcule su
DFT en tan solo 200 puntos. Argumente el resultado.

5. Para preservar la propiedad de la TF que dice “un desplazamiento en un dominio equivale a la


multiplicación por una exponencial compleja en el otro”, se define el desplazamiento utilizando
el operador módulo; así
 x[n - m], n = m, m + 1, ... , N - 1
x[n − m] → x[((n - m)) N ] = 
x[n + N − m], n = 0, 1, ... , m - 1

lo que asume que 0 ≤ m < N.

La DFT de una secuencia desplazada circularmente es la DFT de la secuencia original


multiplicada por el vector exponencial compleja WNkm .
a) Utilizando la secuencia x[n] = δ[n], n = 0, 1, …, 15; grafique la secuencia x[n] y la
secuencia y[n] = x[n-1].

b) Obtenga la DFT en N = 16 puntos de x[n] y y[n], argumentando el resultado.

c) Para y[n] = x[n-m] con m = N/2 = 8, obtenga su DFT en 16 puntos y justifique el resultado.

6. Utilizando la respuesta impulsiva h[n] de un sistema LTI, que se encuentra guardada en la carpeta
de señales con nombre de fichero “respimp1.mat” y nombre de variable “h”, calcule su respuesta
de frecuencias expresando el eje de frecuencias en unidades de Hz [Este sistema trabaja a
frecuencia de muestreo de 500 Hz]. Determine:
a) El tipo de respuesta de magnitud contra frecuencias del sistema.

b) Si el sistema es dispersivo o no, en base a su respuesta de fase. Para confirmar su análisis


puede utilizar también la respuesta de demora de grupo del sistema.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2: Transformada de Fourier y respuesta de frecuencias. 16

c) Las partes real e imaginaria de la respuesta de frecuencia.

7. Utilizando las secuencias ecg1[n], que se encuentra en el fichero “signal1.mat”, y h[n]


correspondiente a la respuesta impulsiva de un sistema, la que se encuentra en el fichero
“respimp1.mat”, ambas ubicadas en la carpeta de señales, determine:
a) La respuesta del sistema (secuencia de salida y[n]) mediante su convolución con la señal de
entrada ecg1[n].

b) La respuesta en el tiempo del sistema, y[n], a través del dominio de la transformada de


Fourier.

c) Compare los resultados.

8. Se sabe que la resolución espectral de una secuencia de longitud N se aumenta incrementando el


número de puntos, M, en que se calcula su transformada. No obstante, en este ejercicio
comprobará que también depende del número de muestras que se tomen de la secuencia.
a) Para un número entero de muestras por ciclo.
a1) Genere y grafique la secuencia
» n1 = [0:1/8:1-1/8];
» x1 = sin(2*pi*n1);
observe que esta posee frecuencia de 1 Hz y se ha muestreado a 8 Hz, lo que implica que
posea 8 muestras por ciclo. De ella se han tomado sus primeras N = 8 muestras; esto es, n =
0, 1, …, 7.

a2) Calcule la DFT de x1[n] en M = 8 puntos. Observe los valores de la DFT y grafique su
magnitud expresando el eje de abcisas en Hz-s.

a3) Justifique teóricamente los valores de la DFT obtenidos.

a4) Compruebe que, en general, para cualquier número natural K > 2, y para cualquier número
natural M, el espectro de
x[n] = Asen(2πn/K), n = 0, 1, 2, …, MK-1

toma valores
 0, k≠M

X[ k ] = 
AMK
 , k=M
 j2

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2: Transformada de Fourier y respuesta de frecuencias. 17

b) Para un número no entero de muestras por ciclo.


b1) Genere y grafique la secuencia
» n2 = [0:1/8:1+1/8];
» x2 = sin(2*pi*n2);

observe que x2[n] tiene como origen la misma señal continua x(t) que x1[n] pero tomando
ahora 10 muestras; esto es, n = 0, 1, …, 10; por lo que N = 10.

b2) Calcule la DFT de x2[n] en M = 10 puntos. Observe los valores de la DFT y grafique su
magnitud expresando el eje de abcisas en Hz-s.

b3) Justifique teóricamente los valores de la DFT obtenidos. Para ello tenga presente la
propiedad del enventanado de la transformada de Fourier. El fenómeno ocurrido se conoce
como fuga (“leakage”) espectral.

c) No siempre es posible tomar un número entero de muestras por ciclo de una señal, ya que
generalmente las señales deterministas están compuestas por múltiples componentes
espectrales, o peor aún, son estocásticas; en tales casos puede reducirse la fuga espectral
aumentando el ancho de la ventana de señal a la que se le calcula la DFT.
c1) Genere y grafique la secuencia
» n3 = [0:1/8:40+1/8];
» x3 = sin(2*pi*n3);

observe que x3[n] tiene como origen la misma señal continua x(t) que x1[n] y x2[n], pero
tomando ahora 40 ciclos completos más dos muestras del ciclo 41; esto es, n = 0, 1, …,
321; por lo que N = 322.

c2) Calcule la DFT de x2[n] en M = 322 puntos. Observe los valores de la DFT y grafique su
magnitud expresando el eje de abcisas en Hz-s.

c3) Compare la amplitud de las líneas espectrales, adyacentes a la frecuencia del tono, que se
obtienen en los incisos b) y c).

c4) Verifique que la fuga espectral no se modifica con el incremento de la resolución


espectral; esto es, con el número de puntos de la transformada, utilizando M = 512 o 1024
puntos

9. a) Genere un pulso rectangular con 16 muestras de amplitud 0.5 y duración 128 muestras, de
forma tal que las muestras diferentes de cero queden en la zona central del pulso.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 2: Transformada de Fourier y respuesta de frecuencias. 18

b) Obtenga el espectro de magnitud contra frecuencias del pulso generado a través de la FFT.
Explique los valores obtenidos de: intervalo de frecuencias entre líneas espectrales, ancho del
lóbulo principal y posición de los ceros de la envolvente del espectro.

c) Analice las consecuencias sobre los resultados obtenidos si se utiliza un pulso rectangular de
32 muestras de amplitud 0.5 con 128 muestras de duración igualmente.

d) ¿Que sucede si el ancho del pulso es de 8 muestras y su duración siguen siendo 128 muestras?

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 3

Transformada Z

El conocimiento y la aplicación de la transformada Z (TZ) tiene gran importancia pues


permite obtener una generalización de la transformada de Fourier que incluye una
amplia gama de secuencias y nos brinda la utilidad del uso de la teoría de variable
compleja, entre otras cosas.

La utilización en sistemas de tiempo discreto, representación de sistemas mediante


funciones de sistemas, diagramas de polos y ceros, así como en el análisis de estabilidad
están dentro de las ventajas que proporciona el uso de la transformada Z.

En los siguientes ejercicios se estudiará la definición y cálculo de la transformada Z, sus


regiones de convergencia, la TZ inversa, así como propiedades de la TZ. Se obtendrán
diagrama de polos y ceros de los sistemas de tiempo discreto y respuesta de frecuencias a
partir de los mismos.

También se analizará la estabilidad y causalidad a partir de la función de sistema y sistemas


de tiempo discreto de primer y segundo orden. En el Anexo III se encuentran algunas de las
respuestas de los ejercicios de este capítulo.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 20

Ejercicios

1. Para el sistema cuya relación de transferencia


M
−k
∑ bkz
H(z) = k=0
N
−j
∑ a jz
j= 0

posee como coeficientes de los polinomios en z-1 del numerador y denominador los respectivos
vectores
» bk = [ 0.0026 0.0155 0.0388 0.0517 0.0388 0.0155 0.0026 ]
» aj = [ 1.0000 -2.3797 2.9104 -2.0551 0.8779 -0.2099 0.0218 ]

a). Represéntelo mediante:


Secciones de segundo orden en cascada puede utilizar la función zp2tf de MATLAB .
Secciones de segundo orden en paralelo utilizando la función residuez de MATLAB.
En cada caso compruebe que la respuesta de frecuencias y la respuesta de demora de grupo de
la representación mediante descomposición es igual que la respuesta de frecuencias y la
respuesta de demora de grupo del sistema total sin descomponer.

b). Obtenga la respuesta impulsiva a partir de los polos y sus residuos, calculados durante la
representación en serie. Analice la causalidad del sistema.

2. Dada la función de sistema del filtro pasobajo

Y(z) 0.0022 + 0.0089z −1 + 0.0134 z −2 + 0.0089z -3 + 0.0022z -4


H(z) = =
X(z) 1 − 2.6926z −1 + 2.8674 z − 2 - 1.4035z -3 + 0.2645z -4

a) Determine su respuesta impulsiva, h[n], utilizando la función impz de MATLAB.

b) Filtre la secuencia ecg1[n] que se encuentra en el fichero “signal1.mat” de la carpeta de


señales, utilizando la opción filter de MATLAB.

c) Filtre la secuencia ecg1[n] mediante su convolución con la respuesta impulsiva h[n].


Compare con el resultado obtenido utilizando filter.

d) Calcule y trace el diagrama de polos y ceros (tf2zp) de la función de sistema dada. Analice
su estabilidad.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 21

3. Se dispone de los ceros y polos de la función de sistema, H(z), de un filtro digital pasobajo de
quinto orden diseñado mediante la transformación bilineal, el que trabaja a una frecuencia de
muestreo de 500 Hz. Estos son:

Ceros: c : -1.0007 ± j0.0005, -0.9997 ± j0.0008, -0.9991


Polos p : 0.2896 ± j0.8711, 0.4936 ± j0.5675, 0.6524
Ganancia: k = 0.0079

a) Obtenga la función de sistema total H(z) utilizando la función de MATLAB zp2tf y trace su
respuesta de frecuencias.

b) Trace el diagrama de polos y ceros del sistema utilizando la función zplane de MATLAB.

c) Obtenga una subfunción de segundo orden para cada una de las parejas de polos y ceros
complejos conjugados, y un término de primer orden apareando el cero real con el polo real.
Utilice zp2tf. La ganancia debe distribuirse por igual para las tres subfunciones.

d) Trace simultáneamente en la misma figura la respuesta de frecuencias de cada una de las


subfunciones obtenidas (utilice hold on) y analice cual es la contribución de cada subfunción
en la respuesta total. Analice en cada respuesta de frecuencias cómo depende el factor de
sobrecresta de la proximidad del par de polos al círculo de radio unitario.

4. Con este problema se probarán algunas de las propiedades de la transformada Z mediante la


utilización de MATLAB. Se dispone de la función de sistema H(z) dada por los coeficientes del
numerador y denominador bk y aj respectivamente:
» bk = [ 0.0485 0.1940 0.2910 0.1940 0.0485 ]
» aj = [ 1.0000 -0.8808 0.9803 -0.4270 0.1127 ]

Calcule las 30 primeras muestras de la respuesta impulsiva (impz) y obsérvela. Usted


dispone ahora del par transformado
TZ
h[n] H(z)

Determine la posición de los polos y ceros (roots). Dibújelos (zplane).

a) Si se produce el abatimiento
TZ
h[-n] H(z-1)

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 22

a1) Realice un abatimiento de los coeficientes del numerador y denominador de H(z). Llame
a la nueva función H1(z).

a2) Determine la posición de los polos y ceros de la nueva función H1(z). Explique lo que ha
ocurrido.

a3) Determine la respuesta impulsiva del sistema correspondiente a H1(z). Justifique el


resultado.

a4) Compare las respuestas de magnitud y fase contra frecuencias de los sistemas H(z) y
H1(z). Comente sobre la diferencia entre ambas.

5. Sean los sistemas pasobanda dados por


0.21
H1(z) =
1 − 0.545z − 1 + 0.778z − 2

0.07
H2(z) =
1 − 1.52z − 1 + 0.88z − 2

a) Trace la respuesta de frecuencias de cada uno de ellos.


b) Trace la respuesta de frecuencias de la cascada de ambos sistemas.
c) Trace la respuesta de frecuencias de la combinación paralelo de ambos. Compárela con la
obtenida en el inciso b).

6. Dada la función de sistema H(z), en la cual los polos y ceros se indican en notación polar

( z − rc e jw c )( z − rc e − jw c )
H ( z) = jw − jw
( z − rp e p )( z − rp e p )

a) Utilizando rc = 0.8, wc = 2, rp = 0.7 y wp = 0.5:


a1) Trace el diagrama de polos y ceros.
a2) Determine los coeficientes de H(z) en forma de cociente de polinomios en z-1. Puede
utilizar la función zp2tf de MATLAB.
a3) Trace las respuestas de magnitud y fase de H(z) expresando el eje de frecuencias en
unidades de radianes-segundos; esto es, 0 ≤ w ≤ π.

b) Repita los pasos del inciso a) modificando los radios de los ceros haciendo rc = 0.98. Saque
conclusiones.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 23

c) Repita los pasos del inciso a) pero modificando ahora los radios de los polos haciendo rp =
0.9. El resto de los parámetros de H(z) manténgalos con los valores que se indican en a).
Saque conclusiones.

d) Repita los pasos del inciso a) pero utilizando ahora wp = 0.3. Saque conclusiones.

e) Repita los pasos del inciso a) pero utilizando ahora wc = 1. Saque conclusiones.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4

Filtros Digitales

Una clase particularmente importante de sistemas LTI digitales son los filtros IIR y FIR,
por lo que saber diseñar y analizar distintos tipos de filtros digitales de este tipo así como
las propiedades de los mismos son de vital importancia para el procesamiento de señales.

Con los problemas propuestos en este capítulo se pretende ejercitar técnicas de diseño para
filtros digitales, y técnicas de diseño de filtros a partir de su equivalente analógico;
también se verán distintos métodos de aproximación para filtros analógicos: aproximantes
de Butterworth, Chebyshev 1 y 2, Legendre, elíptico y Bessel.

En este tema se tratará el diseño de filtros mediante: analogía entre las ecuaciones en
diferencia finita y las ecuaciones diferenciales, mediante la invarianza a la respuesta
impulsiva y la invarianza al escalón, y mediante transformaciones bilineales.

Se proponen comparaciones entre los métodos de diseño de filtros digitales a partir de un


equivalente analógico. Diseño de filtros FIR mediante: muestreo en frecuencias,
enventanado y optimización; así como comparación entre los filtros digitales IIR y FIR.

En el anexo IV se encuentran algunas de las respuestas a los problemas aquí propuestos.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 25

Ejercicios

1. a) Diseñe un filtro pasobanda con aproximante de Chebyshev 1 (cheby1) con :


• Amplitud máxima del rizado en la banda de paso: 1 dB.
• Atenuación mínima en la banda de parada: 30 dB.
• Frecuencia de muestreo: fs = 15 KHz.
• Frecuencias de esquinas de la banda de paso: 4500 y 5400 Hz.
• Frecuencias de esquinas de las bandas de parada: 4000 y 6000 Hz.

b) Obtenga la respuesta al impulso utilizando impz.

c) Trace sus respuestas de magnitud (freqz, abs) y fase (angle) contra frecuencias, así como
la característica de demora de grupo (grpdelay). Valore los resultados obtenidos.

2. a) Diseñe un filtro FIR pasobajo por el método de ventanas (fir1), con los parámetros siguientes:
• Orden: 18.
• Ventana: Kaiser con ß = 5.5.
• Frecuencia esquina de la banda de paso: fp = 2500 Hz.
• Frecuencia de muestreo: fs = 10 KHz.

b) Grafíque sus coeficientes (stem).

c) Trace su respuesta impulsiva utilizando impz. Compárela con los coeficientes del filtro.

d) Trace sus respuestas de magnitud y fase contra frecuencias, así como la característica de
demora de grupo. Valore los resultados obtenidos.

3. Cuando un filtro posee respuesta de magnitud contra frecuencias con rizado en las bandas de
paso y rechazo, tales ondulaciones implican una lógica partición de la respuesta de frecuencias
del filtro en bandas de paso, transición y rechazo. Sin embargo, para el caso de los filtros con
respuesta de magnitud monotónica esta partición no es evidente. Para el filtro FIR que trabaja a
una frecuencia de muestreo de 8 kHz, dado por:

H(z) = -0.1302 - 0.599z-1 - 1.0415z-2 - 0. 7812z-3 - 0. 1302z-4 + 0. 1302z-5 + 0.052z-6

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 26

Trace su respuesta de magnitud contra frecuencias (freqz). Observe que no existe una
división natural entre las diferentes bandas, al no poderse definir las frecuencias de esquina de
la banda de paso, fp, y la frecuencia esquina de la banda de rechazo, fr.

En tal caso, lo usual es especificar la frecuencia de corte como la frecuencia a la cual la


2
ganancia cae a -3 dB o 2 de su valor nominal en la banda de paso. Determine la frecuencia
de corte, fc, de H(z) en unidades de Hz.

Una convención para definir la desviación en la banda de paso, P, en los filtros con respuesta
de magnitud monotónica, es tomar como P el 90 % de la ganancia nominal en la banda de
paso (-0.915 dB). Determine el valor de P y de fp en la respuesta de magnitud de H(z).

Así mismo, para definir la frecuencia esquina de la banda de rechazo fr se utiliza por
convención aquella en la cual la ganancia cae al 10 % de su valor nominal en la banda de paso
(-20 dB). Determine el valor de R y de fr.

Construya el filtro de potencia complementaria al anteriormente diseñado; eso es, si la TF de


H(z) es H(ejw), encuentre el filtro de potencia complementaria H1(z), cuya TF es H1(ejw), y
que satisface que |H(ejw)|2 + |H1(ejw)|2 = 1. Compruebe su resultado trazando simultáneamente
en la misma gráfica las dos respuestas de magnitud cuadrática.

4. Este ejercicio está relacionado con el diseño de filtros FIR utilizando el método de muestreo en
frecuencias.
a) Diseñe un filtro FIR pasobajo de longitud 32 con frecuencia de corte nominal en ¼ Hz-s
haciendo
 1, k = 0, 1, ..., 7

H [ k ] =  0, k = 8, 9, ..., 24
 1, k = 25, 26, ..., 31.

donde H[k] es la DFT de 32 puntos de h[n]. Para ello:


Calcule h[n] tomando la parte real de la IDFT (ifft) de 32 puntos de H[k].

Trace la respuesta impulsiva, h[n], del filtro diseñado.

Trace las verdaderas respuestas de magnitud y fase contra frecuencias, evaluadas en 512
puntos en el intervalo 0 ≤ w ≤ 1 Hz-s.

Mida las amplitudes de los rizados en las bandas de paso y rechazo.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 27

Verifique si el filtro diseñado satisface los requerimientos de respuesta de magnitud a las


frecuencias especificadas como datos (frecuencias críticas). Valore si se logra un buen filtro
pasobajo.

b) Diseñe un segundo filtro reemplazando las 32 muestras de la DFT anterior por los valores

Hm[k] = (-1)kH[k].

Trace las muestras de Hm[k] y la respuesta impulsiva de este filtro. Compare con el inciso a).

Trace las verdaderas respuestas de magnitud y fase de este filtro evaluadas en 512 puntos
del intervalo 0 ≤ w ≤ 1 Hz-s. Verifique nuevamente si posee los valores apropiados de
respuesta de magnitud a las frecuencias especificadas.

Mida las amplitudes de los rizados en las bandas de paso y rechazo y compárelos con los
obtenidos en el inciso a).

Mida el ancho de la banda de transición. Saque conclusiones de todos los resultados


obtenidos.

c) Los dos diseños anteriores corresponden a casos especiales de la especificación más general

2πpk
−j
H p [k] = e N H[ k ]

para los casos en que p = 0 y p = N/2.


Determine le valor de p que minimiza la amplitud del rizado en la banda de paso haciendo
varios diseños dentro de esta familia de filtros. Tenga en cuenta valores de p enteros y no
enteros.

Determine si el mismo valor de p que minimiza la amplitud del rizado en la banda de paso
lo hace también en la banda de rechazo.

d) Con los valores de ancho de la banda de transición y amplitud de los rizados en las bandas de
paso y rechazo obtenidos en el inciso b) diseñe un filtro FIR utilizando el método de la
ventana de Kaiser y valore los méritos de ambas técnicas a partir de los resultados obtenidos.

5. En este ejercicio se analiza el efecto de considerar una banda de transición, dentro de la respuesta
de magnitud, en el método de diseño de filtros FIR mediante muestreo en frecuencias. Considere
la familia de filtros FIR de longitud 32 diseñados por el método de muestreo en frecuencias
cuyos valores de la DFT están dados por

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 28

 ( −1) k , k = 0, 1, ..., 7

β k=8

F[ k ] =  0 k = 9 , 10, ..., 23

β k = 24
 ( −1) k k = 25, 26, ..., 31.

donde el parámetro β representa la magnitud de la respuesta en las bandas de transición.

a) Diseñe un filtro con respuesta impulsiva h1[n] utilizando β = 0 mediante el procedimiento


siguiente:
Genere H1[k], la DFT de h1[n], evaluando F[k] para β = 0.

Calcule la parte real de la IDFT de H1[k] para obtener h1[n]. Trace la respuesta impulsiva y
las respuestas de magnitud y fase del filtro obtenido. Examínelas.

b) Diseñe otro filtro, h2[n] = 0.0625cos(πn/2), de longitud 32 a partir de n = 0. Este filtro lo


utilizará para controlar el valor de β en su diseño.
Genere el filtro cuya respuesta impulsiva sea
h[n] = h1[n] + βh2[n].

Experimente sistemáticamente con diversos valores de β y examine en cada caso la


amplitud del rizado en las bandas de paso y rechazo. Determine el valor de β que minimice
la amplitud del rizado en la banda de paso.

c) Utilizando β = 0.5 mida la amplitud del rizado y el ancho de la banda de transición.


Con los valores de amplitud del rizado y frecuencias esquinas de la banda de transición
medidos, diseñe un filtro FIR utilizando el método de enventanado con ventana de Kaiser.
Enumere las ventajas de cada uno de los métodos.

6. a) Diseñe de un filtro digital pasobajo con función aproximante elíptica (ellip) cuya frecuencia
esquina de la banda de paso sea wp = 3π/8, frecuencia esquina de la banda de rechazo wr =
5π/8, amplitud del rizado en las bandas de paso y rechazo δp = δr = 0.1. Tal filtro debe tener
como respuesta impulsiva una versión discretizada de la respuesta impulsiva que posee un
filtro analógico que presenta las mismas amplitudes del rizado en las bandas de paso y
rechazo, pero cuyas frecuencias esquinas en el campo analógico sean Ωp y Ωr. La frecuencia
de muestreo en el sistema en que opera el filtro digital es fs = 44 100 Hz (audio digital).
Utilice la función impinvar de MATLAB. Trace las respuestas de frecuencias y las

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 29

respuestas impulsivas de ambos filtros (analógico y digital) utilizando las funciones de


MATLAB freqs, freqz, impulse e impz.

7. El propósito de este ejercicio es comparar los resultados que ofrecen los métodos de diseño de
filtros IIR que parten de un equivalente analógico, basados en la invarianza de la respuesta
impulsiva y en la transformación bilineal. Para ello se utilizará como equivalente analógico un
filtro con función aproximante de Bessel.

a) Diseñe un filtro pasobajo analógico de quinto orden con función aproximante de Bessel
(besself). La frecuencia de corte debe ser fc = 10 Hz.
Trace sus respuestas de magnitud y fase contra frecuencias en el intervalo 0 ≤ f ≤ 150 Hz.
Determine si la respuesta de magnitud satisface los requerimientos de diseño. Analice la
linealidad de la respuesta de fase.

Construya la función de sistema, Ha(s), del filtro analógico.

b) En este inciso se diseña una versión digital mediante la invarianza de la respuesta impulsiva.
Utilizando la función impinvar de MATLAB transforme el filtro analógico Ha(s) en su
versión digital. Utilice frecuencia de muestreo fs = 300 Hz.

Trace las respuestas de magnitud y fase contra frecuencias del filtro digital. Compare ambas
respuestas con las de la versión analógica.

Observe que la función impinvar de MATLAB no hace una adecuada normalización de


los coeficientes del filtro digital que calcula, por lo que la respuesta de magnitud del filtro
obtenido no posee ganancia unitaria. Introduzca la modificación necesaria en los
coeficientes del filtro digital para que la respuesta de magnitud tenga ganancia
aproximadamente unitaria.

Modifique la frecuencia de muestreo hasta que consiga una versión definitiva de filtro
digital que brinde una respuesta de frecuencias más próxima a la que ofrece el filtro
analógico de partida.

Trace la característica de demora de grupo de la versión definitiva de filtro de Bessel


diseñado mediante el método de la invarianza a la respuesta impulsiva. Analícela.

Utilizando el filtro que diseñó con frecuencia de muestreo de 300 Hz, pero con ganancia
normalizada, introduzca una transformación de frecuencias digital pasobajo-pasobajo con el

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 30

fin de llevar la frecuencia de corte al mismo valor que exhibe la versión analógica. Observe
las consecuencias sobre la respuesta de fase y la característica de demora de grupo.

c) La función bilinear de MATLAB implementa la transformación bilineal del tipo


2  z − 1
 
T  z + 1

En este inciso se utilizará para obtener una versión digital de un filtro analógico ya diseñado,
para el cual no se realizó una predistorsión de frecuencias antes del diseño, como ocurre con
el filtro de Bessel obtenido en el inciso a).
Construya una versión digital del filtro analógico diseñado en el inciso a), utilizando en
este caso la transformación bilineal (bilinear). Utilice como frecuencia de muestreo fs =
1/T = 300 Hz. Fije el parámetro Fp en un valor apropiado que garantice que las respuestas
de magnitud del filtro analógico y digital sean lo más semejante posible.

Trace las respuestas de magnitud y fase contra frecuencias de este filtro digital. Compárelas
con las obtenidas por la versión analógica.

Trace la característica de demora de grupo de este filtro diseñado por el método de la


transformación bilineal. Compárela con la que posee el filtro diseñado mediante invarianza
de la respuesta impulsiva en el inciso b).

Descarte la posibilidad de predistorsión en frecuencias que ofrece la función bilinear de


MATLAB y ejecute las siguientes acciones:
I. Calcule la frecuencia de corte predistorsionada, que deba tener el filtro analógico, en
base a la frecuencia de corte que se desea para el filtro digital (10 Hz), la frecuencia de
muestreo (300 Hz) y el tipo de transformación bilineal que se utiliza.
II. Haga la transformación de frecuencias pasobajo-pasobajo analógica sobre el filtro
diseñado en el inciso a) para que tenga como frecuencia de corte la que calculó en el
paso anterior.
III. Ejecute la transformación bilineal sin utilizar la opción de predistorsión en frecuencias;
esto es, no utilice el parámetro Fp de la función bilinear. Compare los resultados de
las dos vías.

Trace la característica de demora de grupo de este segundo filtro diseñados por el método
de la transformación bilineal. Compárela con las que poseen los diseñado mediante

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 31

invarianza de la respuesta impulsiva en el inciso b) y mediante el primer paso de este


inciso.

Construya una señal escalón unitario o paso que posea inicialmente 10 “ceros” y luego 49
“unos”. Utilizando la función filter obtenga la respuesta a esta señal del mejor de los
filtros diseñados mediante el método de la transformación bilineal. Analice la amplitud de
la sobrecresta y el tiempo de establecimiento (número de muestras en alcanzar el 1% del
valor máximo absoluto).

d) En este inciso se utiliza nuevamente el método de la transformación bilineal, pero haciendo


una predistorsión de frecuencias antes de diseñar el filtro analógico; esto es, se descarta la
posibilidad de predistorsión en frecuencias que ofrece la función bilinear de MATLAB.
Haga un nuevo diseño de filtro analógico que tenga como frecuencia de corte
predistorsionada la que usted calcule, de forma tal que su versión digital, diseñada por el
2  z − 1
método de la transformación bilineal del tipo   tenga la misma respuesta de
T  z + 1

magnitud a 10 Hz que el filtro analógico diseñado en el inciso a). Compare sus resultados
anteriores.

Construya la función de sistema, Hbl(z), del filtro diseñado mediante la transformación


bilineal.

8. En los filtros digitales es muy común que la respuesta de magnitud en la banda de paso se
especifique con una desviación δp alrededor de 1; esto es 1-δp ≤ |H(ejw)| ≤ 1+δp para la banda de
paso. Se desea diseñar un filtro digital pasobajo, por el método de la transformación bilineal de
tipo 2(z-1)/(z+1), con función aproximante elíptica que cumpla al máximo con las
especificaciones siguientes. La respuesta de magnitud en la banda de paso debe poseer
ondulaciones en el rango 1± δp con δp ≤ 0.05 desde frecuencia cero hasta wp =8π/20. La banda
de rechazo debe comenzar en 9π/20 con una amplitud máxima δr = 0.03.
a) Calcule los coeficientes de la función de sistema del filtro utilizando las funciones de
MATLAB ellipord y ellip evaluadas para los parámetros indicados (Nota: Estas
funciones utilizan la transformación bilineal indicada). Tenga en cuenta que las unidades en
que se especifican los parámetros en el problema no son las mismas que utilizan las
funciones indicadas de MATLAB, por lo que se hace necesario una conversión. Trace la

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 32

respuesta de magnitud expresando el eje de frecuencias en unidades de rad-seg en el


intervalo [0, π]. Compruebe sus resultados.

b) Es muy posible que la respuesta de magnitud lograda en la banda de paso oscile entre 1 y 1-
δp en lugar de oscilar entre 1+δp y 1-δp. En tal caso:
Sustituya el valor de δp por el nuevo valor 2δp/(1+δp) y el valor de δr por el nuevo valor
δr/(1+δp); luego recalcule los coeficientes del filtro.

Multiplique los coeficientes del numerador por el factor (1+δp/2).

Compruebe el resultado.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5

Secuencias Aleatorias

En este tema el estudiante debe profundizar los conocimientos acerca de los procesos
estocásticos de tiempo discreto, así como el comportamiento de estos, ante sistemas LTI.

Entre los objetivos fundamentales de este tema y por lo tanto, de los ejercicios que en él se
proponen, están definir, y caracterizar estadísticamente secuencias aleatorias (SA). También la
caracterización probabilística de SA con independencia del tiempo. Se verán expresiones para
las curvas de distribución de frecuencias y para las funciones de densidad probabilística (fdp)
así como las transformaciones de la fdp de una variable aleatoria (VA).

En algunos de estos ejercicios se podrán determinar la densidad espectral de potencia de


secuencias aleatorias, el periodograma promedio y el periodograma cruzado; la
transformación lineal de secuencias estacionarias ergódicas y la densidad espectral de
potencia de la secuencia de salida de un sistema LTI y de secuencias cruzadas. Además, se
estudian algunos tipos de secuencias de ruido utilizadas en la práctica.

Al igual que en temas anteriores ,el anexo V recoge varias de las respuestas a los ejercicios
de este tema.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 34

Ejercicios

1. Genere tres secuencias aleatorias(SA) con fdp de Rayleigth

 x x2
 e − 2 λ2 , x≥0
 2
f(x) =  λ con λ > 0 y real.
 0, x<0


que posean I) 500 valores, II) 2000 valores y III) 8000 valores. Utilice λ = 2.

Para cada una de las realizaciones trace el histograma y superpóngale la curva teórica de fdp
de Rayleigh (hold on). Tenga presente normalizar los ejes verticales de ambas figuras a la
misma escala.

Para cada una de las realizaciones estime su valor medio, la varianza y la desviación estándar a
partir de los valores de las secuencias utilizando la función de MATLAB mean. Compare
los valores estimados con los que se calculan utilizando expresiones teóricas (en función de
λ). Analice el grado de desviación ente los cálculos teóricos y los estimados.

Calcule la desviación estándar de cada realización utilizando la función de MATLAB std.

2. En este ejercicio observará el significado de la función de densidad probabilística (fdp) conjunta


entre dos secuencias aleatorias estadísticamente independientes.
a). Trazado de las fdp Gaussiana teórica
Genere y trace una curva teórica de fdp Gaussiana con valor medio cero y varianza uno (σ2 =
1) utilizando como índice un vector i = -10:0.5:10. Llámele fdp1.

Genere y trace otra curva teórica de fdp Gaussiana con valor medio cero pero con
varianza tres (σ2 = 3). Llámele fdp2.

Calcule el área bajo ambas curvas de fdp.

Genere la fdp conjunta de ambas curvas bajo la suposición de independencia estadística.


Trácela utilizando mesh.

Utilice la función contour de MATLAB para trazar las curvas de nivel de la superficie de
fdp conjunta.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 35

Repita los pasos anteriores utilizando otros juegos de varianzas.

b). Trazado de la fdp conjunta estimada de dos realizaciones.


Genere dos SA suficientemente largas con fdp Gaussiana. Haga el valor medio de ambas
igual a cero. Haga que las respectivas varianzas sean uno y tres. Compruebe utilizando
mean y var. Trace ambas SA utilizando subplot.

Trace el histograma de cada una de ellas teniendo en cuenta normalizar los ejes verticales.

Trace el histograma conjunto (3D) de ambas secuencias aleatorias bajo la suposición de


independencia estadística. Compárelo con la fdp conjunta teórica y saque conclusiones.

Utilice la función contour de MATLAB para trazar las curvas de nivel del histograma
conjunto.

3. Genere dos SA independientes de ruido blanco: u[n] y v[n] ambas con función de densidad
probabilística uniforme en los intervalos [1, 2] y [0, 4] respectivamente.
a). Suma y producto de secuencias aleatorias independientes. A partir de las secuencias
generadas calcule la secuencia suma: x[n] = u[n] + v[n], y la secuencia producto: y[n] = u[n] ·
v[n].
Calcule la media de cada una de las secuencias u[n] y v[n], y compruebe la relación que
estas poseen con los valores medios de las secuencias x[n] y y[n].

Calcule la varianza de cada una de las secuencias u[n] y v[n], y compruebe la relación que
estas poseen con las varianzas de las secuencias x[n] y y[n].

b). Produzca dos secuencias aleatorias independientes de ruido no blanco como resultado de
filtrar u[n] y v[n] con los filtros cuyos coeficientes del numerador y denominador son
respectivamente:
Filtro #1: b1 = [0.0675 0.1349 0.0675]
a1 = [1.0000 -1.1430 0.4128]

Filtro #2: b2 = [0.2360 0 0]


a2 = [1.0000 -1.6459 0.8819]
nombre las salidas de los respectivos filtros con y1[n] y y2[n].

Analice el tipo de respuesta de frecuencia (freqz) y de respuesta impulsiva de cada filtro


(impz).

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 36

Grafique las secuencias de salida y1[n] y y2[n].

Calcule la media y la secuencia de autocorrelación de cada una de las secuencias de


salida.

Produzca la secuencia suma: y3[n] = y1[n] + y2[n]. Grafíquela.

Calcule la media de la secuencia suma, y3[n], y compruebe la relación que guarda con las
medias de cada una de las secuencias y1[n] y y2[n] individualmente.

Calcule la secuencia de autocorrelación de la suma y3[n] y compruebe la relación que


guarda con las secuencias de autocorrelación de y1[n] y y2[n] individualmente.

4. a) Construya una función que permita trazar en MATLAB el periodograma de una secuencia
cualquiera, expresando el eje de frecuencias en Hz-s. Nombre a su función periodog(x).
Compruebe la exactitud de su función trazando el periodograma de la secuencia determinista
x[n] = Asen(2πn/K), n = 0, 1, …, MK-1
con A = 2, M = 3 y K = 4; para la cual el periodograma debe tener la expresión

 0, k ≠ 1/ K
 k = 0, 1/MK, …, 1-1/MK
P[ k ] = 
 A 2 MK
 k = 1/ K
 4

y del cual puede comprobarse que la potencia total de la señal, Pt = A2/2, coincide con el
área bajo las barras del periodograma.

b) Utilice la experiencia adquirida durante el desarrollo de la función periodog(x) para crear una
nueva función que calcule el periodograma promedio de secuencias muy largas. Su nueva
función debe permitir el cálculo de los periodogramas de segmentos cortos de x[n] con
longitud L (L << longitud(x)). Los segmentos pueden solaparse P valores (0 ≤ P < L), siendo
P = 0 cuando no hay solapamiento. El periodograma final es el promedio de los
periodogramas de todos los segmentos que puedan crearse. Nombre a esta función avperiod, y
utilice la sintaxis [per,isegm] = avperiod(x,L,P). En ella “per” debe ser el vector de las
amplitudes de las barras del periodograma promedio e “isegm” el vector con los índices de los
segmentos de frecuencia asociados a cada uno de los elementos de “per”, de forma tal que el
trazado del periodograma se consiga con la función MATLAB bar(isegm,per), quedando
el eje de frecuencias expresado en Hz-s en el intervalo [0, 0.5].

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 37

Trace el periodograma promedio de una SA x[n] de 5000 valores con fdp uniforme, valor
medio cero y varianza 4, utilizando segmentos de x[n] de longitud L = 32 valores sin
solapamiento entre segmentos (P = 0).

Calcule la potencia promedio total a partir de los valores de la secuencia y a partir del
periodograma. Compárelas.

Determine la varianza de las amplitudes de las barras del periodograma.

Trace el periodograma promedio de la misma SA, utilizando segmentos de x[n] de longitud


L = 32 valores con solapamiento entre segmentos de 16 valores (P = 16). Determine la
varianza de las amplitudes de las barras del periodograma. Compare los resultados de estos
dos últimos pasos y saque sus conclusiones.

5. Construya una función para MATLAB que calcule la Densidad Espectral de Potencia Cruzada
(periodograma cruzado) entre dos secuencias x[n] y y[n]. Nómbrela crosprdg.
a) Genere y trace las secuencias x[n] = 3sen(2πn/8) y y[n] = x[n], con n = 0, 1, …, 66.
Calcule la potencia promedio total de cada una de las secuencias.

Estime la Densidad Espectral de Potencia Cruzada entre ambas secuencias mediante el


cálculo del periodograma cruzado, utilizando segmentos disjuntos de L = 32 muestras y
ventana rectangular. Analice las partes real e imaginarias del periodograma cruzado.

Calcule la potencia activa cruzada total y la magnitud de la potencia cruzada total.

b) Genere y trace las secuencias x[n] = 2cos(2πn/8) y y[n] = 2sen(2πn/8), con n = 0, 1, …, 66.
Estime el periodograma cruzado entre ambas secuencias utilizando segmentos disjuntos de
L = 32 muestras. Analice las partes real e imaginaria del periodograma cruzado.

Determine la magnitud de la potencia cruzada total y compárela con la obtenida en el


inciso a).

6. a) Construya una función para MATLAB que genere ruido blanco uniforme, a la cual se le
pueda especificar como entradas la longitud de la secuencia de ruido (L) y su potencia (P).
Utilice para la función la sintaxis x = uwnois(L,P).
Con la función creada genere una secuencia de ruido blanco uniforme de longitud L = 8
000 muestras y potencia P = 6. Trace la secuencia y compruebe que la potencia (varianza)
de la secuencia generada coincide con la especificada.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 38

b) Construya una función para MATLAB que genere ruido blanco gaussiano, a la cual se le
pueda especificar como entradas la longitud de la secuencia de ruido (L) y su potencia (P).
Utilice para la función la sintaxis x = gwnois(L,P).
Con la función creada genere una secuencia de ruido blanco gaussiano de longitud L = 8
000 muestras y potencia P = 6. Trace la secuencia y compruebe que la potencia (varianza)
de la secuencia generada coincide con la especificada.

7. Genere y trace una realización de la secuencia dada por


y[n] = r[n] + 0.9r[n-1] + 0.9y[n-1], n = 0, 1, …, 4999.

donde r[n] es una secuencia de ruido blanco uniforme con varianza uno. Asuma que r[-1] = y[-
1] = 0, y utilice semilla 123 para el generador de números aleatorios de MATLAB.

Estime la densidad espectral de potencia de y[n] mediante el trazado del periodograma


promedio en el intervalo [0. 0.5] Hz-s. Utilice segmentos semisolapados de 32 muestras.

La curva de Densidad Espectral de Potencia Teórica (DEPT) de y[n] puede Ud. comprobar
que es
1.81 + 1.8cos(2 πk)
DEPT(k) =
1.81 - 1.8cos(2 π k)

por lo que puede superponerla al mismo gráfico del periodograma promedio y compararlos.

Verifique que si se utilizan segmentos semisolapados de mayor longitud (por ejemplo: L = 64


o L = 128), se logra un periodograma más próximo a la curva de DEPT.

Compruebe que se llega a los mismos resultados si y[n] se obtiene filtrando la secuencia de
ruido blanco uniforme r[n] con el sistema
1 + 0.9z -1
H(z) =
1 - 0.9z -1

8. Para el sistema que se muestra en la figura

r1[n] H1(z) x[n]

+ H2(z) y[n]

r2[n]

se tiene que :

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 39

¤ r1[n] y r2[n] son ruidos blancos uniformes independientes entre sí con Densidad Espectral de
Potencia Sr1(ejw) = 1, ∀ w, y Sr2(ejw) = 3, ∀ w, respectivamente.

¤ H1(z) es un sistema lineal con función


z -1
H1 =
1 − z − 1 + 0.8z − 2

¤ H2(z) es un sistema lineal con función H2(z) = 1.

a) Calcule la SNR(ejw) teórica entre x[n] y r2[n]; para ello:


Determine la respuesta de magnitud cuadrática del sistema H1(z); esto es, |H1(ejw)|2. Puede
utilizar para ello la función de MATLAB freqz. Con ello habrá calculado la curva de
DEP teórica de x[n], Sx(ejw).

Dado que Sr2(ejw) se conoce, calcule la SNR(ejw) = Sx(ejw)/ Sr2(ejw), y trácela.

Determine la SNR total entre x[n] y r2[n].

b) Estime la SNR a partir de realizaciones de r1[n] y r2[n]; para ello:


Genere 4 000 muestras de cada una de las secuencias r1[n] y r2[n]. Compruebe que sus
histogramas y periodogramas corresponden con lo especificado, así como sus potencias
promedios totales. Para el trazado de los periodogramas utilice segmentos de 64 muestras
solapados el 62.5% de sus longitudes (40 muestras).

Filtre la secuencia r1[n] con el sistema H1(z). Para ello puede utilizar la función filter de
MATLAB.

Trace el histograma y el periodograma promedio de x[n]. Observe que x[n] no posee fdp
uniforme y que es un ruido coloreado.

Estime la SNR(ejw) a partir de los periodogramas de x[n] y r2[n]. Compárela con la


obtenida en a).

c) Estime la SNR a partir del conocimiento de x[n] y y[n] solamente. No dispone de otra
información que no sean tales secuencias, siendo esta la situación común en la práctica; para
ello,
Obtenga la secuencia y[n] como resultado de sumar x[n] con r2[n]. Trace la secuencia
resultante.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 40

Estime la DEP de y[n], Sy(ejw), mediante su periodograma promedio. Utilice segmentos de


L = 64 muestras solapados en el 62.5% de su longitud, y ventana rectangular. Obsérvelo.

Recalcule el estimado del periodograma promedio de x[n] utilizando segmentos de L = 64


muestras solapados el 62.5% de su longitud, y ventana rectangular. Compárelo con el
obtenido en b).

Estime la DEP cruzada entre x[n] y y[n], Sxy(ejw) mediante el cálculo del periodograma
cruzado. Utilice las mismas condiciones para los segmentos. Trácelo.

Obtenga el estimado del espectro de la coherencia, MSCxy(ejw), y trácelo.

Estime la densidad espectral de relación señal/ruido, SNR(ejw), a partir del espectro de la


coherencia y compárela con las obtenidas en a) y b) .

Determine la SNR estimada total.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6

Estructuras para sistemas LTI

Con el estudio de las estructuras para sistemas LTI se pretende que el estudiante conozca
los problemas asociados con la precisión finita de los procesadores digitales de señales y las
propiedades de diversas estructuras ante tales problemas.

En los siguientes ejercicios se verá la representación de sistemas LTI de tiempo discreto, la


descomposición en subfunciones de primer y segundo orden conectadas en cascada y en
paralelo, así como otras formas de realización. Se analizarán posibles errores en la
respuesta de frecuencia debidos a la cuantificación de los coeficientes, así como el ajuste de
escala y desbordamiento.

En el anexo VI se podrán comprobar gráficamente algunas de las respuestas de estos


ejercicios.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 42

Ejercicios

1. Para el sistema

0.013 + 0.065z − 1 + 0.13z −2 + 0.13z −3 + 0.065z − 4 + 0.013z −5


H ( z) =
1 − 2.0057 z − 1 + 2.6046 z − 2 − 2.0186 z − 3 + 0.972 z − 4 − 0.2324 z − 5

Trace su respuesta de magnitud contra frecuencias (freqz).

Multiplique todos los coeficientes del numerador y denominador por un factor que provoque
que la ganancia total del sistema en toda la banda de paso sea a lo sumo uno. Trace la nueva
respuesta de magnitud contra frecuencias. Saque conclusiones.

El hecho de que la ganancia de todo el sistema sea a lo sumo uno en toda la banda de paso no es
siempre una garantía para evitar el desbordamiento en un procesador que opere con aritmética de
punto fijo. El sistema H(z) es un ejemplo de ello. Para comprobarlo:
Utilizando los coeficientes del sistema con ganancia unitaria y la función tf2zp de
MATLAB calcule y trace los polos, ceros y la ganancia del sistema H(z).

Con los polos, ceros y la ganancia de H(z), y utilizando la función zp2sos de MATLAB
descomponga H(z) en la cascada de tres etapas: una de primer orden y dos de segundo orden.
Sólo tiene que calcular los coeficientes de cada una de las etapas.

Trace las respuestas de magnitud contra frecuencias de cada una de las etapas en una misma
gráfica. Saque conclusiones. Responda: ¿Cual debe ser el orden en que se coloquen las etapas
en la cascada para minimizar el desbordamiento?

2. Una importante dificultad que se presenta en la realización de sistemas LTI con hardware que
utiliza aritmética de punto fijo es la necesidad de redondear o truncar los resultados de cada
operación de multiplicación o suma. En este ejercicio se llevará a cabo una sencilla simulación
de estos efectos.
a) Construya una función para MATLAB que redondee el valor de la variable que se le entregue
como argumento a M cifras después del punto decimal. Para ello puede utilizar la función de
MATLAB round. Llame a su función “rounder” y utilice la sintaxis y = rounder(x,M).

b) Para el sistema IIR cuya función de sistema general está dada por

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 43

b + b 1 z −1 + b 2 z −2 + b 3 z −3 + b 4 z −4
H ( z) = 0
a 0 + a 1z − 1 + a 2 z − 2 + a 3 z − 3 + a 4 z − 4

cuyos coeficientes calculados con 14 cifras decimales son:


b0 = 0.16831087827511 a0 = 1.00000000000000
b1 = -0.01166158826938 a1 = -1.61531414109227
b2 = -0.31054565245428 a2 = 1.33525037422696
b3 = -0.01166158826938 a3 = -0.71988814411199
b4 = 0.16831087827511 a4 = 0.27558515123782

Trace sus respuestas de magnitud y fase contra frecuencias (freqz). Determine la amplitud
del rizado en la banda de paso, la atenuación mínima en la banda de rechazo y las
frecuencias esquinas de estas bandas. Para ello puede auxiliarse de la función zoom.

Redondee los coeficientes del sistema H(z) dado a cuatro lugares después del punto decimal
utilizando para ello su función rounder. Nombre al nuevo sistema con H1(z). Calcule
nuevamente las respuestas de magnitud y fase contra frecuencia del sistema utilizando los
coeficientes redondeados. Compare las respuestas obtenidas en este paso con las trazadas
en el paso anterior a partir de coeficientes con 14 lugares decimales.

c) Construya una función para MATLAB que permita implementar la ecuación en diferencias
finitas que determina la forma directa I del sistema dado, de forma tal que usted tenga acceso a
las variables internas que se obtienen luego de cada operación de suma y multiplicación. Esta
debe operar semejante a la función filter de MATLAB. Nombre con “sistdf1.m” a su
función, y utilice la sintaxis y = sistdf1(B,A,x).

Genere una secuencia de ruido blanco gaussiano de 1000 muestras de longitud mediante
» ruido = randn(1,1000);

y hágala pasar por el sistema H(z) original (con coeficientes de 14 lugares decimales), dado
en el inciso b), utilizando para ello su función sistdf1. Nombre con “salida1” la secuencia
obtenida. Trace en una misma figura las secuencias de entrada y salida. Compárelas.

Modifique su función sistdf1 para que luego de cada operación de suma y multiplicación
redondee el resultado a cuatro lugares después del punto decimal, lo cual puede lograr
llamando a su función rounder creada en el inciso a) luego de cada operación. Nombre esta
variante con “sistmdf1.m”. Haga pasar la secuencia de ruido por el sistema H(z) original,

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 44

utilizando esta vez la nueva función sistmdf1. Nombre con “salida2[n]” la secuencia
obtenida. Compare gráficamente la secuencia que se logra en este paso (salida2[n]) con la
obtenida en el paso anterior (salida1[n]) y mida el error cuadrático medio (potencia de
error) entre ambas mediante
N

∑ ( salida1[ n] − salida2[ n])


2
Perr = 1
N
n =1

Repita las operaciones del paso anterior utilizando en este caso el sistema con los
coeficientes redondeados a cuatro lugares después del punto, H1(z), obtenido en el inciso
b).

d) Nombre a la función que calcula la salida de H(z) con “sistdf2.m”, y a la que calcula la salida
de H1(z) con “sistmdf2.m”. Determine si el hecho de utilizar un esquema que responde a la
forma directa II de realización introduce alguna mejora o perjuicio con respecto a la precisión
de los resultados que ofrece la forma directa I.

3. En este problema se investigan los costos computacionales, en número de operaciones


aritméticas, de diversas representaciones de sistemas LTI. Se dispone de los coeficientes del
numerador, bk, y del denominador, aj, de la función de sistema H(z) de un filtro pasobajo de
séptimo orden con aproximante elíptica:

» bk = [0.0790 0.2191 0.4421 0.5905 0.5905 0.4421 0.2191 0.0790];


» aj = [1 -0.5919 2.1696 -1.1015 1.5081 -0.5823 0.3275 -0.0682];

Genere un estímulo consistente en un impulso: x[n] = δ[n], para 0 ≤ n ≤ 99.

El número de operaciones aritméticas puede determinarse en MATLAB utilizando su función


flop. Para ello haga un reset del contador de operaciones mediante flop(0) antes de ejecutar el
filtrado, e inmediatamente después de concluido el mismo determine el número de operaciones
mediante
» operac = flops/length(y)

a). Representación Directa: Dada por la ecuación en diferencias


M N
y[n] = ∑ b k x[n - k] -
k =0
∑a
j= 1
j y[n - j]

que en MATLAB se implementa mediante la función filter.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 45

Calcule el número de operaciones necesarias para filtrar en forma directa, con el sistema
dado por bk y aj, el impulso generado en x[n]. Justifique el número de operaciones
obtenido.

b). Representación en cascada.


Descomponga el sistema dado en la cascada de tres subfunciones de segundo orden y una
subfunción de primer orden. Para ello puede crear sus propias funciones o utilizar las
funciones de MATLAB tf2zp y zp2sos. Considere que cada una de las subfunciones
creadas se estructuran en la forma directa, por lo que la salida de cada una puede calcularse
mediante filter de la salida de la etapa anterior en la cascada. Cerciórese de que los
coeficientes utilizados en cada subfunción sean los adecuados.

Calcule el número de operaciones necesarias para filtrar con la cascada el impulso generado
en x[n]. Justifique el número de operaciones obtenido.

c). Representación en paralelo.


Descomponga el sistema dado en la combinación paralelo de tres subfunciones de segundo
orden y una de primer orden. Para ello puede utilizar la función de MATLAB residuez.
Considere que cada una de las subfunciones creadas se estructuran en la forma directa, por
lo que la salida de cada una puede calcularse mediante filter.

Calcule el número de operaciones necesarias para filtrar con la combinación paralelo el


impulso generado en x[n]. Justifique el número de operaciones obtenido.

4. La descripción de un sistema en base a los parámetros de estado puede tener varias soluciones;
esto es, diversos juegos de parámetros de estado pueden describir a un mismo sistema. Para
comprobarlo partiremos de los siguientes coeficientes del numerador, bk, y del denominador,
aj, de una función de sistema H(z)
» bk = [ 0.1269 0.2692 0.2692 0.1269 ]
» aj = [ 1.0000 -0.7338 0.7298 -0.2038 ]

a) A partir de los coeficientes bk y aj construya un juego de parámetros de estado: A, b, ct, d;


utilizando las expresiones dadas en clase.

b) Con la función de MATLAB ss2tf compruebe que se regresa a los coeficientes del sistema
de partida.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 46

c) MATLAB posee otra forma de calcular los parámetros de estado diferente a la que usted ha
utilizado. Para comprobarlo utilice la función tf2ss, nombrando a los nuevos parámetros:
A1, b1, ct1 y d1. Verifique que los nuevos parámetros de estado conducen a la misma función
de sistema (ss2tf).

d) Un tercer juego de parámetros de estado puede describir al mismo sistema. Estos son:

0.3420 0 0   1.3789 
   
A2 = 0.4848 - 0.0062 − 0.7735 b2 =  0.4978 
 0.3771 0.7735 0.3980   0.3874 

cT2 = [ 0.1235 0.1413 0.3140 ] d2 = 0.1269

Calcule la función de sistema y verifique que se llega a la misma H(z).

e) Calcule los polos de la función de sistema a partir de los tres jugos de parámetros de estado
(ss2zp).

f) Compruebe que los valores propios (eig) de las tres matrices A coinciden con los polos del
sistema.

g) Trace la respuesta de frecuencias del sistema a partir de los coeficientes bk y aj.

h) Trace la respuesta impulsiva, h[n], del sistema. Verifique que h[0] = d, y que para n ≥ 1 se
cumple que h[n] = cTAn-1b compare los resultados para los tres juegos de parámetros.

i) Construya una función para MATLAB en la que se resuelvan las ecuaciones de estado
 u[n + 1] = Au[n] + b[n]

 y[n] = c u[n] + du[n]
T

para el caso en que el estímulo sea un impulso; esto es, x[n] = δ[n]. La función debe dar
como salidas y[n] = h[n] y el vector de estado en el intervalo 0 ≤ n ≤ 40. Grafique
simultáneamente y[n] y las N variables del vector de estado (subplot o strips).

j) Considere ahora que la secuencia de entrada x[n] = 0 ∀ n ≥ 0, y que las condiciones iniciales
del sistema son u[0] = [1 1 1]T. Determine la respuesta libre del sistema calculando el vector
de estado u[n] = [ui1[n] ui2[n] ui3[n]]T y la secuencia de salida y[n] para n = 0:20. Grafique
y[n] y las tres variables de estado utilizando subplot.

5. La descomposición de un sistema FIR en secciones de bajo orden en paralelo no es muy usual ya


que el procedimiento habitual es la expansión en fracciones parciales de la función de sistema,

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 47

la que en este caso carece de polos. No obstante, sí es fácil descomponer un sistema FIR en
secciones de segundo orden en cascada. Por ejemplo, para el sistema FIR

H(z) = -0.0061-0.0136z-1+0.0512z-2+0.2657z-3+0.4057z-4+0.2657z-5+0.0512z-6-0.0136z-7-0.0061z-8.

a) Trace sus respuestas de magnitud y fase contra frecuencias (freqz, abs y angle)
expresando el eje de frecuencias en unidades de Hz-s.

b) Calcule sus ceros (roots). Dibuje el diagrama de ceros de H(z) utilizando zplane. Tenga
presente que el vector de los polos es vacío. Establezca la relación que guardan los ceros de
H(z) con su respuesta de frecuencias.

c) Construya la cascada de secciones de segundo orden utilizando zp2sos. Justifique los


coeficientes obtenidos.

d) Trace las respuestas de frecuencias de cada una de las secciones de segundo orden obtenidas.

e) Compruebe que la respuesta de frecuencias total de H(z) es el producto de las respuestas de


frecuencias de las secciones que componen la cascada, afectada por un factor de escala.

6. En este ejercicio se podrá valorar la eficiencia computacional de algunas formas de calcular la


secuencia de respuesta, y[n], a un sistema LTI caracterizado por su función de sistema, H(z),
conociendo la secuencia de estímulo x[n]. Para ello será necesario diseñar un sistema FIR de
alto orden mediante
» h = fir1(127,0.4);

En general, el vector h[n] calculado contiene los 128 coeficientes de un sistema FIR de
respuesta de frecuencias pasobajo; lo cual puede comprobar mediante freqz, utilizando un 1
como coeficiente del denominador. Además, será necesario también generar una secuencia de
entrada x[n], la que puede ser una secuencia aleatoria de 1024 muestras obtenida mediante
» x = rand(1,1024);

La eficiencia computacional será valorada a partir de:


I. el tiempo de ejecución invertido en el cálculo de la respuesta, el cual puede obtenerse
mediante
» t0 = clock; (función); etime(clock,t0)

donde (función) es la que se utilice en cada caso para calcular la respuesta, y

II. el número de operaciones aritméticas ejecutadas, el cual puede calcularse mediante

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 48

» flops(0); (función); flops

a) Cálculo de la respuesta utilizando la función filter que ofrece MATLAB.


Obtenga la respuesta, y1[n], utilizando la función filter, en la cual B son los coeficientes h
calculados y A = 1.

b) Cálculo de la respuesta utilizando la convolución x[n]★h[n] obtenida mediante la función


conv de MATLAB.

c) Cálculo de la respuesta utilizando convolución rápida mediante la FFT (fft).

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 7

Muestreo, Interpolación y Diezmado de Secuencias

Como objetivos fundamentales de este tema se verán los sistemas discretos muestreados,
diezmados e interpolados en los dominios del tiempo y de la frecuencia.

En este tema se pretende procesar con razón de muestreo múltiple (multirate


processing), observar las propiedades de la transformada de Fourier de secuencias con
ritmo modificado y mostrar el uso de filtros interpoladores; así como la modificación
de la razón de muestreo en un factor no entero, y la aplicación del diezmado a la
conversión A/D.

En el anexo VII aparecen respuestas a algunos ejercicios de este tema.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 7: Muestreo, Interpolación y Diezmado de Secuencias 50

Ejercicios

1. Dada la señal determinista y causal


10
x[ n ] = ∑ (1.2)
k =1
k
sen ( 2 π knT )

Genere y grafique 4 segundos de la misma, muestreándola a 2.1 veces su frecuencia de


Nyquist. Observe su espectro y saque conclusiones.

Genere y grafique 4 segundos de la misma, muestreándola a 4 veces su frecuencia de Nyquist.


Observe su espectro y compárelo con el anterior sacando conclusiones en cuanto a cantidad de
picos del espectro y la amplitud de cada uno, así como en cuanto al solapamiemto (aliasing)
espectral.

2. La interpolación ideal a ritmo M puede interpretarse como sigue

xd[n] Inserción de ceros xp[n] Filtro Pasobajo Ideal xi[n]


a rito M Ganancia = M
| wc | = π/M

Interpolador

En este problema se estudiarán las particularidades de dos filtros pasobajo reales, aplicables en
la práctica a un interpolador. Ambos son de fácil programación en tiempo real, en un
procesador digital, mediante sus ecuaciones en diferencias finitas. Los resultados se
compararán con los obtenidos para un interpolador ideal.

Cargue la secuencia electrocardiográfica ecg1[n] que se encuentra en el fichero


“signal1.mat” de la carpeta de señales, elimínele su nivel de corriente directa y tome sólo sus
primeras 341 muestras, asignándolas a ec1[n].

Inserte ceros a ec1[n] a ritmo M = 3 y asigne el resultado a ec2[n]. Observe la secuencia


resultante y su espectro en L puntos EC2L[k], debiendo ser L una potencia de dos.

a) Filtro pasobajo ideal.


I. Teniendo en cuenta que en el espectro EC2L[k] la línea espectral k = L equivale a la
frecuencia normalizada w = 2π, genere por separado las respuestas de magnitud y fase
contra frecuencia del filtro pasobajo ideal, asignándolas a las variables “magH” y “angH”

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 7: Muestreo, Interpolación y Diezmado de Secuencias 51

respectivamente. Construya la respuesta de frecuencia ideal H = (magH)exp(angH),


obsérvela y compárela con el espectro EC2L[k].

II. Obtenga el espectro de la secuencia filtrada pasobajo con el filtro ideal y luego calcule la
secuencia filtrada en el tiempo ecideal[n].

Este método, aunque útil en MATLAB, no es aplicable fácilmente en tiempo real en la


práctica. Argumente esta afirmación.

b) Filtro interpolador de zero-order hold.


I. Genere la respuesta impulsiva del filtro pasobajo interpolador de zero -order hold y asígnela
a la variable “hzoh”. Esta está dada por la expresión

hzoh[n] = δ[n] + δ[n - 1] + … + δ[n - (M - 1)]

II. Grafique la respuesta de frecuencias de este filtro Hzoh[k] y compárela con la del filtro
pasobajo ideal.

III. Filtre la secuencia con ceros insertados ec2[n] en el dominio transformado utilizando
Hzoh[k] y obtenga la secuencia filtrada echol[n]. Analice esta secuencia.

c) Filtro interpolador lineal.


I. Genere la respuesta impulsiva del filtro pasobajo interpolador lineal y asígnela a la variable
“hlin”

1 - | n|/M, | n| ≤ M - 1
hlin[n] = 
 0, otro caso

tenga en cuenta que hlin es no causal, y que en MATLAB los vectores no pueden tener
índices negativos o cero, por lo que hlin[n] debe desplazarse en el tiempo.

II. Grafique la respuesta de frecuencias de este filtro Hlin[k] y compárela con la del filtro
pasobajo ideal. Analice cual de las dos respuestas de frecuencias, Hzoh[k] o Hlin[k], se
aproxima más a la ideal.

III. Filtre la secuencia con ceros insertados ec2[n] en el dominio transformado utilizando
Hlin[k] y obtenga la secuencia filtrada eclin[n]. Analice esta secuencia.

d) Error de interpolación.
Calcule las secuencias de error
errhol[n] = echol[n] - ecideal[n]

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 7: Muestreo, Interpolación y Diezmado de Secuencias 52

errlin[n] = eclin[n] - ecideal[n]

y obsérvelas.

Calcule también el error cuadrático medio en cada caso


L
1
emh =
L
∑ (errhol[n])
n = 1
2

L
1
eml =
L
∑ (erlin[n])
n = 1
2

Analice si se corresponde el error obtenido con las cualidades del filtro utilizado.

e) Repita todos los pasos anteriores utilizando una secuencia electrocardiográfica limitada en
banda. Para ello filtre pasobajo previamente a ec1[n] con el filtro cuyos coeficientes se indican
a continuación, y cree la nueva secuencia ecf1[n] con la cual realizará sus operaciones. Los
coeficientes de la ecuación en diferencias finitas del filtro pasobajo son:

¤ Coeficientes de las entradas bk = [0.0048 0.0193 0.0289 0.0193 0.0048];

¤ Coeficientes de las salidas aj = [1.0000 -2.3695 2.3140 -1.0547 0.1874];

f) Repita los pasos anteriores utilizando como filtro interpolador el que diseña MATLAB
mediante la función intfilt.

3. Modificación de la razón de muestreo en un factor no entero. La secuencia “ecg1” ha sido


muestreada a fs = 500 Hz en la conversión A/D. Se necesita reconvertirla a una nueva frecuencia
de muestreo fs’ = 360 Hz. Para ello debe estructure el esquema siguiente

Filtro Pasobajo Ideal


36 G = 36 50
| wc | = π/50

Haga una función MATLAB que agrupe todas las operaciones indicadas y a su vez que
invoque a las ya creadas por Usted.

4. Desplazamiento no entero en el tiempo. En el sistema que se muestra a continuación si se cumple


que
X(ejw) = 0, |w| ≥ π/T
y

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 7: Muestreo, Interpolación y Diezmado de Secuencias 53

 − jw | w| ≥ π / T
H(ejw) = e ,
 0, π / T <| w| ≤ π

x(t) x[nT] y[nT]


A/D L H(ejw) L

T
entonces

y[nT] = (1/L)x[nT - T/L]

Realice un programa MATLAB que pruebe el esquema anterior.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8

Transformada de Hilbert, Cepstrum y Sistemas Homomórficos

Entre los objetivos centrales de esta sección están conocer los fundamentos y la aplicación
de la transformada de Hilbert en el establecimiento de las relaciones entre la parte real y la
parte imaginaria, o la magnitud y la fase de la transformada de Fourier de tiempo discreto,
saber diseñar transformadores de Hilbert, así como saber calcular y utilizar las partes
analíticas y antianalíticas de secuencias.

En los ejercicios de este tema se determina la suficiencia de la parte real e imaginaria de la


DTFT de secuencias causales, así como el uso de teoremas de suficiencia para secuencias
periódicamente causales y teoremas de suficiencia para secuencias de duración finita. Se
calcula la transformada de Hilbert para secuencias complejas. y se plantea el diseño de
transformadores de Hilbert entre otras cosas. El anexo VIII muestra varias respuestas a los
ejercicios propuestos en este último tema.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 55

Ejercicios

1. Genere la secuencia causal de 128 muestras

x[n] = sen(2πf/fs) + 2cos(3πf/fs)

con f = 8 Hz y fs = 160 Hz.

Separe matemáticamente las partes par, xe[n], e impar, xo[n], de x[n] mediante

xe[n] = ½ (x[n] + x[-n]) y xo[n] = ½ (x[n] - x[-n])

Tenga presente al efectuar el abatimiento que MATLAB trabaja con vectores en los que el
índice de sus elementos no puede ser negativo o cero.

Compare la parte par, xe[n], con la componente cosinusoidal de x[n]; y la parte impar, xo[n],
con la componente sinusoidal de x[n]. Saque conclusiones.

Calcule la DFT de la secuencia suma, x[n], en 128 puntos; X128[k], y sepárela en sus partes real
e imaginaria.

Calcule la DFT de la parte par de la secuencia, xe[n], en 128 puntos y compárela con la parte
real del espectro de x[n]. Saque conclusiones.

Calcule la DFT de la parte impar de la secuencia, xo[n], en 128 puntos y compárela con la parte
imaginaria del espectro de x[n]. Saque conclusiones.

Sustituya la secuencia x[n] anterior por otra cualquiera de comportamiento aleatorio, pero que
sea causal; como por ejemplo

» x = rand(1,128);

y sepárela en sus partes par, xe[n], e impar, xo[n]. Compruebe si utilizando DFT se sigue
cumpliendo que
jw jw
XR(e ) = DTFT{xe[n]} y XI(e ) = DTFT{xo[n]}

Saque conclusiones.

2. Para la secuencia real y causal de duración finita, con -N/2 ≤ n ≤ N/2-1


 5 δ[n ] − δ[ n − 1] n = 0, 1.
x[n] =  4
 0, otro caso.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 56

que posee como parte real de su espectro (DFT de N puntos)

XrN[k] = 5/4 - cos(2πk/N)

Determine su parte par, xe[n].

Compruebe que

x[n] = xe[n]uN[n]

siendo
 0, − N / 2 ≤ n ≤ −1.

uN[n] = 1, n = 0.
2 , 1≤ n ≤ N / 2 −1

Compruebe que en el dominio transformado se cumple la convolución


XN[k] = (XrN[k]★UN[k])/2,

donde UN[k] = DFT(uN[n]).

3. Disponiendo de la parte real del espectro de una secuencia real, causal y de duración finita, x[n];
es decir, XrN[k], y de la función
- j2cot( πk / N), k impar

VN [ k ] = 
 0, k par

puede encontrarse directamente la parte imaginaria del espectro, XiN[k], mediante la convolución

jXiN[k] = XrN[k]★VN[k]

y recuperar totalmente la secuencia x[n].

Genere la secuencia de N = 256 muestras


x[n] = anu[n], con a = -0.996 y n = 0, 1, ..., N-1.

Determine las partes real e imaginaria del espectro de x[n] a través de la DFT de N puntos;
XrN[k] y XiN[k]. Trácelos.

Compruebe que si se construye X1N[k] = XrN[k] + jXiN[k], su IDFT x1[n], coincide con x[n].

Construya la función VN[k]. Debe tener cuidado con el hecho de que la cot(α) se indefine para
α = 0 y π, por lo que en lugar de utilizar un índice 0 ≤ k ≤ N, es preferible hacerlo en 1 ≤ k ≤
N-1, ya que se conoce que, siempre que N sea par, en k = 0 y k = N, VN[k] = 0. Trace la

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 57

secuencia VN[k] y analice su comportamiento para que en el próximo ejercicio la compare con
la respuesta impulsiva de un transformador de Hilbert.

Utilizando la función VN[k], calcule la parte imaginaria del espectro a partir de su parte real.
Nómbrela Xi1N[k]. Dado que en MATLAB la secuencia resultante de una convolución de
dos secuencias de longitud N es 2N, quedando luego de la convolución de los espectros la
frecuencia correspondiente a w = 0 en el índice k= N, para calcular Xi1N[k] debe tomar sólo la
parte central de la secuencia resultante de la convolución. Compare esta versión de la parte
imaginaria del espectro con la que obtuvo directamente de la secuencia, XiN[k], y observe que
entre ambas hay una diferencia en cuanto a factor de escala. Busque la forma de corregir el
factor de escala de Xi1N[k].

Realice la reconstrucción del espectro completo X2N[k] = XrN[k] + jXi1N[k].

Recupere x[n], comparándola con la secuencia original. Saque conclusiones en cuanto al


aliasing en el tiempo que se produce y trate de disminuirlo.

4. El transformador de Hilbert ideal (deseado)


 π
jw
− 2 , 0< w≤π
Hd(e ) = 
 π , -π < w < 0
 2

está indefinido para w = 0. Su respuesta impulsiva


 2sen 2 ( πn / 2)
 , n ≠ 0.
jw  πn
hd[n] = IDTFT{Hd(e )} = 
 0, n = 0.


puede obtenerse mediante


2
jw
 πn , n impar.
hd[n] = IDTFT{Hd(e )} = 
 0, n par.


Como se observa, hd[n]:


• Es de duración infinita y no causal.
• Antisimétrica: hd[n] = -hd[-n].

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 58

• hd[n] = 0 para n par.

Diversas son las alternativas para diseñar un transformador de Hilbert no ideal. En este ejercicio
realizará un análisis de los resultados de algunas de ellas.

Construya una tabla en la que pueda resumir en cada fila los resultados de cada uno de los
diseños que realizará más adelante. Para cada diseño anotará en cada columna de la tabla los
datos siguientes:

Métod Datos Rizado Atenuación Frecuencias Pendiente de la


o Máximo en la Mínima en la de corte Respuesta de
Banda de Paso Banda de Rechazo verdaderas Fase

II

Realice los siguientes diseños y en cada caso trace la respuesta impulsiva y las respuestas de
magnitud y fase contra frecuencias:

I. Filtro FIR utilizando el método de Parks & MacClellan (función remez de MATLAB)
con N = 48, F = [0.05 0.95], M = [1 1].

II. Filtro FIR utilizando el método de Parks & MacClellan con N = 40, F = [0.05 0.95], M
= [1 1].

III. Filtro FIR utilizando el método de Parks & MacClellan con N = 30, F = [0.1 0.9], M
= [1 1].

IV. Filtro FIR utilizando el método de mínimos cuadrados (función firls de MATLAB)
con N = 48, F = [0.05 0.95], M = [1 1].

V. Filtro FIR con respuesta impulsiva generada mediante h[n] = 2/(nπ) para n impar y h[n] =
0 para n par, limitada mediante una ventana rectangular en -24 ≤ n ≤ 23 y h[0] = 0.

VI. Filtro FIR con respuesta impulsiva generada mediante h[n] = 2/(nπ) para n impar y h[n] =
0 para n par, limitada mediante ventana de Hamming (función hamming de MATLAB)
con N = 48.

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 59

VII. Filtro FIR con respuesta impulsiva generada mediante h[n] = 2/(nπ) para n impar y h[n] =
0 para n par, limitada mediante ventana de Hanning (función hanning de MATLAB)
con N = 48.

VIII. Filtro FIR con respuesta impulsiva generada mediante h[n] = 2/(nπ) para n impar y h[n]
= 0 para n par, limitada en longitud mediante ventana de Blackman (función
blackman de MATLAB) con N = 48.

IX. Muestreo en frecuencias de la respuesta ideal. Se construyen las respuestas de magnitud y


fase por separado y luego se ensambla la respuesta de frecuencias
» N = 512; % Longitud del filtro.
» MH = [ones(1,N)];
» AH = [-pi/2*ones(1,N/2) pi/2*ones(1,N/2)];
» H = MH.*exp(i*AH);
» B = fftshift(ifft(H));

Saque conclusiones de los resultados obtenidos.

5. Genere 120 muestras de la secuencia cosinusoidal

x[n] = cos(2πfn/fs + θ)

utilizando f = 5Hz, fs = 25Hz y θ = π/6. Trace la secuencia x[n], así como sus espectros de
magnitud y fase contra frecuencias. Observe que evidentemente x[n] es una señal de banda
estrecha.

Calcular la transformada de Hilbert de una señal de banda estrecha, como la anterior, puede
realizarse con cierto éxito utilizando un filtro FIR con respuesta impulsiva, h[n], antisimétrica y
nula en los valores pares de n. En este problema podrá comparar los resultados de un
transformador de Hilbert realizado mediante FFT y mediante filtro FIR.

a) Transformador rápido de Hilbert (mediante FFT).

El procesamiento en tiempo no real de una señal de duración finita permite obtener la


transformada de Hilbert de una secuencia x[n] muy rápidamente a través de la FFT mediante
jw
TH{x[n]} = x [n] = IDTFT{-j sign(w) X(e )}

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 60
jw
donde X(e ) es la DTFT de x[n] y la función “sign” es el signo de la frecuencia; así -j
sign(w) es la respuesta de frecuencias del transformador de Hilbert ideal. Para ello puede
seguir los pasos siguientes:

I. Calcule la DFT de la secuencia: XN[k] = FFT(x[n]).

II. Haga la componente directa (DC) del espectro igual a cero: XN[0] = 0.

III. Si el número de puntos de la transformada, N, es par haga cero el valor de la


transformada en la frecuencia de Nyquist: XN[N/2] = 0.

IV. Multiplique la parte positiva del espectro por -j, y la parte negativa del espectro
por j; para obtener el espectro de la transformada de Hilbert de la secuencia:
HN[k] = -j sign(w) XN[k].

V. Calcule la transformada inversa de HN[k] para obtener TH{x[n]} = x [n]

Nota: Dado que se hace cero la componente directa del espectro, y la frecuencia de
Nyquist cuando el número de puntos de la FFT es par, no siempre puede
recuperarse la secuencia original utilizando este método, a no ser que la
secuencia x[n] tenga un espectro pasobanda.

Trace el espectro de x[n] en el intervalo -0.5 ≤ w ≤ 0.5 Hz-s. Utilice una cantidad de
puntos que sea la potencia de dos inmediatamente superior (nextpow2) al largo de x[n].

Calcule la transformada de Hilbert de x[n] mediante

TH{x[n]} = x [n] = ifft{-j sign(w) fft(x[n])}

Trace las primeras 120 muestras de x [n].

Para comprobar que x [n] está correctamente calculada, determine la parte analítica de
x[n]; esto es, x+[n], mediante

x+[n] = (x[n] + j x [n]) / 2

b) Transformada de Hilbert mediante filtro FIR.

Diseñe un filtro FIR transformador de Hilbert de orden N que se ajuste a las necesidades
de ancho de banda de la señal x[n].

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 61

Trace (stem) la respuesta impulsiva del filtro diseñado, así como sus respuestas de
magnitud y fase contra frecuencias (freqz) en el intervalo de frecuencias -0.5 ≤ w ≤ 0.5
Hz-s. Verifique que el ancho de banda escogido satisface los requerimientos de x[n].

Filtre (filter) la señal x[n] con el transformador de Hilbert diseñado y trace la secuencia
resultante x [n]. Observe el comportamiento de esta en el estado estable (respuesta
permanente) y compárela con la secuencia transformada de Hilbert obtenida en el inciso
a).

Utilizando la transformada de Hilbert obtenida en este inciso, calcule la parte analítica de


x[n]. Compárela con la obtenida en el inciso a).

Obtenga el espectro de la parte analítica obtenida en este inciso. Compare sus respuestas
de magnitud y fase con las obtenidas en el inciso a). Saque conclusiones.

Tal vez la combinación escogida de orden, L, del filtro FIR transformador de Hilbert y su
ancho de banda no sea la óptima para esta aplicación. Trate de mejorar su transformador
de Hilbert escogiendo otra combinación de orden del filtro FIR y ancho de banda, que le
lleve a resultados satisfactorios con un orden razonable.

6. En un sistema de transmisión no es necesario transmitir las señales complejas íntegramente, sino


que sólo basta transmitir su parte real, con el consiguiente ahorro de canal. El transformador de
Hilbert puede utilizarse para relacionar las partes real e imaginaria de la secuencia compleja.

Genere la secuencia compleja


» n = 0:20/512:20-20/512;
» xc = 2*exp(-j*n);

Realice el cálculo de las partes real (xcr[n]) e imaginaria (xci) de xc[n].

En el extremo receptor puede reconstruirse completamente la señal compleja. Para ello:

Asigne a la variable yr[n] el contenido de la secuencia recibida, xcr[n].

Realice la convolución entre yr[n] y el filtro de Hilbert para obtener su parte imaginaria yi[n].

Compare las secuencias complejas transmitidas y recibidas determinando el error entre ambas.

Puede también obtenerse directamente el espectro de la parte real de xc[n] a partir del espectro de
su parte imaginaria, y viceversa. Para ello:

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 62

El cálculo de los espectros de xcr[n] y xci[n], los que puede nombrar XCr y Xci
respectivamente. Debe tener en cuenta hacer la rotación de los espectros (fftshift). Observe
sus propiedades.

Utilizando solo XCr y el transformador de Hilbert, calcule la transformada de la parte


imaginaria, la que puede nombrar Xi. Compare a Xci con Xi y saque conclusiones sobre las
consecuencias que tiene utilizar un filtro no ideal.

7. Frecuentemente, en ensayos de laboratorio o en la industria, es necesario medir la velocidad de


propagación de una onda ultrasónica a través de un material para determinar algunos parámetros,
como por ejemplo su grado de porosidad o su pureza. Para ello se utiliza el esquema siguiente

Pulso Transm.

Pulso Recept.

Procesador
Digital
H2O

En el cual la velocidad del ultrasonido está determinada por

Vo
V =
VoTi  VoTi 
1+  − 2 cosθ
e  e 

donde Vo es la velocidad de la onda ultrasónica en el agua, Ti el tiempo de separación entre el


pulso transmitido y recibido, e el ancho del material, y θ el ángulo de incidencia de la onda
transmitida con el material [Roux et al., 1985, “Caracterization mecanique des solides par
spectrointerferometrie ultrasonore”, Rev. Phys. Appl., 20, pp. 351-358].

Debido a la gran atenuación y distorsión que sufre el pulso transmitido a través de muchos
materiales en estudio (como por ejemplo el grafito), resulta difícil la medición de la velocidad
ultrasónica, haciéndose inseguro el significado físico del resultado obtenido por algunos métodos
convencionales. Una novedosa alternativa para determinar la velocidad ultrasónica, que brinda
gran precisión, se basa en calcular la transformada de Hilbert del pulso recibido. El principal
problema en un esquema como el mostrado, donde se utiliza transmitir pulsos de banda ancha (de

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 63

muy corta duración en el tiempo), es determinar la demora de tiempo entre el pulso transmitido y
el recibido, ya que ambos consisten de solo algunas pocas oscilaciones [Guerjouma et al., 1992,
“Non destructive evaluation of graphite by ultrasonic velocity measurement using cross-
correlation and Hilbert transform methods, Ultrasonic Symposium, pp. 829-832].

Sea x[nT] la secuencia del pulso transmitido, quien constituye la referencia para iniciar el conteo
del tiempo de propagación, y[nT] la secuencia transmitida por el material, y T el período de
muestreo, la relación entre ambas está dada por la respuesta del material mediante la convolución

y[nT] = x[nT]h[nT],

cuya DTFT es
jw jw jw
Y(e ) = X(e ) H(e ).
jw
Donde H(e ) es la respuesta de frecuencias del material en estudio, la que puede ser escrita en la
forma
jw jw
H(e ) = G(e )exp(-jwτ)

donde τ es el tiempo de propagación de la componente de más baja frecuencia del pulso


jw jw
transmitido y G(e ) es una función que contiene toda la parte de H(e ) asociada con la
atenuación y la dispersión. Mediante la DTFT inversa se obtiene de esta última expresión que

h[nT] = g[nT]δ[nT - τ].

Mediante el transformador de Hilbert de h[nT]

 1 
HT{h[nT]} = g[nT]  
 π ( nT − τ ) 

Esta función posee una asíntota vertical en nT = τ. La transformada de Hilbert de h[nT] puede
llevarse a cabo utilizando la relación
jw
TH{h[nT]} = IDTFT{-j sign(w) H(e )}

Esta forma de calcular la transformada de Hilbert de una secuencia resulta útil en procesamiento
en tiempo no real (off line) debido a que se requiere conocer la transformada de Fourier de la
secuencia a la que se le calcula la TH, o segmentos de ella cuando se realiza el procesamiento en
bloques. Tiene la ventaja de ofrecer resultados de mayor precisión que los que se obtienen

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 64

filtrando la señal con un sistema FIR cuya respuesta impulsiva sea la de un transformador de
Hilbert; aunque este último tiene más perspectivas en tiempo real.

Todo lo anterior puede comprobarlo con la ayuda de las indicaciones siguientes

Genere y trace con MATLAB una onda que simule el pulso de estímulo emitido por el
transductor transmisor mediante
» n = 0:0.01:1;
» tau = 145; % Retardo introducido por el material (en períodos de
muestreo).
» x1 = (1.2*exp(-10*n)).*(sin(16*pi*n));
» x = [x1 zeros(1,tau)];

Simule y trace la onda recibida por el transductor receptor mediante


» gain = 0.75; % Ganancia introducida por el material (≤ 1).
» y = [zeros(1,tau) x1].*gain;

Calcule y trace las DFT de las ondas emitidas y recibidas, las cuales puede nombrar X y Y
respectivamente.

Calcule y trace la respuesta de frecuencias del material dada por H = Y/X.

Utilizando H, determine la transformada de Hilbert de la respuesta impulsiva del medio,


HT{h}. Trácela y analice la relación que guarda la posición de la respuesta impulsiva de un
transformador de Hilbert con la demora (tau) introducida por el material.

Repita el ejercicio con diversos valores de demora (por ejemplo, tau = 100) y ganancia del
material (por ejemplo, gain = 0.2). Añada también ruido a la señal recibida y[n]. Saque
conclusiones.

8. En este ejercicio se realizará un desfasador de 90° utilizando un transformador de Hilbert de


longitud N. El esquema general es el que se muestra a continuación.

x[n] y[n]
THN(z)

-N/2
xd[n]
z

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 65

En este esquema THN(z) es la función de sistema de un transformador de Hilbert cuya respuesta


impulsiva posee N coeficientes. En este ejercicio, en contraste con el ejercicio 5, se calculará la
transformada de Hilbert mediante un filtro FIR del cual se conocen sus coeficientes, variante que
tiene más perspectiva en aplicaciones de tiempo real. Dado que el transformador de Hilbert
diseñado posee respuesta impulsiva, h[n], con -N/2 ≤ n ≤ N/2, este no es causal, motivo por el
-N/2
cual se utiliza el bloque retardador z .

Utilizando los resultados del ejercicio 4, calcule los coeficientes, B, de un filtro FIR
transformador de Hilbert cuya longitud, N, debe escogerla de acuerdo a su experiencia.

Genere una secuencia de entrada, x[n], de longitud varias veces superior a la del transformador
de Hilbert, consistente en un tono sinusoidal muestreada varias veces por ciclo.

Filtre la secuencia x[n] (filter) con el filtro transformador de Hilbert y obtenga y[n].

Retarde la secuencia x[n] mediante una inserción de N/2 ceros en su inicio. Recuerde que N es
el largo del filtro FIR transformador de Hilbert.

Trace en un mismo gráfico las secuencias y[n] y xd[n]. Analice el retardo entre ellas.

9. Una de las utilidades del cepstrum complejo es la deconvolución homomórfica de secuencias


cuyos cepstrum tengan formas de ondas fácilmente separables en el dominio de la frecuencia.
Por ejemplo, se sabe que la señal de voz de los sonidos vocálicos se produce como resultado del
paso por el tracto vocal de la señal que se genera en las oscilaciones de las cuerdas vocales.
Esquemáticamente,

x[n] y[n]
Oscilador Tracto vocal
(cuerdas vocales) h[n]

donde x[n] representa a la señal compuesta por la frecuencia fundamental de oscilación de las
cuerdas vocales (pitch) y sus armónicos, h[n] la respuesta impulsiva del tracto vocal, y y[n] el
sonido vocálico; de modo que

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

Aplicando cepstrum, puede demostrarse fácilmente que

y$ [n] = x$ [n] + h$ [n]

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 66

donde y$ [n], x$ [n], y h$ [n] son los respectivos cepstrum complejos de y[n], x[n] y h[n].
Afortunadamente, en los sonidos vocálicos (sonoros) la forma de onda del cepstrum de las
oscilaciones de las cuerdas vocales, x$ [n], es bien diferente de la forma de onda del cepstrum de
la respuesta impulsiva del tracto vocal, h$ [n]; de forma tal que al sumarse ambas secuencias de
cepstrum casi no se superponen. Para comprobarlo, siga los pasos que a continuación se indican.

Cargue la secuencia “amparo” que se encuentra en el fichero “amparo.mat”. Esta corresponde


a la palabra “amparo” pronunciada por una mujer adulta. La misma fue digitalizada con una
frecuencia de muestreo fs = 8 kHz. Trácela y asocie su forma de onda con los diversos
fonemas.

Separe N = 500 muestras de la primera vocal “a”; por ejemplo, las que van de n = 1501 a
2000, y asígneselas a la secuencia y[n]. Elimine el nivel medio (mean ) de este segmento de
señal y multiplíquelo luego por una ventana de Hamming (hamming ). Observe la forma de
onda del segmento de señal correspondiente a esta “a”.

Calcule el cepstrum complejo de y[n] (cceps ) y asígnelo a la secuencia yc[n]. Observe el


carácter de esta secuencia (whos ) y saque conclusiones teniendo en cuenta que se partió de
una secuencia real.

Rote (fftshift) la secuencia de cepstrum complejo, yc[n], para que su forma de onda principal
quede centrada en la gráfica. Trácelo y observe que:
• La secuencia de cepstrum no está limitada, sino que es de duración infinita, observándose
en la gráfica solo el segmento central alrededor del origen de quefrency que está limitado
por la cantidad de puntos que posee la secuencia a la que se le calculó el cepstrum.

• El cepstrum está compuesto por una forma de onda de gran amplitud, centrada en el origen
de quefrency, que decae rápidamente, la cual se ha determinado que corresponde al
cepstrum de la respuesta impulsiva del tracto vocal; esto es, a h$ [n].

• Existen ondas laterales en forma de picos periódicos de menor amplitud, los que se ha
podido determinar que corresponden al cepstrum de la señal resultante de las oscilaciones
de las cuerdas vocales; esto es, a x$ [n].

Uno de los problemas más difíciles a la hora de recuperar una secuencia a partir de su
cepstrum es evitar el aliasing que estas últimas poseen a causa de la longitud infinita que
teóricamente posee la secuencia de cepstrum y al hecho de utilizar FFT en lugar de DTFT, lo

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 67

que origina que al aplicar IFFT se regrese a una secuencia periódica en el tiempo. Para
observar este fenómeno, trate de recuperar la señal de voz de la “a” a partir de su cepstrum,
yc[n]. Utilice para ello la siguiente secuencia de pasos

fft → exp → ifft

Amplíe (zoom on) la parte de la señal correspondiente a las pequeñas amplitudes que
ocurren en las quefrency que van desde la muestra 20 a la 120 (teniendo en cuenta que el
centro está en el centro de la gráfica). Este intervalo no es arbitrario; en señales de voz de
personas normales, digitalizadas a 8 kHz, el período del pich va de 20 muestras, en personas
de alto pich, hasta 120 muestras, en personas de bajo pich. Los picos de esta señal están
asociados a una señal periódica cuyo período es igual al período fundamental, To, de la señal
resultante de las vibraciones de las cuerdas vocales (secuencia x[n] del esquema anterior), de
modo tal que la frecuencia de muestreo, fs, dividida por el período de los impulsos del
cepstrum complejo, corresponde con la frecuencia fundamental de la voz. Determine esta
frecuencia.

Con un filtro pasobajo en quefrency, pb[n], separe el lóbulo principal, asociado a la respuesta
impulsiva del tracto vocal; mientras que con un filtro pasoalto en quefrency, pa[n], separe la
región del cepstrum asociada con las oscilaciones de las cuerdas vocales. Asigne el resultado a
las variables hc[n] y pc[n] respectivamente; esto es,

1, − N1 ≤ n ≤ N1
pb[n] = 
0 otro caso.

0, − N1 ≤ n ≤ N1
pa[n] = 
1 otro caso.

en ambos casos -N/2 ≤ n ≤ N/2-1, recordando que se ha tomado N = 500, y N1 debe escogerla
de forma tal que pueda separar el lóbulo principal de los impulsos laterales. Finalmente,
hc[n] = pb[n] yc[n]

pc[n] = pa[n] yc[n].

Calcule el cepstrum inverso de cada uno de los segmentos separados en el paso anterior. Para
evitar el aliasing en el tiempo calcule la fft en un gran número de puntos. Desprecie la parte
imaginaria del resultado final, ya que esta aparece como un error debido a la precisión finita

Ejercicios en MATLAB para Procesamiento Digital de Señales


Tema # 8: Transformada de Hilbert, Cepstrum y Sistemas Homomórficos 68

de la máquina. Observe las dos secuencias resultantes; estas son un estimado de la respuesta
impulsiva del tracto vocal, h[n], y de las oscilaciones de las cuerdas vocales, x[n].

Compruebe que sus cálculos fueron correctos determinando el cepstrum de las secuencias
resultantes del paso anterior. Evidentemente, debe regresar a las secuencias de partida hc[n] y
pc[n].

Construya una señal que simule a x[n] mediante

x1[n] = ∑ A msen(2πmf o n / fs)


m

donde “m” es el índice del armónico y fo la frecuencia fundamental de la voz, calculada


anteriormente. Considere solo el fundamental y los tres primeros armónicos superiores. Las
amplitudes tómelas de forma proporcional a las que poseen los picos, de la secuencia de
cepstrum, asociados a cada armónico. En este paso se ha despreciado el desfasaje entre los
diversos armónicos.

Para comprobar que la forma de onda de las oscilaciones de las cuerdas vocales es semejante a
la que sintetizó en el paso anterior, calcule el cepstrum complejo de la secuencia x1[n] creada
y compare los resultados con la secuencia de ceptrum que le calculó a la verdadera vocal “a”.

Sintetice la señal de voz a partir de la convolución de la respuesta impulsiva del tracto vocal y
la forma de onda de las oscilaciones de las cuerdas vocales y compare su resultado con el de la
señal de voz original.

Ejercicios en MATLAB para Procesamiento Digital de Señales


69

Anexo I: Respuestas de algunos ejercicios


Tema 1:Secuencia y Sistemas discretos
en el dominio del Tiempo

Ejercicio 2

Ejercicio 4

Ejercicio 6

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 70

Tema 2 Transformada de Fourier


y respuestas de frecuencias

Ejercicio 2

Ejercicio 4

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 71

Ejercicio 8

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 72

Reducion del “leakage” espectral

Ejercicio 9

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 73

Tema 3: Transformada Z.

Ejercicio 2

Ejercicio 5

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 74

Tema 4 : Filtros Digitales.

Ejercicio 4

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 75

Ejercicio 5

Ejercicio 8

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 76

Tema 5:Secuencias Aleatorias.

Ejercicio 3

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 77

Ejercicio 7

Potencia media de r[n] = 0.98230


Potencia media de y[n] =17.66913

PERIODOGRAMA de y[n]
Longitud de los segmentos (# muestras) = 128
Solapamiento entre segmentos (# muestras) = 64
Resolución de frecuencia (Hz-s) = 0.0078
Cantidad de segmentos promediados = 92
Potencia media del periodograma = 17.8179

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 78

Ejercicio 8

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 79

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 80

Tema 6 : Estructuras Para Sistemas LTI.

Ejercicio 1
Respuesta de magnitud de H(z) Respuesta multiplicando el numerador por 0.5
1.4 0.7

1.2 0.6

1 0.5

Ganancia
0.8 0.4
Ganancia

0.6 0.3

0.4 0.2

0.2 0.1

0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Frec. (Hz-s) Frec. (Hz-s)

Respuesta multiplicando el numerador por 2 Respuesta de las tres etapas. Gtotal = 1


3 5

2.5 4

2
3
Ganancia

1.5
2
1

0.5 1

0 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Frec (Hz-s)

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 81

Ejercicio 5

Respuestas de frecuencia de H(z) Respuestas de magnitud de las cuatro secciones


1 1

H1(z)
0.8 0.5
Magnitud

0.6
0
0 0.1 0.2 0.3 0.4 0.5
0.4 1
0.2

H2(z)
0.5
0
0 0.1 0.2 0.3 0.4 0.5 0
0 0.1 0.2 0.3 0.4 0.5
5
0

H3(z)
-5
Fase (rad)

0
0 0.1 0.2 0.3 0.4 0.5
400
-10

H4(z)
200

-15 0
0 0.1 0.2 0.3 0.4 0.5 0 0.1 0.2 0.3 0.4 0.5
Frec. (Hz-s) Frec. (Hz-s)

Diagrama de Ceros de H(z)


Respuestas de frecuencias de H1(z)*H2(z)*H3(z)*H4(z)
200
2.5
150
2
Magnitud

1.5 100

1 50
Imaginary part

0.5
0
0 0 0.1 0.2 0.3 0.4 0.5

-0.5
0
-1

-1.5 -5
Fase (rad)

-2
-10
-2.5

-3 -2 -1 0 1 2 3 -15
Real part 0 0.1 0.2 0.3 0.4 0.5
Frec. (Hz-s)

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 82

Tema 7 : Muestreo, Interpolación y Diezmado


de secuencias.

Ejercicio 1

Ejercicio 2

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 83

Respuesta de frecuencias del filtro pasobajo ideal

Respuesta de frecuencias del filtro interpolador de


zero-order hold

Respuesta de frecuencias del filtro interpolador


lineal

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 84

Tema 8 :Transformada de Hilbert, Cepstrum y


Sistemas Homomórficos.

Ejercicio 1

Ejercicio 7

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 85

Ejercicio 8

Ejercicios en MATLAB para Procesamiento Digital de Señales


Anexo II

Principales funciones de MATLAB utilizables en la solución de los ejercicios


Funciones generales
Función Descripción
help Ayuda.
clear Limpia variables o funciones de la memoria.
whos Lista las variables actuales.
load Carga variables de un disco o fichero.
save Salva variables en disco.
zoom Agranda o achica parte de un gráfico.
figure Crea una ventana gráfica.
plot Traza vectores o matrices.
subplot Divide la ventana gráfica para varios trazos.
stem Traza secuencias discretas en forma de espigas.
mesh Gráfica tridimensional.
semilogx Gráfico con eje de abcisas con escala logarítmica.
hold Retiene el gráfico actual.
title Adiciona texto en la parte superior del gráfico.
xlabel Adiciona texto en el eje x del gráfico.
ylabel Adiciona texto en el eje y del gráfico.
axis Controla las escalas de los ejes.
grid Adiciona rejilla al gráfico.
pause Espera una respuesta del usuario (tecla).
for Repite sentencias un numero específico de veces.
if Ejecuta sentencias condicionalmente.
sum Suma los elementos.
prod Producto de los elementos.
cumsum Suma acumulativa de los elementos (sumatoria).
cumprod Producto acumulativo de los elementos (productoria).
diff Derivada.
rem Residuo luego de la división.
fix Redondea hacia cero.
floor Redondea hacia menos infinito.
ceil Redondea hacia más infinito.
sign Función signo.
zeros Matriz de ceros.
ones Matriz de unos.
flops Cuenta la cantidad de operaciones en punto flotante.
clock Hora actual.
etime Lapso de tiempo.
size Dimensión de la matriz.
length Largo de un vector.

Ejercicios en MATLAB para Procesamiento Digital de Señales



Anexo 2: Principales funciones de MATLAB . 87

Tema I: Secuencias en el dominio del tiempo.


Función Descripción
det Determinante de una matriz.
inv Inversa de una matriz.
svd Descomposición en valores singulares.
mean Valor medio de un vector o matriz.
sawtooth Genera forma de onda triangular.
sinc Genera la función sinc: sen(πx)/(πx).
real Parte real de un numero complejo.
imag Parte imaginaria de un numero complejo.
conj Compleja conjugada.
abs Magnitud, valor absoluto.
angle Ángulo o argumento.
max Componente mayor .
min Componente menor.
sqrt Raíz cuadrada.
xcorr Función de correlación cruzada.
corrcoef Calcula el coeficiente de correlación.
xcov Función de covarianza.
conv Convolución unidimensional entre dos secuencias.
exp Exponencial.
fliplr Abate una matriz con respecto a su columna central.

Tema II: Transformada de Fourier y respuesta de frecuencias.


Función Descripción
fft Transformada rápida de Fourier unidimensional.
ifft Transformada rápida de Fourier inversa.
fftshift Desplaza la respuesta de frecuencias a w + π.
unwrap Traza la respuesta de fase eliminando los saltos de fase.
grpdelay Retardo de grupo de un filtro digital.
freqspace Espaceamiento en frecuencias para la respuesta de frecuencias.
psd Estimación de densidad espectral de potencia.
nextpow2 Calcula la potencia de 2 más próxima que sea mayor a un número dado.
log10 Logaritmo de base 10.
log Logaritmo de base e.
logspace Genera un vector con valores de los elementos logaritmicamente espaceados.

Ejercicios en MATLAB para Procesamiento Digital de Señales



Anexo 2: Principales funciones de MATLAB . 88

Tema III: Transformada Z.


Función Descripción
freqz Respuesta de frecuencia a partir de la transformada Z.
tf2zp Convierte de función de transferencia a ceros-polos.
zp2tf Convierte de ceros-polos a función de transferencia.
zplane Grafica los polos y ceros en el plano Z.
filter Implementa un filtro digital unidimensional.
impz Respuesta al impulso de un filtro digital.
roots Halla las raíces de un polinomio.

Tema IV: Filtros digitales.


Función Descripción
chebyord Selección del orden del filtro de Chebyshev tipo 1 .
buttord Selección del orden de un filtro de Butterworth.
cheby1ord Selección del orden de un filtro de Chebyshev 1.
cheby2ord Selección del orden de un filtro de Chebyshev 2.
ellipord Selección del orden de un filtro elíptico.
besself Diseño de un filtro analógico de Bessel.
butter Diseño de un filtro de Butterworth.
cheby1 Diseña filtro Chebyshev tipo 1.
cheby2 Diseña filtro Chebyshev tipo 2.
ellip Diseño de un filtro elíptico.
freqs Respuesta de frecuencia en el dominio transformado de Laplace.
bilinear Convierte un filtro analógico a digital utilizando la transformación bilineal.
impinvar Convierte un filtro analógico a digital utilizando la invarianza al impulso.
impulse Respuesta al impulso de sistemas lineales de tiempo continuo.
boxcar Crea una ventana rectangular.
hamming Crea una ventana de Hamming.
hanning Crea una ventana de Hanning.
blackman Crea una ventana de Blackman.
bartlett Crea una ventana de Bartlett o triangular.
chebwin Crea una ventana de Chebyshev.
kaiser Crea una ventana de Kaiser.
fir1 Diseño de filtro FIR pasobajo, pasoalto, pasobanda y supresor de banda usando método
de enventanado.
fir2 Diseño de filtro FIR con respuesta arbitraria usando método de enventanado.
remezord Selección del orden de un filtro FIR de Parks-McClellan.
remez Diseño de un filtro FIR por el método de Parks-McClellan.

Ejercicios en MATLAB para Procesamiento Digital de Señales



Anexo 2: Principales funciones de MATLAB . 89

Tema V: Secuencias aleatorias.


Función Descripción
hist Trazado del histograma.
bar Genera un gráfico de barras.
contour Trazado de hiperplanos (contornos) tridimensionales.
std Desviación estándar.
var Varianza.
avperiod Dada una secuencia x[n] calcula su periodograma promedio.
crosprdg calcula el espectro de potencia cruzado entre dos secuencias.
cohere Estimado de la función de coherencia.
median Valor de la mediana.
rand Genera números pseudoaleatorios con función de densidad uniforme.
randn Genera números pseudoaleatorios con función de densidad normal.

Tema VI: Estructuras para sistemas LTI.


Función Descripción
sos2tf Convierte cascada de etapas de segundo orden a sistema de orden superior.
tf2sos Descompone sistema de orden superior en cascada de segundo orden.
sos2ss Conversión de cascada de sistemas de segundo orden al espacio de estados.
ss2sos Conversión de sistema en el espacio de estados a cascada de segundo orden.
sos2zp Determina el factor de escala, los polos y ceros de la cascada de segundo orden.
zp2sos Dados los polos, ceros y el factor de escala, determina la cascada de segundo orden.
ss2tf Convierte de espacio de estado a función de sistema.
tf2ss Convierte de función de sistema a espacio de estado.
zp2ss Dados los polos, ceros y el factor de escala, determina el espacio de estado.
ss2zp Dado el espacio de estado determina los polos, ceros y el factor de escala.
flops Cuenta las operaciones en punto flotante.
filtfilt Implementa filtros IIR con fase lineal mediante abatimiento.
residuez Expansión en fracciones parciales en el dominio z.
poly Construye el polinomio a partir del conocimiento de sus raices.

Tema VII: Muestreo, interpolación y diezmado de secuencias.


Función Descripción
interp Eleva la frecuencia de muestreo de una secuencia.
decimate Reduce la frecuencia de muestreo de una secuencia.
resample Modifica la secuencia de muestreo de una secuencia.

Tema VIII: Transformada de Hilbert, cepstrum y sistemas homomórficos.


Función Descripción
hilbert Transformada Hilbert de una secuencia.
rceps Cepstrum real de una secuencia.
cceps Cepstrum complejo de una secuencia.

Ejercicios en MATLAB para Procesamiento Digital de Señales

You might also like