EjerciciosMatlab (DSP)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 101

®

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.

Como más naturalmente se presentan las señales en el mundo físico es en forma continua como funciones de
una variable independiente, que usualmente es el tiempo o el espacio, y que son comúnmente llamadas
señales analógicas.

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.

El procesamiento digital de señales analógicas es, en sentido amplio, un término que describe el uso de
computadoras digitales en sistemas de propósito general, o procesadores digitales de señales (DSP) en
sistemas de propósito específico para transformar las secuencias durante la solución de diversos problemas.
Cuando el sistema de PDS se inserta en el mundo físico para transformar una señal analógica en otra
igualmente analógica, este consta fundamentalmente de tres pasos:
• Conversión de la señal analógica a señal de tiempo discreto (secuencia).
• Procesamiento digital de dicha versión de tiempo discreto.
• Conversión de la señal procesada a forma analógica nuevamente.

No obstante, muchas veces no es necesario convertir nuevamente la señal de tiempo discreto a analógica, ya
que lo que interesa no es transformarla sino extraerle algún parámetro.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 2

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 3

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 4

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.

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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 5

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

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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 6

También algunos autores de textos destinados al procesamiento digital de señales han acompañado sus libros
con disquetes en los que se incluyen software específico para los temas que desarrollan, dentro de estos
podemos mencionar el SIGSYS presentado por H. Kwakernaak y R. Sivanen en "Modern Signals and
Systems", (1991). Este software posee un amplio y flexible intervalo de operaciones para generar y
manipular señales incluyendo transformada de Fourier, convolución e integración de ecuaciones
diferenciales.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 7

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.

• Mastering MATLAB® Version 5: A Comprehensive Tutorial and Reference, D. C. Hanselman and B.


C. Littlefield, Electrical Engineering Series, Prentice Hall, Englewood Cliffs, NJ, 1998.

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.

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

• Computer-Based Exercises for Signal Processing using MATLAB® Version 5, J. H. McClellan, C. S.


Burrus, A. V. Oppenheim, H. W. Schussler, T. W. Parks, and R. W. Schafer, Electrical Engineering
Series, Prentice Hall, Englewood Cliffs, NJ, 1998.

• Mastering DSP Concepts Using MATLAB®, A. Ambardar and C. Borghesani, Electrical Engineering
Series, Prentice Hall, Englewood Cliffs, NJ, 1998.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Introducción 8

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.

• Signals and Systems: Continuous and Discrete, 4th Edition, R. E. Ziemer, W. H. Tranter and D. R.
Fannin, Electrical Engineering Series, Prentice Hall, Englewood Cliffs, NJ, 1998.

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.
El vector columna 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 chirp x4[n] = sen((2πnf/fs + π/3)nf/fs), con f/fs = 0.01 y 0 ≤ n ≤ 300.
h) La secuencia de ondas triangulares
⎧n
⎪ 20 0 ≤ n < 20,
⎪⎪ n
x5[n] = ⎨2 − 20 ≤ n < 60,
⎪ 20
⎪ n −4 60 ≤ n < 80.
⎪⎩ 20

i) El diente de sierra
⎧ n
⎪ 0 ≤ n < 20
x6[n] = ⎨ 20
n
⎪ −2 20 ≤ n < 40.
⎩ 20

j) Modifique el diente de sierra anterior para que tenga: 4 segundos de duración muestreados a 300
muestras/seg, valor medio 0.5 y 2 dientes/seg. Compare su resultado con el que ofrece la función
sawtooth de MATLAB®.

3. Para la secuencia compleja


x4[n] = (0.6 + j0.7)n, 0 ≤ n ≤ 100

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo 11

Genere y grafique:
a) Las partes real e imaginaria.
b) La conjugada.
c) Su magnitud y argumento.
d) La partes par e impar.
e) Las partes hermítica y antihermítica.

4. Para la secuencia
x5 = [1 2 0 -1 -2 0 1 2 0 -1 -2 0];
Calcule, a partir de sus respectivas definiciones:
a) Su valor eficaz.
b) Su factor de forma.
c) Las normas L1 y L2.
Compare los resultados del inciso c) con los que se obtienen usando la función norm de MATLAB®.

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

c) Convierta el eje de magnitud de ambas señales a unidades de Volts. Tenga presente que al convertidor
A/D de 11 bits se le normaliza su entrada al rango de 0 a 10 mV.

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.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo 12

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

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

c) Calcule la secuencia de autocorrelación del siguiente tren de pulsos sinusoidales con frecuencia
linealmente creciente dados en la secuencia z[n] mediante
» time = 0:0.005:20;
» N = 3;
» z = sin(sin(time).*time*N);

Cuente la cantidad de ciclos en cada pulso de z[n]. Analice la forma en que varía la secuencia de
autocorrelación teniendo en cuenta la forma en que varía la secuencia z[n]. Pruebe con otro valor de N
entero.

8. En este ejercicio se analizarán algunos aspectos relacionados con la norma de una secuencia. Genere el
vector columna
» V = [0.5662; 0.82428];

trácelo en un sistema cartesiano mediante


» plot(V(1),V(2),’w’, 'markersize',16); axis([0 1 0 1]);

y verifique que su distancia al origen de coordenadas es la unidad, para lo cual posee dos alternativas:

I. Calcular la norma L1 mediante la función norm de MATLAB® haciendo


» normaL1 = norm(V)

II. Considerar que el vector V contiene las partes real e imaginaria de un número complejo; esto es;
» a = V(1) + V(2)*i
» mod = abs(a)

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo 13

Genere ahora una matriz P con siete versiones del vector V mediante la adición de ruido a este,
» Q = 7;
» P = randn(2,Q)*0.05 + V*ones(1,Q)

y trace la constelación formada por estos puntos en un sistema cartesiano mediante


» plot(P(1,:),P(2,:),'.w','markersize',16)
» grid; axis([0 1 0 1]);

Como puede apreciar estos puntos poseen distancias al origen muy diversas, lo cual puede comprobar
» normadeP = [];
» for j = 1:Q,
normadeP = [normadeP norm(P(:,j))];
» end;
» normadeP

Usted puede lograr que la constelación creada se alinee para que todas sus componentes posean distancia
unitaria hasta el origen del sistema cartesiano haciendo una normalización de los elementos del vector P
utilizando la función normc de MATLAB®

» P1 = normc(P)
» plot(P1(1,:),P1(2,:),'.w','markersize',16)
» grid; axis([0 1 0 1])

Este último paso cobra mayor significado si en lugar de un sistema bidimensional como el anterior se trata
de un sistema N-dimensional; por ejemplo, en un caso tridimensional en que se posee un punto en el
espacio dado por las coordenadas indicadas en el vector
» V = [0.49876; 0.72248; 0.47881];

Puede trazar este punto mediante


» plot3(V(1),V(2),V(3),'.w','markersize',16)
» grid; axis([0 1 0 1 0 1])

y comprobar que su distancia al origen es unitaria.

Genere ahora la constelación de siete puntos en el entorno del punto V mediante


» Q = 7;
» P = randn(3,Q)*0.1 + V*ones(1,Q)

la que puede observar mediante


» plot3(P(1,:),P(2,:),P(3,:),'.w','markersize',16)
» grid; axis([0 1 0 1 0 1])

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 1: Secuencias en el dominio del tiempo 14

Compruebe que las distancias de estos puntos al origen están distribuidas alrededor de la unidad.

Para forzar a que las distancias al origen de todos los puntos sea unitaria utilice nuevamente la función
normc y compruebe el resultado, para lo cual puede trazar una esfera mediante
» plot3(P1(1,:),P1(2,:),P1(3,:),'.w','markersize',16)
» grid;
» hold on
» [x,y,z] = sphere(40);
» surf(0.98*x,0.98*y,0.98*z);
» view(75,15);

Ahora puede rotar la figura utilizando la función view de MATLAB®, y observarla desde otro azimuth
que le permita una mejor observación de la constelación sobre la superficie de la esfera.

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

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. Realice un análisis de la composición espectral de la secuencia pulso triangular simétrico dada por
⎧ L - n, 0 ≤ n ≤L

Δ[n] = ⎨ L + n, -L < n < 0
⎪ 0,
⎩ otro caso

utilizando un ancho del pulso de 2L-1 = 21 muestras y valores de -20 ≤ n ≤ 20. Tenga en cuenta que un
pulso triangular simétrico puede obtenerse mediante la convolución de dos pulsos rectangulares, lo que en
el dominio de la frecuencia equivale a la multiplicación de los espectros de la transformadas de los pulsos
rectangulares. Analice la relación que existe entre ancho del pulso y cruces por cero de la respuesta de
frecuencia.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

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

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

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

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

d) El tipo de secuencia que es H[k]. Se corresponde con el tipo de secuencia de h[n]?

e) La frecuencia de corte (aproximada) del filtro.

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

9. Utilizando el sistema con la respuesta impulsiva h[n] que se encuentra en el fichero “respimp1.mat”, y su
DFT de 128 puntos H128[k], coloque en cascada con él un sistema h2[n] con respuesta de frecuencias de
magnitud unitaria y argumento opuesto,

H(ejw) H1( e jw ) = e − j∠H ( e


jw
)

Sistema equivalente
H2(ejw)

esto es, si
H(e jw ) = H(e jw ) exp(jθ (w))
entonces
H1(e jw ) = exp(-jθ (w))
Observe las respuestas de frecuencia de estos sistemas

Un sistema como el resultante no puede lograrse en el campo analógico, ya que un desfasaje cero a toda
frecuencia solo le corresponde a un sistema resistivo puro, pero estos no son selectivos en frecuencias.
Determine:
a) La respuesta impulsiva del sistema equivalente h2[n] y observe sus partes real e imaginaria.

b) El tipo de secuencia que es h2[n] y si su tipo se corresponde con el de H2[k].

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

c) La clasificación del sistema equivalente.

El tipo de simetría de h2[n] se debe a que MATLAB® solo calcula la ifft en el intervalo [1, N], siendo N
el número de puntos de la transformada. Trace h2[n] en el intervalo [-N/2, N/2] utilizando fftshift;
Observe el trazado de la secuencia resultante y determine la posición de su máximo

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

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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

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

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.

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:

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 23

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.

e) Compruebe que la convolución (conv) de los coeficientes de cada una de las tres subfunciones
conduce a los coeficientes de la función total H(z). Compare el resultado con el obtenido utilizando la
función de MATLAB® sos2tf.

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)

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 24

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.

b) Si se produce el cambio de escala


TZ
wnh[n] H(z/w), w: real >1.

b1) Utilizando w = 1.2 y w = 0.7, realice la modificación pertinente a los coeficientes bk y aj para
construir H(z/w). Llámeles b2, a2 y H2(z).

b2) Calcule y trace la respuesta impulsiva (impz) del sistema H2(z). Llámela h2[n]. Compárela con
h[n]

b3) Construya la secuencia wn = wn y la secuencia h3[n] = wnh[n].

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

b5) Analice el efecto que se ha producido en la respuesta de magnitud contra frecuencias a causa de
acercar o alejar los polos con respecto a | z | = 1.

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. Sean los sistemas pasobanda no causales:


H1(z) = -0.0373z2 + 0.9253 -0.0373z-2

0.444z 5
H2(z) =
z 2 − 0.45z + 0.533

a) Trace las respuestas de magnitud y fase (freqz , abs y angle ) de cada uno de ellos.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 3 : Transformada Z 25

b) Trace la respuesta impulsiva (impz ) de cada uno de los sistemas no causales.


c) Conviértalos a sistemas causales y trace nuevamente las respuestas de magnitud y fase de cada uno.
d) Trace las nuevas respuestas impulsivas de los sistemas convertidos a causales.

7. 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
( z − rp e p )( z − rp e p )
jw

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.

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

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.

d) Descomponga el filtro IIR diseñado en la combinación paralelo de redes de primer orden utilizando la
función residuez .

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.

e) Obtenga un diseño de igual orden con ventana rectangular (fir1 ). Compare las respuestas de magnitud
trazándolas en el mismo gráfico.

3. Diseñe un filtro pasobanda de tercer orden con frecuencias esquinas de la banda de paso en 14.4 Hz y
20.07 Hz, utilizando el método de Yule-Walker para el cual MATLAB® brinda la función yulewalker .
La frecuencia de muestreo del sistema en que se inserta el filtro es de 500 Hz.
Trace sus respuestas de magnitud y fase (en radianes) contra frecuencias expresando el eje de
frecuencias en unidades de Hz.

Calcule y trace su respuesta de demora de grupo (grpdelay) contra frecuencias.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 28

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

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 ganancia cae a
2
-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.

5. Pueden combinarse varias copias de un filtro FIR con respuesta de frecuencia de bajas prestaciones para
producir un filtro compuesto con respuesta mejorada. Este método se conoce como twicing.
a) Diseñe un filtro FIR pasobajo de pequeña longitud impar utilizando ventana de Kaiser. Las
frecuencias esquinas de las bandas de paso y rechazo deben ser wp = 1.0 rad. y wr = 2.0 rad. La
amplitud máxima del rizado en las bandas de paso y rechazo debe ser δp = δr = 0.11.
Trace la respuesta impulsiva, ha[n], y la respuesta de magnitud contra frecuencias del filtro.

b) Construya un nuevo filtro FIR, hb[n], que consista en la cascada de dos sistemas como el diseñado en
el inciso a); esto es

ha[n] ha[n]

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 29

Trace la respuesta impulsiva y la respuesta de magnitud contra frecuencias del sistema hb[n].
Determine las nuevas frecuencias esquinas y la amplitud de los rizados en las bandas de paso y
rechazo. Note que el rizado en la banda de paso ha aumentado pero el de la banda de rechazo ha
disminuido.

c) Construya el nuevo sistema hc[n] formado por los bloques que se muestran a continuación. El bloque
indicado con 2δ[n-d] representa una demora de d muestras con ganancia 2; siendo d la demora del
filtro ha[n] diseñado en el inciso a).

ha[n] 2δ[n-d] +

-ha[n]

Trace la respuesta impulsiva y la respuesta de magnitud contra frecuencias del sistema hc[n].
Determine las nuevas frecuencias esquinas y la amplitud de los rizados en las bandas de paso y
rechazo. Note que el rizado en la banda de paso ha disminuido pero el de la banda de rechazo ha
aumentado.

d) Construya ahora el sistema hd[n] formado por los bloques siguiente

ha[n] ha[n] 3δ[n-d] +

-2ha[n]

Trace la respuesta impulsiva y la respuesta de magnitud contra frecuencias del sistema hd[n].
Determine las nuevas frecuencias esquinas y la amplitud de los rizados en las bandas de paso y
rechazo. Note que los rizados en las bandas de paso y rechazo han disminuido.

e) Con los valores de frecuencias esquina y atenuación que logra el sistema hd[n] del inciso d), construya
un filtro FIR directamente utilizando ventana de Kaiser. Nómbrelo he[n]. Trace su respuesta impulsiva
y la respuesta de magnitud contra frecuencias.
Determine el total de operaciones de multiplicación y adición requeridas por el sistema he[n]
construido en este inciso e) y compárelas con los requeridos por el sistema hd[n] construido en el
inciso d). Saque conclusiones.

6. Este ejercicio está relacionado con el diseño de filtros FIR utilizando el método de muestreo en
frecuencias.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 30

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.

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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 31

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.

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

⎧ ( −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.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 32

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 respuestas impulsivas de ambos filtros (analógico y digital) utilizando las
funciones de MATLAB freqs , freqz , impulse e impz .

b) Repita lo planteado en el paso a) pero diseñando ahora un filtro con respuesta pasoalto, para lo cual se
invierten las frecuencias esquinas, siendo wr = 3π/8 y wp = 5π/8.

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

Construya la función de sistema, Hin(z), de este filtro digital.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 33

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 34

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 método de la transformación
2 ⎛ z − 1⎞
bilineal del tipo ⎜ ⎟ tenga la misma respuesta de magnitud a 10 Hz que el filtro analógico
T ⎝ z + 1⎠
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.

10. Un filtro “comb” (peine) recursivo posee una respuesta de frecuencia periódica. En el plano z, este posee
un patrón de ceros radialmente simétricos alrededor del círculo unitario.
a) Utilizando la función de MATLAB® zp2tf genere la función de sistema de un filtro digital que
posea un cero en z = 1 y un polo en z = 0.7. Muestre el diagrama de polos y ceros, así como la
respuesta de magnitud contra frecuencias del filtro diseñado expresando el eje de frecuencias en
unidades de rad-s; esto es, en el intervalo [0, π]. Nombre con H(z) a este filtro.

b) Repita el procedimiento del inciso a) pero ahora utilizando seis ceros en z1,2 = exp(±jπ/3), z3,4 =
exp(±j2π/3), y z5,6 = ± 1; así como seis polos en z1,2 = 0.942exp(±jπ/3), z3,4 = 0.942exp(±j2π/3), y z5,6
= ± 0.942. Nombre con H1(z) a este filtro. Fíjese en las frecuencias a las cuales la respuesta de
magnitud es cero.

c) Compare las respuestas impulsivas de los sistemas H(z) y H1(z) utilizando la función impz de
MATLAB®. Saque conclusiones.

d) Determine cual es la transformación simple que permite obtener directamente H1(z) a partir de H(z).
Tal transformación es la que permite el diseño de filtros “comb”.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 4: Filtros Digitales. 35

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

12. En este ejercicio se construirán diversos pares de filtros complementarios.


a) Filtros con suma directa complementaria.
Diseñe un filtro FIR utilizando ventana de Hamming (fir1 ) de longitud impar y frecuencia central
de la banda de transición en 0.2 Hz-s. Nómbrelo H1(z). Visualice su respuesta impulsiva h1[n].

Calcule el filtro h2[n] = δ[n] - h1[n]. Visualice su respuesta impulsiva y compárela con la de h1[n].

Calcule y trace las respuestas de magnitud y fase contra frecuencias de ambos filtros, H1(ejw) y
H2(ejw). Compárelas.

Obtenga el sistema suma de ambos filtros y trace sus respuestas de frecuencias.

b) Filtros con respuesta pasotodo complementaria.


Construya los filtros pasotodo

− 0.6406 + 1.9559 z −1 − 2.2193z −2 + z −3 0.6417 − 1.4652 z −1 + z −2


A 0 ( z) = A 1 ( z) =
1 − 2.2193z − 1 + 1.9559 z − 2 − 0.6406z − 3 1 − 1.4652 z − 1 + 0.6417 z − 2

Obtenga el sistema H1(z) = ½[A0(z) + A1(z)] y trace sus respuestas de magnitud y fase contra
frecuencias.

Obtenga el sistema H2(z) = ½[A0(z) - A1(z)] y trace sus respuestas de magnitud y fase contra
frecuencias. Compárelas con H1(z). Determine el tipo de función aproximante de H2(z).

Pruebe si los filtros H1(z) y H2(z) son pasotodo complementarios.

c) Sistemas con potencia complementaria.


Pruebe si los sistemas H1(z) y H2(z), obtenidos en el inciso b), son de potencia complementaria.

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

Ejercicios

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

⎧ x x2
⎪ 2 e − 2 λ2 , x≥0

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 se comprobará el teorema del límite central.

a) Genere M = 8 secuencias aleatorias de gran longitud (N) que posean función de densidad
probabilística uniforme. Recuerde que la función de MATLAB® rand(M,N) genera M secuencias
seudoaleatorias independientes, de longitud N cada una, y con fdp uniforme; esto es, una matriz MxN
con una SA por fila. Visualice las M realizaciones simultáneamente (strips )

Obtenga una nueva SA que sea el promedio de las 8 SA creadas. Para ello sólo basta con calcular
separadamente el valor medio de cada una de las columnas de la matriz creada. El resultado será un
vector 1xN que puede obtenerse utilizando mean .

Dado que las M = 8 realizaciones con fdp uniforme no tienen valor medio cero, desplace la SA
resultante del promediado para que tenga valor medio nulo; esto es, suprímale su valor de corriente
directa. Visualice la SA obtenida.

Trace el histograma de la SA con valor medio cero agrupando sus valores en 25 clases.
Superpóngale (hold on ) la curva teórica de fdp normal (Gaussiana). Recuerde llevar los ejes
verticales de ambas figuras a la misma escala.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 38

b) Repita los pasos del inciso a) utilizando M = 16 secuencias aleatorias en lugar de 8. Saque
conclusiones.

c) Repita los pasos del inciso a), pero partiendo de una cantidad suficiente de secuencias aleatorias con
fdp de Reyleigh (λ = 2). Saque conclusiones.

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

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.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 39

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

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.

c). Produzca dos secuencias aleatorias estadísticamente dependientes, w1[n] y w2[n], como consecuencia
de excitar los filtros #1 y #2 respectivamente con la secuencia u[n].
Grafique las secuencias de salida w1[n] y w2[n].

Calcule la media y la secuencia de autocorrelación de ambas salidas.

Produzca la secuencia suma: w3[n] = w1[n] + w2[n]. Grafíquelas.

Calcule la media de la suma, w3[n], y compruebe la relación que guarda con las medias de cada
una de las secuencias w1[n] y w2[n] individualmente.

Calcule la secuencia de autocorrelación de la suma, w3[n], y compruebe la relación que guarda


con las secuencias de autocorrelación de w1[n] y w2[n] individualmente.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 40

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

c) Genere la secuencia aleatoria


» x = sin(3*pi*[0:999]./16) + 0.5*sin(7*pi*[0:999]./16) + sqrt(0.12)*(rand(1,1000)-0.5);

Observe que esta secuencia posee componentes de amplitudes que son relativamente diferentes.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 41

Calcule y trace el periodograma promedio utilizando segmentos de 32 muestras con solapamiento


entre segmentos de 16 muestras.

Convierta el eje de ordenadas (Densidad de Potencia) a unidades de dB y trace nuevamente el


periodograma. Saque conclusiones.

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

c) Genere y trace las secuencias:


» x1 = sin(3*pi*[0:999]./16)+0.5*cos(7*pi*[0:999]./16);
» rand('seed',0);
» x = x1+sqrt(12)*(rand(1,1000)-0.5);
» y = x1+sqrt(12)*(rand(1,1000)-0.5);

Estime y trace el periodograma cruzado entre ambas secuencias utilizando segmentos disjuntos
de L = 32 muestras.

Determine la potencia activa cruzada en cada uno de los intervalos de frecuencia


[(k-0.5)/L, (k+0.5)/L], con k = 0, 1, …, L. Analice sus resultados.

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

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.

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

9. Genere 5 000 muestras de las secuencias u[n] y v[n] siguiendo el esquema siguiente

sen(2πn/14) u[n]

+ + v[n]
+
r[n]

La secuencia r[n] es un ruido blanco uniforme, cuya SNR con respecto a v[n] es uno.

a) Utilizando la función crosprdg creada en el ejercicio 6 estime la parte real de la Densidad Espectral de
Potencia Cruzada, en dB, entre las secuencias u[n] y v[n], y trace el periodograma cruzado. Utilice

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 43

segmentos disjuntos de longitud L = 32 muestras. Comente la comparación de su resultado con el de


la DEP cruzada teórica.

b) Estime la DEP de v[n] en dB y trace el periodograma promedio utilizando segmentos disjuntos de


longitud L = 32 muestras. Comente la diferencia entre este periodograma promedio y el periodograma
cruzado. Para facilitar la comparación puede utilizar la misma escala en los ejes de ordenadas de
ambos trazados.

c) Repita los incisos a) y b) utilizando segmentos disjuntos de 42 muestras. Saque conclusiones.


Juegue con las funciones psd y csd de MATLAB®

10. Para el sistema que se muestra en la figura

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

+ H2(z) y[n]

r2[n]
se tiene que :
¤ 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).

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 5: Secuencias Aleatorias. 44

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.

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.

Utilice la función cohere de MATLAB®.

11. Trace una curva teórica de fdp Gaussiana con valor medio cero y desviación estándar σ = 1.255.
Superpóngale a la curva anterior otra que responda a la fdp t-student con m = 1. Seleccione un recorrido
para la VA lo suficientemente amplio como para que el área bajo cada curvas sea lo más cercano posible
a la unidad. Observe que ambas curvas poseen la misma altura, pero diferente esbeltez. Saque
conclusiones en cuanto a la curtosis de ambas.

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 46

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 2 y trace la nueva respuesta de
magnitud contra frecuencias. Saque conclusiones.

Multiplique todos los coeficientes del numerador y denominador por 0.5 y trace la nueva respuesta de
magnitud contra frecuencias. Saque conclusiones.

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 47

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 48
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.

e) Repita el inciso c) pero utilizando una cascada de secciones de segundo orden que respondan a la forma
directa II de realización. Compare los resultados de este inciso con los obtenidos en c) y d). Saque
conclusiones.

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 .

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.

Visualice la secuencia filtrada.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 49

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.

Visualice la secuencia filtrada y compárela con la obtenida en a). Determine la secuencia de error
entre ambas.

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.

Visualice la secuencia filtrada y compárela con la obtenida en a). Determine la secuencia de error
entre ambas.

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.

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:

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 50

⎡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 T u[n] + du[n]

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 .

k) Utilizando el vector de estado de la respuesta libre calcule la energía del sistema en cada instante.
Diga si el sistema es pasivo.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Tema # 6:Estructuras para sistemas LTI 51

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.

f) Compruebe que los coeficientes de la función de sistema total, H(z), es la convolución de los
coeficientes de cada una de las secciones de segundo orden.

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


» 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 53

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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]

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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
⎧e − jw , | w| ≥ π / T
H(ejw) = ⎨
⎩ 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 # 7: Muestreo, Interpolación y Diezmado de Secuencias 56

5. La implementación directa de los esquemas diezmadores e interpoladores, a los que están asociados filtros
pasobajo, requiere de un extenso costo computacional debido a que las operaciones se estructuran a la
mayor razón de muestreo. Una vía de mejorar la eficiencia computacional es la utilización de filtros
polifase (ya sea FIR o IIR) en lugar de los filtros pasobajo, los que operan a menor razón de muestreo;
estos constituyen un ejemplo de sistema con múltiples razones de muestreo.
a) Implementación de un diezmador mediante filtro polifase. El esquema general de un diezmador, en el
que x[n] es la señal a diezmar, y y[n] la señal diezmada, es el siguiente

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

en la cual y[n] = x[Mn], siendo h[n] la respuesta impulsiva del filtro pasobajo antialiasing.

La estructura de un diezmador con filtro polifase, , es la que se muestra a continuación. Los filtros
polifase p0[n], p1[n], …, pM-1[n] están relacionados con el filtro pasobajo diezmador, h[n], mediante

pk[n] = h[Mn + k]
x[n] y[n]
M p0[n]

z-1 M p1[n]

z-2 M p2[n]

. . .
. . .
. . .
z-M+1 M pM-1[n]

Nótese que aunque ahora hay M filtros polifase en lugar del filtro diezmador, cada filtro polifase
contiene a lo sumo 1/M coeficientes; además, todos ellos operan a la menor razón de muestreo. De la
propia figura se observa que la función de sistema del filtro pasobajo diezmador es

H(z) = P0(z-M) + z-1P1(z-M) + z-2P2(z-M) + … + z-(M-1)PM-1(z-M).

A continuación diseñará un diezmador a razón M = 3.


Genere una secuencia x[n] de onda triangular entre cero y uno con 200 muestras y períodos de 20
muestras.

Diezme la secuencia x[n] a ritmo M = 3 utilizando la función decimate de MATLAB®.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

Utilice la función de MATLAB® fir1 para diseñar un filtro pasobajo de 90 coeficientes, frecuencia
de corte en w = π/M = π/3. Muestre sus respuestas de frecuencias y su respuesta impulsiva h[n].

Construya los filtros polifase p0[n], p1[n] y p2[n] a partir de h[n]. Muestre las respuestas de
frecuencias de cada uno, así como sus respuestas impulsivas y la demora de grupo. Observe que
estos subsistemas se aproximan a filtros pasotodo.

Estructure el diezmador completo utilizando los tres filtros polifase diseñados. No utilice la función
decimate de MATLAB®. Compare el resultado con el que brinda la función decimate de
MATLAB®.

Estructure el diezmador utilizando el filtro pasobajo original, h[n], con frecuencia de corte en π/3.
Compare los resultados de este paso con los obtenidos por las dos vías anteriores.

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 59

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.

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

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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.

Pruebe a realizar el mismo ejercicio con las secuencias:

n
I. x[n] = (-0.999) u[n].
II. x[n] = cos(0.2n)exp(-0.1n).

4. El transformador de Hilbert ideal (deseado)


⎧ π
jw
⎪⎪− 2 , 0<w≤π
Hd(e ) = ⎨
⎪ π , -π < w < 0
⎪⎩ 2

está indefinido para w = 0. Su respuesta impulsiva


⎧ 2 sen 2 ( πn / 2 )
⎪ , n ≠ 0.
hd[n] = IDTFT{Hd(e )} = ⎪⎨ πn
jw

⎪ 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].
• 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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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étodo Datos Rizado Máximo Atenuación Mínima Frecuencias Pendiente de la


en la Banda de en la Banda de de corte Respuesta de
Paso 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.

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

» 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 )}
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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

Calcule el espectro de la parte analítica y trace sus características de magnitud y fase contra
frecuencias. Saque conclusiones.

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

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.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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:

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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 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 transmitido y
jw jw
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 )}

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

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,
-N/2
h[n], con -N/2 ≤ n ≤ N/2, este no es causal, motivo por el 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]

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

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.

10. Un parámetro que caracteriza a todo sistema es su respuesta impulsiva. Dos ejemplos lo constituyen: el
estudio de las propiedades acústicas de locales, y la prospección geológica. En ambos es usual determinar
la respuesta impulsiva del local o del terreno aplicando, en el primer caso, un tren de impulsos generado
con un altavoz, y en el segundo caso, generando una onda expansiva a manera de impulso mediante una
detonación con explosivo. El esquema general que mide la respuesta impulsiva es el siguiente

Medio h1[n]
δ[n] Generador de
Físico
impulso(s) Transductor A/D
acústicos h[n]

siendo la salida del sistema la convolución

h1[n] = δ[n] Η h[n]

En cualquiera de los casos llega al transductor un conjunto de réplicas de la respuesta impulsiva del medio
que se originan como consecuencia de las diversas reflexiones que sufre cada impulso generado.

En el fichero “hsala.mat” se encuentran las respuestas impulsivas de dos salas: “hsala1” y “hsala2”, ambas
obtenidas para una frecuencia de muestreo de 8 kHz. Cárguelas (load ) y obsérvelas. Utilizando “hsala1”
se va a simular el efecto de las diversas réplicas de la respuesta impulsiva que llegan al transductor con
una separación de 500 muestras (62.5 ms) mediante
» rep = 500;
» imp = [1 zeros(1,rep-1)];
» imp1 = [imp 0.7.*imp 0.5.*imp];
» hconv = conv(hsala1,imp1);
» lhcon = length(hconv);

Observe estas señales y compare la respuesta impulsiva de la sala con la que recoge el transductor
“hconv”.

Calcule el cepstrum complejo de la señal recogida


» cep1 = cceps(hconv);

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

Observe la secuencia de cepstrum y analice en detalles lo que ocurre en las muestras 501, 1001, 1501, etc.
para lo cual puede resultarle útil la opción zoom on de MATLAB®. Estos picos se deben a los ecos de
los impulsos, los cuales pueden eliminarse mediante
» cep2 = cep1;
» for k = rep:rep:lhcon-rep, cep2(k+1) = 0; end;

Eliminados los picos puede retornarse al dominio del tiempo mediante


» HCE = fft(cep2);
» Y = exp(CE);
» y = fftshift(real(ifft(Y)));

Haga el alineamiento temporal de “y” con “hsala1” eliminando las primeras y últimas muestras de “y” y
observe esta secuencia.

En este caso se ha utilizado un sistema homomórfico para suprimir los ecos.

Disponiendo de la respuesta impulsiva de la sala pueden medirse parámetros tales como el Tiempo de
Reververación y la Definición:

El Tiempo de Reverberación, para un oyente en una posición de la sala, es el intervalo de tiempo que
transcurre desde el instante en que deja de emitirse un sonido dentro de la sala hasta que percibe ese
sonido con un nivel sonoro que es la millonésima parte (-60 dB) del nivel con que lo percibía al dejar de
emitirse [Schroeder, M. R., 1965, “New method of measuring reververation time”, J. Acoustic. Soc. Am.
37, pp. 409-12]. Su cálculo se lleva a cabo determinando la Curva de Caída de Energía Sonora

< y2[n] > = ∑ hsala1 [ n ]


2

que en MATLAB®
» fun(1)=sum(hsala1.^2);
» n=2:2048;
» fun(n)=fun(n-1)-(hsala1(n-1)).^2;
» energ = 10*log10(fun);

En la curva se observa que la energía sonora no cae linealmente, por lo que no debe tomarse el tiempo de
reverberación directamente del punto correspondiente a -60 dB. Más exacto es medir el EDT (Early
Decay Time) que es el tiempo necesario en caer a -10 dB, para luego determinar la muestra en que se
alcanzan los -60 dB mediante
» for k = 1:length(energ)
rou = round(energ(1)-energ(k));
if rou == 10, EDT = k; end
» end

Ejercicios en MATLAB® para Procesamiento Digital de Señales


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

» Treverv = EDT*6/8000

La Definición (D) es la relación entre la energía sonora que llega a un oyente en los primeros 50 ms a
partir de la generación del sonido y la energía sonora que percibe en todo el tiempo en que escucha el
sonido. Se expresa en porcentajes, siendo necesario que la Definición supere el 70% para que la
Inteligibilidad de la sala pueda considerarse buena. En MATLAB®
» D = (sum(hsala1(1:400).^2))./sum(hsala1.^2)*100

Analice el resultado obtenido.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


74

Anexo I: Respuestas de algunos ejercicios


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

Ejercicio 2

Ejercicio 5

Ejercicio 6

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 75

Tema 2 Transformada de Fourier


y respuestas de frecuencias

Ejercicio 2

Ejercicio 5

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 76

Ejercicio 10

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 77

Reducion del “leakage” espectral

Ejercicio 11

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 78

Tema 3: Transformada Z.

Ejercicio 2

Ejercicio 5

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 79

Ejercicio 6

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 80

Tema 4 : Filtros Digitales.

Ejercicio 6

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 81

Ejercicio 7

Ejercicio 11

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 82

Ejercicio 12

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 83

Tema 5:Secuencias Aleatorias.

Ejercicio 4

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 84

Ejercicio 8

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

Ejercicio 10

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 86

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 1: Respuestas de algunos ejercicios. 87

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

0.8 ai 0.4
ai
c c
n n
a a 0.3
n 0.6 n
a a
G G
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
ai
c 1.5
n
a
n 2
a
G 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. 88

Ejercicio 5

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


1 1

0.8 ) 0.5
z(
1
d 0.6 H
ut 0
i 0 0.1 0.2 0.3 0.4 0.5
n
g 0.4
a 1
M
0.2 )
z( 0.5
0 2
0 0.1 0.2 0.3 0.4 0.5 H
0
0 0.1 0.2 0.3 0.4 0.5
5
0
)
z(
3
-5 H
) 0
d 0 0.1 0.2 0.3 0.4 0.5
a(r
400
e
s
a -10
) 200
F z(
4
H
-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
d
ut 100
1.5 i
n
g
a
1 M 50

rt 0.5
a
p 0
y 0 0 0.1 0.2 0.3 0.4 0.5
r
a
ni
g -0.5
a 0
m I
-1

-1.5 ) -5
d
-2
a(r
e
s -10
-2.5 a
F

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

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

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

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

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.
cd Cambia el directorio de trabajo actual.
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.
strips Traza múltiples secuencias contenidas en una matriz de datos.
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).
disp Muestra texto en pantalla de comandos.
for Repite sentencias un numero específico de veces.
if Ejecuta sentencias condicionalmente.
fprintf Escribe datos en formato establecido.
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®. 94

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.
linspace Genera un vector con valor de los elementos linealmente espaceado.
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®. 95

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.
yulewalker Diseño de filtro IIR por el método de Yule-Walker.
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.
window Crea diversos tipos de ventanas.
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®. 96

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.
gamma Función gamma.
median Valor de la mediana.
geomean Media geométrica.
rand Genera números pseudoaleatorios con función de densidad uniforme.
randn Genera números pseudoaleatorios con función de densidad normal.
exprnd Genera números con función de densidad exponencial.
normrnd Genera números con función de densidad normal.
betapdf Función de densidad Beta.
binopdf Función de densidad Binomial.
chi2pdf Función de densidad Chi cuadrado.
exppdf Función de densidad exponencial.
gampdf Función de densidad gamma.
normpdf Función de densidad normal.
tpdf Función de densidad T.
norminv Valor crítico de la distribución normal.
mad Desviación media absoluta.

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.
fftfilt Implementación de filtros por el método de desplaza y suma.
filtfilt Implementa filtros IIR con fase lineal mediante abatimiento.
filtic Determina las condiciones iniciales de un filtro.
residuez Expansión en fracciones parciales en el dominio z.
poly Construye el polinomio a partir del conocimiento de sus raices.

Ejercicios en MATLAB® para Procesamiento Digital de Señales


Anexo 2: Principales funciones de MATLAB®. 97

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

También podría gustarte