UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones...

53
casa abierta al tiempo UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS E INGENIERIA CARRERA: INGENIERIA ELECTRONICA (COMPUTACION) MATERIA: PROYECTO TERMINAL I Y 11 TITULO: CANCELACION DE ECO EN SISTEMAS TELEFONICOS F E C U AGOSTO DE 1997 ALUMNOS: BERDEJA SANTISTEVAN LUIS ALBERTO GARCIA ORTIZ ALICIA MATRICULA 92221646 ASESOR MARIKO NAKANO

Transcript of UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones...

Page 1: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

casa abierta al tiempo

UNIDAD: IZTAPALAPA

DMSION: CIENCIAS BASICAS E INGENIERIA

CARRERA: INGENIERIA ELECTRONICA (COMPUTACION)

MATERIA: PROYECTO TERMINAL I Y 11

TITULO: CANCELACION DE ECO EN SISTEMAS TELEFONICOS

F E C U AGOSTO DE 1997

ALUMNOS: BERDEJA SANTISTEVAN LUIS ALBERTO GARCIA ORTIZ ALICIA

MATRICULA 92221646

ASESOR MARIKO NAKANO

Page 2: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

INDICE

O. INTRODUCCION

l. FILTROS ADAPTIVOS

Modelo principal de canceladores de eco Cancelación adaptiva de 60 Hz usando un modelo de onda senoidal Otras aplicaciones de filtros adaptivos

ECG maternas en ECG fetales 9 Detección de fibrilacion ventricular y taquicardia

2. CANCELACION DE ECO EN SISTEMAS DE TELECOMUNICACION

Introducción Cancelación de eco Areas de aplicación

Canceladores de eco en sistemas telefónicos Canceladores de eco en sistemas de transmisión de datos Canceladores de eco acústico

Estructuras y algoritmos de adaptación Estructuras de filtros adaptivos

3. EVALUACHON EXPERIMENTAL DEL ALGORITMO LMS

Algoritmos para filtrado adaptivo Filtro adaptivo transversal El algoritmo LMS y LMS normalizado Algoritmo SD LMS

= Algoritmo SELMS = Algoritmo SS-LMS - Cancelación de eco Simulaciones Conclusiones

Page 3: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

4. IM,PLEMENTACION DEL ALGORITMO I.&lS

5. APENDKE A

Page 4: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I INTRODUCCION I

Page 5: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

INTRODUCCION

Las principales teorias sobre filtrado adaptivo identificación y control han sido desarrollados ampliamente desde su concepcion a finales de los 60’s. Sin embargo desde entonces han existido expertos quienes han editado artículos separados sobre estas especializaciones, y fue solo hasta la mitad de los años 70’s que se realizaron pruebas en ciertas aplicaciones.

1;

Las capacidades de remover distorsión, interferencia y redundancia de los filtros lineales con parámetros adaptivos son importantes en algunos sistemas de comunicación.

La cancelación de eco en sistemas de telecomunicación es una aplicación de la tecnología de filtrado adaptivo utilizada para controlar el eco en sistemas de telecomunicaciones, y se ha estudiado durante los últimos 20 &os (Sondhi y Berkeley, 1980; Qureshi, 1985).

La función mas importante de un cancelador de eco es calcular la respuesta a impulso del canal y adaptarse a sus variaciones rápidamente. De aquí que es necesario tener en cuenta en la identificación un modelo de respuesta al impulso f ~ t o (FIR) y una solución recursiva vía el algoritmo LMS.

Es importante mencionar la aplicación del procesador digital de seiiales con alta capacidad de muestre0 para obtener el mayor numero de muestras de una seiial de vos que puedan ser manejadas por el procesador de una PC implementando el algoritmo LMS.

Habiendo establecido esta conexión hdamental, el objetivo ahora es describir algunas instancias de la intersección entre el trabajo de identificación adaptiva y el control y las soluciones a los problemas del filtrado adaptivo. Los puntos aquí citados primeramente conectan a los avances en la teoría de identificación adaptiva y el control hecho durante los últimos 20 &os.

Los primeros conceptos de relevancia a mitad de los &os ~ O ’ S , para la identificación y control adaptivos fueron: a) Una excitación permanente es importante para un desempeiio robusto. b) La falta de una excitación permanente es importante para estimar ciertos parámetros en sistemas de retroalimentacion. c) Una forma de algoritmo general para la predicción de

Page 6: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

esquemas de errores utiliza parámetros estimados que correlacionan una versión filtrada de la predicción de error y una versión filtrada del regresor.

Estos preceptos y herramientas sindares han sido en promedio establecidos para desarrollar esta teoría (Anderson 1986; Sastry and Bodson, 1989; Solo and Kong, 1995). La lenta convergencia de coeficientes no muy separados han sido probados en varias aplicaciones, en el que m alto numero de muestras de datos han sido procesadas antes de que la parmetrizacion del fdtro deseada varíe apreciablemente.

El algoritmo LMS es el algoritmo adaptivo mas ampliamente empleado para la realización de filtros adaptivos debido a su robustez y relativamente fhil realización en procesadores de sefíales, ya sean de propósito general o particular para alguna aplicación especifica. La complejidad computacional de este algoritmo, medida en termino del numero de multiplicaciones por periodo de muestre0 es de 2N+1, lo cual permite que filtros de orden relativamente alto, poco mas de 100 coeficientes, pueden ser implementados en un procesador avanzado que realice una multiplicación en un ciclo de reloj. Sin embargo el orden del filtro se debe reducir considerablemente cuando se emplean procesadores relativamente baratos muchos de los cuales realizan las multiplicaciones por software. Con la finalidad.de reducir le numero de multiplicaciones al mínimo, para facilitar el empleo de procesadores baratos en la solución de un mayor numero de aplicaciones se desarrollaron los algoritmos SE-LMS, SD-LMS y SS-LMS los cuales presentan una menor complejidad computacional. Este trabajo presenta una evaluación del algoritmo LMS en el contexto de la cancelacibn de eco, la cual es una de las aplicaciones mas exitosas del filtrado adaptivo, aunque los resultados obtenidos son validos para una gran cantidad de aplicaciones practicas. Las simulaciones realizadas muestran que, aunque el algoritmo LMS es superior a los tres mencionados anteriormente, el algoritmo SE-LMS podría ser una buena alternativa en algunas situaciones practicas.

Page 7: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

CAPITULO 1

FILTROS ADAPTIVOS

Page 8: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

FILTROS ADAPTIVOS Este capitulo discute como construir filtros adaptivos digitales para

realizar cancelación de eco y extracción de señales. Las técnicas adaptivas son ventajosas porque no requieren de un conocimiento posterior de la sefial o características del ruido como lo hacen los fdtros fijos. Los filtros adaptivos emplean un método de aprender sobre una síntesis aproximada de la señal deseada y retroalirnentacion del error para modificar los parámetros del filtro. Las técnicas adaptivas han sido usadas en filtrado de ruido en líneas de frecuencia de 60 Hz de sefiales ECG, extrayendo señales ECG fetales, y modificando ondas P, así como para remover otros parámetros de las sefiales ECG. Este capitulo provee los principios básicos del filtrado adaptivo digital y demuestra algunas aplicaciones directas.

fiecuentemente una sefíal deseada es corrompida por ruido de interferencia. En los métodos de filtros fijos, la premisa básica detrás de un filtrado optimo es que se debe tener un conocimiento previo tanto de las características de la señal como del ruido. Generalmente, también se asume que el comportamiento estadístico de ambas fuentes se comportara como se espera. Un filtro adaptivo aprende las estadísticas de las €úentes de entrada y las rastrea si estas varían lentamente.

En las aplicaciones de procesamiento de sefiales digitales,

MODELO PRINCIPAL DE CANCELADOR DE ECO

En procesamiento de señales biomedicas, las técnicas adaptivas son de gran valor para eliminar el ruido de interferencia. La figura 1 muestra un modelo general de un cancelador de ruido con fclltros adaptivos. En el caso discreto, podemos modelar la entrada primaria como s(nT) + no(nT). El ruido es aditivo y es considerado incorrelacionado respecto a la fuente de la sefial. Una entrada de referencia secundaria alimenta al filtro con ruido nl(nT) para producir una salida dnT) que es una aproximación cercana de no(nT). El ruido nl (no es correlacionado respecto a no(nT) de una manera desconocida.

salida del sistema y(nT). Esta salida es también el error &nT) que es usado para ajustar los coeficientes del fdtro adaptivo {w(I, ...,p)J

La salida <(nT) es sustraída de la entrada primaria para producir la

y(nT) = s(nT) -+ no(nT) - <(nT) (1)

Page 9: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I I

Sacando el cuadrado de la salida y haciendo el (nT) implícito para simplificar cada termino obtenemos

y2 = 2 + (no-Q2 + ~s(no-0 (2)

Tomando el valor esperado de cada termino

filtro

E[yq = E[?] + E[(no-& + 2E[s(no-Q]

E[y] = E[?] + E[(no-& (3)

Ya que la señal de alimentación E[s*] no es afectada por los ajustes al ,,

I

min E[$] = E[?] + min E[(no-& (4)

Cuando la salida del sistema es minimizada de acuerdo a la ecuación (4), el error medio cuadratico (MSE) de (no-0 es mínimo, y el filtro tiene adaptivamente menos que sintetizar del ruido (c=no). Este método de modificación interactiva de los coeficientes usando el MSE es llamado el algoritmo LMS (Least Mean Squared).

' I

l l

Page 10: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

i

CANCELACION ADAPTIVA DE 60 HZ USANDO UN MODELO DE ONDA SENOIDAL

Ha sido bien documentado que los amplificadores de ECG son corrompidos por señales senoidales de ruido a 60 Hz (Huhta y Webster, 1973). Un filtro rechaza-banda no recursivo puede ser implementado para reducir la I cantidad de ruido. Los principios de este diseño son que, mientras que la salida de ruido es reducida, este filtro (1) también elimina la componente de 60 Hz de la seiial, (2) tiene un pequefio offset que innecesariamente atenúa

I

I i

I

otras bandas de fiecuencia, y (3) llega a ser poco optimo si las características de ya sea la frecuencia o la amplitud del ruido cambian. Los filtros adaptivos transversales permiten la eliminación del ruido mientras mantienen una relación seilal-ruido optima para procesos no estacionarios. Un método simplificado para eliminar el ruido de60 Hz es modelar la fuente como una onda senoidal a 60 Hz (Ahistrom y Tompicins, 1.985). El único parámetro adaptivo es la amplitud de la onda senoidal. La figura 2 muestra tres sefiales: x(nr) es la señal ECG de entrada corrompida por ruido de 60 Hz., e(nT) es la aproximación del ruido usando una seÍlal senoidal de 60 H z , y y(nT) es ¡a salida-del filtro.

Figura 2 Modelo senoidal para cancelación adaptiva a 60 Hz

El algoritmo empieza por aproximar el ruido a una sinusoide con una amplitud A y fiecuencia w.

I

e(nT) = Asen(wnT) (5) I I

!

Page 11: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I

En esta ecuación, reemplazamos el termino (nT) por (nT-T) para encontrar una expresión de la sefial aproximada un periodo en el pasado. Esta substitución nos da

e(nT-T) = Asen(wnT-wT) (6)

Análogamente, una aproximación del siguiente punto en el futuro puede ser obtenida al remplazar el termino (nT) por (nT+T)

e(nT+T) = Asen(wnT+wT) (7)

Tomamos la identidad trigonométrica

sen(a+pl = 2sen(a)cos(’ - sen@-’ (8)

Ahora haciendo

Expandiendo la aproximación para la aproximacih €úma de la ecuación (7) usando las ecuaciones (8) y (9) obtenemos

e(nT+T) = 2AsenfwnT)cos(wT) - AsenfwnT-wT) (10)

Nótese que el primer termino subrayado es el mismo que el de la expresión para e(nT) en la ecuación ( 9 , y el segundo termino subrayado es el mismo que el de la expresión para e(nT-T) en la ecuación (6). El termino, cos(wT), es una constante determinada por la fiecuencia del ruido a ser eliminado (w) y por el muestreo de frecuencia, fs = UT:

N = cos(wT) = cos(21&13s) (1 1)

Por lo tanto, la ecuación (10) puede ser reescrita obteniéndose una relación para la aproximación del punto futuro en una s d a l de ruido senoidal muestreada basándose en el muestreo de los valores del presente y del pasado.

e(nT+t) = 2Ne(nT) - e(nT-T) (12)

La salida del fdtro es la diferencia entre la entrada y el ruido aproximado

Page 12: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

y(nT+T) = x(nT+T) - e(nT+T) (13)

Por lo tanto, si la entrada bra solo ruido y la aproximación %era exacta, la salida seria cero. Si se sobrepusiera una sefial ECG en el ruido de entrada, esta aparecería libre de ruido a la salida. La seaal ECG es realmente tratada como transitoria, mientras que el filtro intenta cambiar el “peso” o amplitud de la entrada de referencia para que concuerde con la seiial deseada, el ruido de 60 Hz. El filtro básicamente aproxima la cantidad de ruido que se encuentra en la seiral de entrada y lo substrae de esta. Para que el filtro pueda aprender iterativamente de los cambios de la señal de ruido, se necesita una retroalimentacion para modificar los coeficientes del filtro y la amplitud de la s&al aproximada para cada periodo de muestreo. Def-os la h c i ó n diferencial

f(nT+T) = [x(nT+T) - e(nT+T)l- [x(nT) - e(nT)J

Para poder entender esta función, consideremos la figura 3. Nuestro modelo original del ruido e(n0 en la ecuación (5) supone una onda senoidal simple sin componente de dc mostrada. Tipicamente, como sea, existe un offset de dc representado por Vdc en la señal de entrada x(nT). De la figura

y también

Vdc(nT) = x(nT) - e(nT)

Suponiendo que el nivel de dc no cambia significativamente durante los muestreos, entonces

Esta substracción de los términos que representan el nivel de dc en las ecuaciones (15) y (16) es la base para la funci6n en la ecuaci6n( 14). Esta substrae el dc mientras que simultáneamente compara las ondas de entrada y la aproximación.

Page 13: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

i

Figura3 Laseflalderuidopuedeincluirunoffsetdedc

Usamos f(nT+T) para determinar si la aproximación e(nT) fie muy grande o muy chica. Si f(nT+T) = O, la aproximación es correcta y no se necesita ajustar la aproximación fitura, o

Si f(nT+T) > O, la aproximación es baja, y debe ser ajustada hacia arriba una pequeña distancia d

e(nT+T) = e(nT+T) + d (19)

Sif(nT+T) < O, la aproximación es elevada y debe ser ajustada hacia abajo una pequeña distancia d

e(nT+T) = e(nT+T) - d (20)

La elección de des detenninada empíricamente y depende de que tan rápido se necesita adaptar el filtro según los cambios en la señal de interferencia. Si des grande el filtro ajustara rápidamente sus coeficientes. Ahora, si des demasiado grande, el filtro no podrá converger exactamente hacia el ruido. Esto resulta en una pequeña oscilación en la seiial aproximada una ves que se encontró la amplitud correcta. Con una d pequeña, el filtro requiere un periodo de aprendizaje mayor, pero provee un seguimiento mas

Page 14: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I "

exacto del ruido. Si el valor de d es demasiado grande o demasiado pequefio, el filtro nunca convergerá a una aproximación apropiada del ruido.

Un valor tipico de des menos que el valor del bit menos significativo del entero usado para representar una sefial. Por ejemplo, si el rango total de números de un convertidor analógico a digital A/d de 8 bits es 0-255, entonces un valor optimo para d sería %.

La producción de la Hal aproximadda de la ecuación (12) requiere la multiplicación por una fracción N dada en la ecuación (1 1). Para una &ente de ruido con una razón de muestre0 de 500 sps y 60 Hz

N = cos[2m60/500] = 0.7289686 (21)

Tal multiplicador requiere aritmética de punto flotante, la cual podría lsminuir considerablemente la eficacia del algoritmo. Para aproximar tal multiplicador, debemos usar una sumatoria de fracciones a la potencia de dos, la cual podría ser fbilmente implementada y puede ser mas riipida que la multiplicación de punto notante en algunos entornos de software. En este caso

N = 112 + 118 + 1/16 + 1/32 + 11128 + 11512 + 112048 = 0.729

OTRAS APLICACIONES DE FILTROS ADAPTIVOS

El filtrado adaptivo no es utilizado únicamente para la supresión de ruido de interferencia sino también para la extracción de seilales, entre otras aplicaciones. La técnica adaptiva ofiece ventajas para generar una sefial deseada a partir de una sefial no correlacionada con esta.

ECG maternas en ECG fetales

El monitoreo prenatal ha hecho posible detectar los latidos del feto en la matriz de la madre. Como sea, las seiiales ECG maternas hacen dificil percibir las ECG fetales ya que estas son seiiales de baja amplitud. El filtrado adaptivo ha sido utilizado para eliminar las sefiaks ECG maternas. Zhou (1985) describe un algoritmo que utiliza una rutina de LMS con ventana para adaptar los coeficientes. La sonda abdominal sirve como la entrada primaria y la sonda del pecho de la madre es usada como la entrada de referencia de

Page 15: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

i

ruido. Sustrayendo la sefial ECG materna de la sefial abdominal ECG, la cual - contiene tanto la señal ECG materna como la fetal, obtenemos una sefial residual que es la ECG fetal.

Detección de fibrilacion ventricular y taquicardia

La detección de fibrilacion ventricular generalmente ha usado técnicas en el dominio de frecuencias. Esto es computacionalmente caro y no siempre puede ser implementado en tiempo real. Hamilton y Tompkins (1987) describieron un método único de adaptación de filtros para localizar los polos correspondientes al formato del espectro de fiecuencias. Usando un filtro I R de segundo orden, los polos derivados de los coeficientes dan una aproximación bastante buena del primer pico de fkecuencia

La correspondiente transformada z del filtro es

H(z) = I /[l-blz"-b2Z-v (22)

Podemos resolver para encontrar el radio del polo y el ángulo si nos fijamos que, para todos los polos que no están en el eje real

bl = 2rcose bZ = -8

Tomando en cuenta que la fibrilacion produce un prominente pico en la banda de frecuencia de 3-7 Hz, podemos determinar ya sea cuando los polos caen en la zona de detección o en el plano z. Un algoritmo LMS actualiza los coeficientes del filtro.

Figura 4 El plano z mostrando los polos complejos conjugados del filtro adaptive de segundo den

Page 16: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

La figura 4 muestra el diagrama de polos y ceros en el plano z del filtro adaptivo. La región sombreada indica que el pico primario en el espectro de frecuencias de la ECG esta en una zona peligrosa. La única debilidad de este algoritmo es que crea detecciones falsas para razones rítmicas mayores que 100 bpm con fiecuentes PVCs, y fibrilacion atrial.

Page 17: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I I

CAPITULO 2

CANCELACION DE ECO EN SISTEMAS DE

TELECOMUNICACION

Page 18: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

CANCELACION DE ECO EN SISTEMAS DE TELECOMUNICACION

1 Introduccion

Salvo raras excepciones, todas las conversaciones tienen lugar en presencia de ecos. En general si el tiempo de retardo entre la voz y el eco es corto, este se percibe como una distorsión espectral o reverberación, la cual, en algunos casos, podría ser deseable, En el tel6fon0, cierta cantidad de eco se acopla entre el receptor y transmisor para compensar el acoplamiento acústico natural, el cual experimenta un bloqueo al cubrir el auricular con el oido. Sin embargo cuando el retardo entre la voz y el eco excede algunas decenas de milisegundos, el eco produce un efecto distorsionante que degrada los sistemas de comunicación.

I

S2

A interlocutor A B interlocutor B DI y D2 Detectores de vos

H1 y H2 Circuitos Híídm S1 y S2 Intenuptores

Figura 1. Sugresi6n de eco.

Hasta hace poco, los supresores de eco (figura 1) se utilizaron con gran profbsión para el control de ecos en sistemas de comunicación. Bhsicamente,

Page 19: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

1 . . . > .* ..

i

el supresor de eco es un interruptor controlado por vos, el cual interrumpe el canal de transmisión si el interlocutor cercano no esta hablando. Estos dispositivos trabajaron satisfactoriamente durante los pasados 50 años en circuitos con retardos de hasta 100 ms; sin embargo, en circuitos de comunicación vía satélite con retardos de hasta 240 ms su empleo presenta problemas en periodos en los que ambos interlocutores hablan de forma simultanea ( periodos de “double talk” ).

A pesar del desarrollo de complejas estrategias de conmutación y la aparición de dispositivos mas sensibles, la tecnología de cancelación de eco ha demostrado una mayor superioridad.

Cancelación de eco

El principio básico de cancelación de eco, propuesto inicialmente por Kelly y Sondhi, se ilustra en la figura 2. Aquí, en lugar de bloquear el eco, se sintetiza una replica de este, la cual se resta de la seÍial que se transmite. El eco residual se utiliza luego para modificar los coeficientes del cancelador de eco, en una forma aun no especificada, de tal forma que el eco residual se minimiza progresivamente.

d(lo=Y&M&) EC=Camelador de Eco Tx=Transistor RFReCeptor H=Circuito Híído

Figura 2. a) Cancelación de eco en sistemas telef6nicm b) Cancelacih de eco en sistemas de t~ammisibn de datos

Hay algunos problemas prácticos que tienen que ser considerados, entre los que se incluyen el hecho de que no se puede saber nada del eco si la seiial de

Page 20: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

entrada esta ausente, la calidad del modelo empleado, el margen dinámico de la sefial de entrada, etc. Aunque en el desarrollo teórico no se presta excesiva atención a algunos de estos factores, una realización satisfactoria requiere que estos sean tomados en consideración.

Otro factor muy importante en la realización de un cancelador de eco, es el manejo de los periodos en que ambos interlocutores hablan simultáneamente, esto es, periodos de “double talk”. Durante estos periodos y para evitar interpretar la voz del interlocutor cercano como eco. Se interrumpe la adaptación y se cambia el cancelador de eco de una estructura adaptiva a una fija

Areas de aplicación

Las áreas de aplicación de los canceladores de ecos en sistemas de telecomunicaciones básicamente se pueden dividir en:

a) Cancelación de eco en sistemas telefónicos. b) Cancelacih de ecos en sistemas de transmisión de datos. c) Cancelación de eco acústico.

Canceladores de eco en sistemas telefbnicos

Un sistema telefónico de larga distancia consiste básicamente de una porción de dos hilos, circuito de abonado, la cual comunica al abonado con la central local y el circuito de larga distancia. Sin embargo, debido al desacoplamiento de impedancias, estos no están completamente aislados, de manera que una porción de la sefial recibida se retransmite en forma de eco, tal como se muestra en la figura 2a Para solucionar este problema, se coloca un cancelador de eco al fínal del circuito de larga distancia. El cancelador ajusta su respuesta a impulso de manera que esta aproxime, tan cercanamente como sea posible, la respuesta a impulso del canal de eco, y el circuito entre los canales de recepción y transmisión, proporcionando así una replica del eco, la cual se extrae de la sefial que se transmite.

una respuesta a impulso de una duración de entre 10 y 60 m. Este y otros requerimientos tales como la‘atenuación de eco requerida, la degradación permisible durante periodos de “double talk”, etc se encuentran contenidos en la Recomendación G. 165 del CCITT.

En este tipo de aplicaciones es necesario que el cancelador de eco tenga

Page 21: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Canceladores eco en sistemas de transmisión de datos

Los modem para transmisión de datos en duplex sobre circuitos telefónicos, figura 2b, requieren un nivel de cancelación de eco considerablemente mayor que los empleados para comunicación de vos, debido a que el nivel de la señal de entrada en ocasiones se encuentra 40 dB bajo el nivel de la sefial transmitida. Así los ecos deben s u m una atenuación de 70 dB para obtener una relación sefial/ruido de al menos 30 dB, y por tanto, en la realización de este tipo de canceladores de eco se requiere alta precisión aritmética, usualmente mas de 24 bits. Las características que deben poseer este tipo de canceladores de eco se encuentran contenidas en la Recomendación V.32 del CCITT.

Canceladores de eco acústico

La tercer área de aplicación de los canceladores de ecos se encuentra en

acoplamiento acústico entre el altavoz y el micrófono. Esta señal retardada y distorsionada se conoce como eco acústico.

I los sistemas de teleconferencia. En estos, el eco se reproduce debido al I

I Figura 3. Cancelacih de eco acbtíco

Aquí, el cancelador de eco estima la respuesta a impulso del canal entre el altavoz y el micrófono y genera una replica del eco, que se sustrae de la sefial a transmitir, como se muestra en la figura 3.

Page 22: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I . . -" .. . , I

I i

Debido a la larga duración de los ecos, la respuesta a impulso del cancelador de eco deberá cubrir un intervalo de tiempo en ocasiones superior a 250 ms. Debido a que las características de los canceladores de eco acústico dependen en gran medida de las características acústicas deí medio, entre I /

muchas otras razones, no hay establecido ningún estándar en la actualidad para este tipo de canceladores de eco, aunque prosiguen los estudios para I/ establecer dicho estándar.

I

ESTRUCTURAS Y ALGORITMOS DE ADAPTACION La función principal de un cancelador de eco es estimar la respuesta a

impulso del canal de eco y adaptarse a sus variaciones rápidamente. Así, en la realización de un cancelador de eco es de gran importancia, entre otras cosas, la selección de la estructura y el algoritmo de adaptación.

Estructuras de filtros adaptivos

El filtro adaptivo transversal mostrado en la figura ha sido el mas usado en la realización de canceladores de eco. Esto se debe a que las propiedades de esta estructura, tales como el hecho que su superficie de error sea unimodal o el que este sea incondicionalmente estable, son bien conocidas.

t I

Figura 4. Filfro adaptivo tmnsversal.

Page 23: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

El mayor problema que presenta esta estructura es que el orden del filtro es directamente proporcional a la duración de su respuesta a impulso. En el caso de ecos en circuitos telefónicos, el orden del filtro requerido es de varios cientos, con una fiemencia de muestre0 de 8 KHz, lo cual esta dentro de un margen manejable para los procesadores digitales de sefial @SP) actuales, en tanto que cuando se trata de canceladores de eco acústico, el orden requerido es de varios miles. Esto presenta problemas tanto de fbncionamiento como de realización por lo cual se investigan diferentes opciones. Se han propuesto modificaciones para acelerar la convergencia del filtro adaptivo transversal. En estas , la línea de retardo se sustituye por una estructura en celosía que ortogonaliza la señal de entrada acelerando a s í la relación de convergencia del fdtro.

I+B(z) z 'i 6. a)Filtro adaptivo IJR tipo saie-paralelo. b) Filtro adaptivo W tipo paralelo

Page 24: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Sin embargo, esta aproximación incrementa la carga computacional del algoritmo ya que la estructura en celosía “lattice” tambidn tiene que ser adaptada. Para reducir el costo computacional debido a esta estructura se han utilizado operadores fijos, generalmente la transformada de Fourier o la DCT (discrete cosine transform).

Asimismo se han propuesto modificaciones para reducir el numero de coeficientes del filtro transversal conservando algunas de sus principales ventajas. Con este fm la línea de retardo se sustituye por una cascada de fdtros pasa todo. Esta estructura tiene una respuesta a impulso infhta, siendo así capaz de aproximar sistemas con respuestas a impulso de larga duración con un numero menor de coeficientes.

La carga computacional de los filtros adaptivos FIR cuando se utilizan para modelar sistemas con respuestas a impulsos de larga duración, ha motivado el desarrollo de estructuras alternas, entre las que se encuentran los filtros .adaptivos de respuesta infhta (IIR). Estos, de acuerdo al método usado en su derivación, se dividen básicamente en dos clases:

i 1) Filtros I R tipo serie-paralelo 2) Filtros IR tipo paralelo Los filtros adaptivos IIR del tipo serie-paralelo (figura 6a) constan, desde el punto de vista

de adaptación , de dos fdtros transversales cuyas seiiales de entrada son, respectivamente, las señales de entrada y salida del sistema a identificar, en este caso el canal de eco.

Esta estructura se basa en el hecho de que, en ausencia de ruido, se obtiene la convergencia d(k) = y@). Ya que y@) es independiente de los coeficientes del filtro, la ecuación de error es idéntica a aquella de los filtros FIR , A(z) y B(z), el fdtro llega a ser inestable si los polos de 1 / 1-B(z) se mueven fuera del circulo unitario durante la adaptación. Por lo tanto, tal como sucede con todos los filtro IIR, han de realizarse pruebas de estabilidad. Por otro lado, cuando n(k) esta presente, d(k) = y(k), por lo cual el filtro podría converger a una solución equivocada.

El otro tipo de filtro adaptivo IIR es el llamado tipo paralelo, que se muestra en la figura 6b. En este, el algoritmo de adaptación usa como sefial de error, e@), la diferencia entre la seflal deseada d(k) y la salida del filtro adaptivo y@). Esto evita que el algoritmo adaptivo sea tan susceptible al ruido como en el caso anterior. Sin embargo, debido a la naturaleza recursiva del filtro, y(k) es función de los coeficientes del filtro, resultando en un problema de minimizacion no lineal. Esto provoca que en muchas ocasiones

Page 25: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

el fdtro converja a un mínimo local. Durante el proceso de adaptación es necesario realizar pruebas de estabilidad.

Otro método promisorio consiste en transformar las sefíales al dominio de la frecuencia usando la FFT y llevar a cabo el proceso de cancelación y adaptación en el dominio de la fiecuencia . Así la convolucion y correlación de seíbles en el dominio del tiempo se convierte en multiplicacibn en la fkecuencia, obteniéndose una considerable reducción en la complejidad del flltro, especialmente en filtros de alto orden. Una desventaja de este método es que, debido a que los coeficientes se adaptan solamente una vez cada N muestras, su razón de convergencia es en general menor.

Page 26: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I I

CAPITULO 3

I 1 I EVALUACION EXPERIMENTAL 1 DEL ALGORITMO LMS

i

Page 27: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I

EVALUACION EXPERIMENTAL DE CUATRO VERSIONES DEL ALGORITMO LMS OPERANDO COMO CANCELADOR DE ECO

El algoritmo LMS es el algoritmo adaptivo mas empleado para la realización de fdtros adaptivos debido a su robustez y relativamente simple realización en procesadores de seiiales, ya sean de propósito general o particular para alguna aplicación especifica. La complejidad computacional de este algoritmo permite que filtros de orden relativamente alto, poco mas de 100 coeficientes, puedan ser implementados en un procesador avanzado que realice una multiplicación en un ciclo de reloj. Sin embargo el orden del filtro se debe reducir considerablente cuando se emplean procesadores relativamente baratos, muchos de los cuales realizan las multiplicaciones por software. Con la finalidad de reducir el numero de multiplicaciones al mínimo, para facilitar el empleo de procesadores baratos en la solución de un mayor numero de aplicaciones se desarrollaron los algoritmos SE-LMS, SD- LMS y SS-LMS, los cuales presentan una menor complejidad computacional. Esta sección presenta una evaluación experimental de estos algoritmos en el contexto de la cancelación de eco, la cual es una de las aplicaciones mas exitosas del filtrado adaptivo, aunque los resultados obtenidos son validos para una gran cantidad de aplicaciones practicas. Las simulaciones realizadas muestran que, aunque el algoritmo LMS es superior a los tres mencionados anteriormente, el algoritmo SE-LMS podría ser una buena alternativa en algunas situaciones practicas.

!

ALGORITMOS PARA FILTRADO ADAPTIVO

En esta sección se presentan el algoritmo adaptivo LMS, el cual es el mas empleado en aplicaciones de filtrado adaptivo, junto con tres variantes del mismo las cuales permiten reducir su complejidad computacional. Ya que estos algoritmos se presentaran asumiendo una estructura de tipo transversal, consideremos inicialmente esta estructura.

Filtro adaptivo transversal

Los filtros adaptivos transversales con respuesta a impulso finita (FIR) son los mas comúnmente usados para la solución de diversos problemas

I

Page 28: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

i

prácticos, debido principalmente a que estos son simples, incondicionalmente - estables y convergen invariablemente al minim0 global. La estructura básica de un filtro transversal se muestra en la figura 1 cuya salida, la cual es una combinación lineal de las muestras de la seiial de entrada, esta dada por

donde

X(n) = [ x(n), x(n- I), . ..., x(n-N+ I) ]

es el vector de entrada y W = [WO, wl , ...., wN-I] (3)

es el vector de coeficientes el cual se modifica, o adapta, en forma tal que alguna función de la seiial de error, usualmente el valor cuadratico medio, sea minimizado.

Figura 1. Filtro adaptivo transversal

La manera mas común de optimizar los coeficientes de un fdtro adaptivo es por medio de la busca en el sentido del gradiente descendente del mínimo de la función de error. A continuación se mencionaran algunos de loa algoritmos de adaptación basados en la búsqueda del gradiente descendente con menos complejidad computacional, mas empleados en fdtrados adaptivos.

Page 29: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I ! . _"

El algoritmo LMS y LMS normalizado

El algoritmo mas empleado en filtrado adaptivo, debido a su robustez y baja complejidad computacional, es el algoritmo LMS, el cual esta dado por

W(n) = W(n-I) +2p(n)X(n) (4)

donde W(n) es el vector de coeficientes dado por la ec.(3), X(n) dado por la ec.(2) es el vector de entrada,

= d(n)-Y(n) (5)

es la sefial de error, d(n) es la seiIal de referencia y p es una constante que controla la estabilidad y velocidad de adaptación. Es posible mostrar que, para que el algoritmo permanezca estable, p debe satisfacer fa relación

O ~ , u ~ l / i 2 m c U c (6)

donde hmax es el máximo eigenvalor de la matriz de autocorrelacion de la seaal de entrada. Usando el resultado del álgebra de matrices que establece que la traza de una matriz es mayor que su eigenvalor máximo, el rango de estabilidad se puede reescribir como

O < ,u < I/x(n) (7)

lo cual representa una condición de convergencia fhcil de obtener. Def~endo

2,u = cdx(n) O-=a<l (8)

se puede reescribir el algoritmo de adaptación como

W(n) = W(n-I) + [ dx(n) ]e(n)X(n) &a<l (9)

lo cual se conoce como el algoritmo NLMS o algoritmo LMS normalizado cuya implementacion requiere aproximadamente 2N+2 multiplicaciones por periodo de muestreo.

Page 30: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

l .

Algoritmo SD - LMS Como una alternativa a los algoritmos LMS y NLMS se propuso el

algoritmo SD-LMS el cual esta dado por

W(n) = W(n-I) + 2pgn[X(n) Je(n)

donde sm[e(n)] significa el signo de la seiral de error. Se puede demostrar que la función de correlación no se ve afectada mayormente por usar el signo de la muestra de la seÍ'íal de entrada en lugar de su valor real, por lo cual sus condiciones de convergencia se mantienen. Así la convergencia del algoritmo no se ve comprometida por esta simplificación aunque su velocidad de convergencia podría ser reducida de manera significativa. Definiendo 2p como un múltiplo de 2 la multiplicación es trivial y el algoritmo de adaptación solo requiere las multiplicaciones necesarias para calcular la salida del filtro, esto es N multiplicaciones por periodo de muestreo.

Algoritmo SE - LMS Como otra alternativa a los algoritmos mencionados anteriormente se

propuso el algoritmo SE-LMS el cual esta dado por

W(n) = W(n- I ) -+ 2pgn[e(n)JX(n)

Nuevamente, seieccionando adecuadamente el valor de 211, el algoritmo SE-LMS requerirá N multiplicaciones para fitrado y adaptación.

Algoritmo SS - LMS

La tercera alternativa a los algoritmos LMS y NLMS mencionados anteriormente la constituye el algoritmo SS - LMS el cual esta dado por

Este algoritmo independientemente del factor de convergencia seleccionado, requiere únicamente N multiplicaciones para filtrado y adaptación. Sin embargo de las tres alternativas mencionadas es la que podría presentar

Page 31: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

- mayores problemas de estabilidad, así como una velocidad de convergencia menor.

CANCELACION DE ECO

Con el fm de evaluar los algoritmos antes mencionados, se selecciono una configuración de cancelación de eco, debido a que es una de las mas exitosas aplicaciones del filtrado adaptivo, y al mismo tiempo una de l a s que requiere mayor numero de coeficientes, por lo cual podrían requerirse algoritmos con el menor numero de multiplicaciones posibles. El principio básico de cancelación de eco, propuesto inicialmente por Kelly y Shondy, se ilustra en la figura 2. Aquí, en lugar de bloquear el eco, se sintetiza una replica de este, la cual se resta de la señal que se transmite. El eco residual se utiliza luego para adaptar los coeficientes del cancelador de eco, en una forma aun no especificada, de tal forma que el eco residual se minimiza progresivamente.

Fw 2. cancelador de eco con proteccih contra double talk

I

Hay algunos problemas prácticos que deben ser considerados, entre los que se incluyen el hecho de que no se puede saber nada del eco si la seiial de entrada esta ausente, la calidad del modelo empleado, el margen dinámico de la señal de entrada, etc. Aunque en el desarrollo teórico no se presta excesiva atención a algunos de estos factores, una realización satisfactoria requiere que estos sean tomados en consideración.

I

Page 32: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

4

Otro factor muy importante en la realización de un cancelador de eco, es el manejo de los periodos de double UZk. Durante estos periodos, y para evitar interpretar la voz del interlocutor cercano como eco se interrumpe la adaptacíón y se cambia el cancelador de eco de una estructura adaptiva a una fija. Uno de los m6todos mas usados observa el "Echo Retum Loss Enhancementyy y se inhibe la adaptación sí se cumple la condición.

ERLE x ERLE op (13)

- -

I

~

donde E W E op es un umbral determinado de antemano. La selección de ERLE op implica uu compromiso entre la capacidad de detección y la de adaptarse canales variables con el tiempo.

SIMULACIONES

Un criterio comúnmente usado para evaluar el funcionamiento de un filtro adaptivo operando en función de cancelador de eco es el "Echo Return Loss Enhancement" el cual se defrne como

ERLE = IOLOGIO[ (d(n)-v(n))/e(n) J (14)

donde v(n) denota el ruido aditivo.

La figura 3 muestra la convergencia de los algoritmos LMS, SD-LMS, SE-LW y SS LMS cuando son requeridos a identificar un sistema desconocido deorden 128. La sefial de entrada fue ruido blanco con una relación sefIal a ruido de 40 DB.

MSE(dB) O

-10

-20

-30

-40

-60

1

. m..ooo1 O 60 100 160 200 260

Numero de Muestras (~400)

' . . ..... i . ., ~. . .~ . . .. .

dB 40

30

20

10

OF I

o so 100 160 200 260 Numero de Muestras (x4001

Page 33: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I ! . "

4'

. .. - La figura 4 muestra las características de convergencia del algoritmo -

LMS cuando opera en configuración de cancelación de eco con un fhctor de convergencia de O .O0 1. La figura muestra que el algoritmo se comporta adecuadamente durante double talk aunque su velocidad de convergencia es lenta.

convergencia 0.001 durante single y double talk. La adaptación es inhibida durante el periodo de double talk por un detector. La figura muestra un incremento en la velocidad de convergencia al incrementarse el factor de convergencia.

La figura 5 muestra el comportamiento del algoritmo LMS con factor de

La figura 6 muestra el comportamiento del algoritmo NLMS durante . ' . .' single y double talk. Los resultados confirman que este es el que proporciona los mejores resultados con una complejidad muy similar a la del algoritmo LMS. En todos los casos de relación señal a ruido durante double talk fue de O DB, mostrándose en todos los casos el ERLEDT empleado por el detector para inhibir o activar la adaptación del sistema.

MSE(dB1 o

- 10

-20

-30

-40

-60 . mlrq.0001,

O 60 100 150 200 260 Numero de Muestras (x4001

I t.

!

dB 40

30

20

10

OF I

O 50 100 160 200 260 Numero de Muestras (x4001

Page 34: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

4'

. . . La figura 7 muestra el ERLE obtenido empleando todos 10s algoritmos -

bajo análisis con las condiciones mencionadas anteriormente, tanto para single como para double talk.

1 CONCLUCIONES

Después de realizadas las simulaciones correspondientes se pudo observar que, tal como se esperaba, el algoritmo LMS normalizado presenta el' mejor funcionamiento.. También se observa que el algoritmo SE-LMS representa una altemativa atractiva al algoritmo LMS ya que presenta mejores condiciones de convergencia que este para hctores de convergencia.pequeiios ' . . ; p~0.0001 y una velocidad de convergencia cercana a la del LMS, aunque con un menor nivel de cancelación que este para valores un tanto mayores p=O.OOl. El algoritmo SD - LMS podría ser una alternativa cuando la velocidad de convergencia no sea muy critica y definitivamente el algoritmo SS-LMS no parece ser atractivo en ninguna de l a s circunstanciás analizadas.

f I ~

"_

i

I

50

40

L

01 O 60 * 100 150 00' 2SO d, M W S ~ fi400) ' :l. I

Page 35: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

CAPITULO 4

IMPLEMENTACIQN DEL ALGORITMO LMS PARA

CANCELACION DE ECO EN SISTEMAS DE

TELECOMUNICACION

Page 36: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

IMPLEMENTACION DEL ALGORITMO I" PARA CANCELACION DE ECO EN S I S ' I ' E ~ S DE TELECOMUNICACION

Con el fin de evaluar el algoritmo LMS se selecciono una configuración de cancelación de eco, debido a que es una de las mas exitosas aplicaciones del filtrado adaptivo. El principio básico de cancelación de eco, propuesto inicialmente por Kelly y Sondhi, se ilustra en la figura l.

Figura 1 Modelo bhico de cancelador de eco

En este modelo, en lugar de bloquear el eco, se obtiene una aproximación de este, la cual se resta de la señal que se transmite. El eco residual se utiliza luego para ajustar los coeficientes del cancelador de eco, de t a l forma que el eco residual se minimiza progresivamente. En este modelo x(n) representa la señal de entrada de vos sin ruido, H*(n) es el sistema total por el cual debe viajar la señal de vos y donde esta se contamina con ruido, H(n) es el filtro adaptivo que simulara al sistema total H*(n) a través de la continua modifícaci6n de sus coeficientes y Alg es el algoritmo LMS que determina como deben modificarse los coeficientes del filtro adaptivo. La señal de entrada x(n) alimenta tanto a H(n) corno a H*(n), a la salida de H*(n) tenemos la señal yl(n) que es la señal de entrada mas un cierto nivel de ruido ocasionado por el viaje de la vos a través del sistema de telecomunicación,

Page 37: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

pero esta no es la única contribución de ruido que se tiene ya que se debe considerar también el ruido producido por fuentes externas v(n) por eso se implementa un sumador que nos adiciona estas dos señales para obtener la salida final d(n) del sistema de telecomunicación. Entonces d(n) representa la señal de vos ma.s el ruido total de interferencia. Como se indico anteriormente, H(n) aproxima al sistema total H*(n); entonces a medida que este se va aproximando, su salida yo(n) serh cada ves mas similar a d(n) y si restamos ambas tendríamos el error en la aproximación realizada. Este error nos sirve para, a través de un algoritmo, modificar los coeficientes del filtro para que las siguientes aproximaciones sean cada ves mas cercanas. Si tomamos el caso ideal tendríamos que yo(n) y d(n) son iguales entonces al restarse el error daría cero obteniéndose una replica exacta del sistema de telecomunicación, claro que este es un caso ideal prácticamente imposible de alcanzar, el eco no se puede cancelar totalmente pero puede ser reducido a un nivel lo suficientemente bajo como para no ser captado por el oido humano.

El objetivo de este proyecto fue el de simular este modelo de cancelación de eco mediante un programa en lenguaje C, para esto se debieron implementar funciones que nos simularan el filtro adaptivo, el algoritmo para la corrección de los coeficientes, una que nos proporcionara 1a.s señales tanto de ruido como de vos mas ruido, entre otras. La entrada de este programa es un archivo que contiene una señal de vos en código ASCI y la salida es una serie de archivos que contienen información sobre los cambios sufridos por la señal de vos de entrada después de su cancelación. Entre estos archivos tenemos a 1nvoz.dat que es una copia de la señal de entrada de vos, 0utvoz.dat que es la señal de vos con el ruido de interferencia, Salida.dat que contiene la señal de vos con el eco ya cancelado y Msedb.dat que tiene los resultados del error medio cuadratico de la aproximación en cada iteración. Este ultimo archivo es un seguimiento del error de aproximación y al graficar nos muestra claramente que dicho error tiende a cero a medida que se incrementa el numero de iteraciones, lo cual era de esperarse porque el error debe ser menor mientras mas aproximaciones del sistema se tienen.

A continuación se muestra el pseudocodigo de una función que simula el modelo de cancelación de eco descrito ant.eriormente, a esta funcion se la llamo Iteraciones y utiliza algunas otras subfunciones las cuales serán explicadas posteriormente. Una versión mas sofisticada de esta función se presentara al final de esta discusión.

i i

Page 38: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I

IteracionesO { Inicializa(); PideDatosO; for (i=l;i<=Iter;i++){

CreaEco( ); for (j=OjcMaxSizej++)( voz=Voz~]; eco=Ecofi]; vozeco=Vozecofi]; ecoaprox=Filtro(voz); error-eco - ecoaprox; AdaptCoef(/alfa,&error); Salida~]=vozeco - ecoaprox; salida=Salidalj]; fprintqfp,salida);

I 1

1

Esta fwnción empieza por inicializar todos los arreglos que se ocuparan a través de la función Inicializa0 la cual pone a todos estos en cero, luego realiza la petición de los datos de entrada para el programa los cuales serán los nombres de los archivos tanto de entrada como de salida así como el numero de iteraciones a realizarse y la constante alfa que se utilizara. en el algoritmo de corrección de los coeficientes del filtro. A continuación se sigue un ciclo que se repite tantas veces como el numero de iteraciones pedido por el usuario en la función PideDatosO. En cada iteración de este ciclo se llama a la función Creaeco() que es la encargada de producir un ruido aleatorio que en este caso seria una simulación del eco en nuestro sistema de telecomunicación teniendo como salida los Arreglos: Voz[] que es una copia del muestreo realizado sobre la señal de vos de entrada, Eco[] que es el eco aleatorio producido por la función y Vozeco[] que es la suma de la señal de entrada mas su eco, o sea la señal con interferencia. Nótese que esta función nos da los datos de las señales x@), yl(n) y d(r1) de nuestro modelo de cancelación de eco de la figural respectivamente. Ahora que ya tenemos estos datos realizamos un ciclo for que se repite tantas veces como coeficientes tiene el filtro, en este caso representado por la variable MaxSize. De lo que se encarga este ciclo es de tomar los datos del muestreo de vos y procesarlos uno por uno hasta llegar

Page 39: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

al tamaño máximo del filtro, nótese que este ciclo se encuentra dentro del anterior ciclo que esta determinado por el numero de iteraciones que quiere el usuario, entonces, lo que se estará haciendo en cada iteración es cargar el filtro con el numero máximo de muestras de vos que este puede contener y se los va procesando uno por uno siempre tomando en cuenta los dat.os tomados anteriormente. Esto explica porque mientras mayor es el numero de iteraciones realizados por el programa mejor será la aproximación del sistema de telecomunicación en cuestión, ya que mientras mas iteraciones se tenga mayor será el numero de muestras tomadas y por lo tanto mejor será la aproximación. En este ciclo se toman uno por uno los datos de vos obtenidos a través de la función CreaEco() y se los guarda en las variables voz, eco, vozeco respectivamente. Tal como mostramos en el modelo de la figura 1, necesitamos una función que a travCs de un filtro adaptivo nos realice una aproximación del eco producido por el sistema, esto es realizado por la hnción Filtro(voz) CLIYO parámetro de entrada es el dato de vos del muestre0 de la señal de entrada. Ya tenemos tanto el eco como el eco aproximado entonces mediante una simple resta podemos obtener el error en la aproximación. Este error así como la constante alfa son usados por la función AdaptCoef(alfa,error) para adaptar los coeficientes del filtro y así ir mejorando progresivamente la aproximación del sistema. Luego se procede a guardar los datos de la señal de vos con el eco ya cancelado en el arreglo Salida[]. Esta señal será la salida de nuestro cancelador de eco y si se gráfica junto con la señal de vos de entrada se observara una disminución en la amplitud de esta debido a la cancelación del eco. Abajo se muestra la versión final de la función iteraciones

void Iteraciones (void) o { U

o

o

o

O

int if j ;

float ecoaprox,salida;

char p [ 2 ] ;

f l o a t Eprom,Veprom, MSE,MSEDB;

o

o

o

c l r s c r ( 1 ;

f lag=l ;

Eprom=O.O;

Page 40: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Veprom=O.O; Inicializa ( ) ; /*inicializa todoslosarreglos*/ PideDatos ( ) ; /*pide los datos y abre los archivos necesarios*/ printf ( " \nIteracion MSEDB\n") ; for (i=l;i<=Iter;i+t) { /*ciclo que realiza las iteraciones*/ if ( ! flay) { /*si se acabaron los datos del archivo voz se*/ i=Itertl; /*corta el ciclo de iteraciones*/ printf ("Fin de archivo de datos") ; yetch ( ) ; 1 else { CreaEco ( ) ; /*función que genera los vectores con datos*/

for (j=O; j<MaxSize; j tt) { voz=Voz [ j ] ; /*toma un dato de voz del arreglo Voz*/ eco=Eco [ j 1 ; /*toma un dato de eco del arreglo Eco*/ vozeco=Vozeco[j]; /*toma un dato de vozeco del arreglo Vozeco*/ ecoaprox=Filtro(voz); /*filtra el dato de voz y obtiene el*/

error=eco-ecoaprox; /*obtiene el error de la aproximacion*/ AdaptCoef(&alfa,&error); / * s e adapt.an los coeficientes del filtro+/

/*en base al error de aproximacion y a alfa*/ Salida[j]=vozeco-ecoaprox; /*obtiene la salida de voz ya con la*./

salida=Salida[j]; fprintf ( fp5, " % f ", salida) ; /*guarda salida de voz en flotante'/ itoa(salida,p, 16) ; fprintf (fp2, "%s\n",p) ; /*guarda salida de voz en hexadecimal*/ Eprom=Epromt(error*error); /*obtiene l o s datos para calcular*/ Veprom=Vepromt(vozeco*vozeco); /*el error medio cuadratico*/ conttt;

/*de entrada de voz, eco, vozteco*/

/*eco aproximado*/

/'cancelation de eco+/

MSE=Eprom/Veprom; /*obtention del error medio cuadratico*/ MSEDB=lO.O*log(MSE)/log(lO.O);/*error medio cuadatico endecibeles*/ printf ("%4d %14f6\n",iIMSEDB) ; fprintf Ifp3,"%f ",MSEDB) ; /'guarda datos de error mediocuadratico*/

1 I fclose (fpl) ; fclose (fp2) ; /*se cierran todos los archivos abiertos*/ fclose(fp3); fclose (fp4) ; fclose (fp5) ;

1

Podemos notar que una de las funciones mas importantes del programa es la función CreaEcoO. Esta función, como se explico antes, es la encargada de generar un ruido aleatorio que representam el eco asi como las señales yo(n j, yl(n j y d(n j de nuestro modelo. El pseudocodigo que se siguió para la implementaron de esta función se muestra a continuación

void CreaEco(voidj(

Page 41: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

for (i=O;i<MaxSize;i++){ fscanf( dat 1 ); daQ=FiltEco(datl); Voz[i]=datl; Vozeco[i]=dat2;

1 Como se puede ver es un pseudocodigo muy sencillo, esta función lo

que hace es tomar una muestra de la señal de vos de entrada y guarda este valor en la variable datl, luego llama a la fimción FiltEcoO que se encarga de simular ruido aleatorio en base a dat 1, que es pasado como parametro de esta fbnción, y el resultado de este procesamiento lo guarda en dat2. Luego guarda estos dos datos en los arreglos Voz[] y Vozeco[] respectivamente. La versión final se muestra a continuación

void CreaEco (void)

int i,helplthelp2,help3;

float datl, dat2; char dum[21 ,auxl E21 ;

for(i=O;i<MaxSize;itt) { /+toma un numero MaxSize de datos de voz*/

flag=@ ; /*si el archivo de voz llego a su fin"/ i=MaxSizetl; /*se detiene el ciclo+/

if (feof (fpl) ) (

I else { fscanf (fpl,"%s%s%sXs",auxl,&dum,&dum,&clun~); "lee los datos de voz*/ Voz [ i] =HexFlot (auxl) ; /"transforma el dato de hex a float*/ dat l=Voz [ i 1 ; /*datl es el dato de la voz*/ fprintf (fp4, " % f ", datl) ; /*guarda dat.o de voz en a: invoz*/ FiltEco(datl,&dat2); /"se obtiene el eco de dat.l*/ if (dat2>255) { dat2=255;

if (dat2<0) [ /"de eco y vozeco entre O y 255+/ dat2=@ ; I Eco [ i] =dat2; if (datltdat2>255) { Vozeco [ i] =dat 1 ; 1 else Vozeco[i]=(datltdat2) ;

I if (Vozeco[i] >255) {

1 /"pone un margen de valor de los datos*/

Page 42: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Vozeco[i]=255; 1 if (Vozeco [ i] <O) { Vozeco [ i 1 =O;

1 1

1 I

La función FiltEco(), como dijimos anteriormente se encarga de obtener un valor aleatorio a partir del dato de vos, representando este valor aleatorio el eco producido por nuestro sistema de telecomunicación. Se utilizan dos arreglos de tamaño MaxSize, que es el tamaño de nuestro filtro adaptivo, lo suficientemente grande como para que los valores obtenidos sean lo mas aleatorios posibles, en este caso con 100 es mas que suficiente. El parametro de entrada de esta función es datl, que es un dato de la señal de vos de entrada. Se realiza un corrimiento completo del arreglo Z[] para insertar datl en la primera localidad de este, de esta forma se tienen en cuenta no solo el ultimo dato de vos sino también los anteriores. Luego de insertado datl se multiplican uno a uno los coeficientes de los vectores Z[] y Coeq] y se realiza su sumatoria, siendo este el resultado que toma la variable dat2, quien representa el dato del eco producido por el sistema. Abajo se muestra la implementaron de esta función

void FiltEco (float datl, float o I o

o

o 0

o

o

int

for

Z

1

i;

(i=l;i<NumCoef;itt) {

[NumCoef-i] =Z [NumCoef-i-

"dat2)

11;

Z [Ol=datl;

*dat2=0.0;

for (i=O;i<NumCoef;it+) {

"dat2+=Coef[i]*~[i];

o

o

CI

Page 43: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Otra función utilizada por CreaEcoO es la función Heslot() que se encarga de transformar un numero de hexadecimal, o base 8, a flotante. Esta función se muestra a continuación

float HexFlot (char auxl[2]) I int i, suma; float flotante; char cad[4] ,cad1 [ 4 ] ; char aux2, aux3 ;

for (i=O;i<2;itt) { aux2=auxl[ i] ; switch (toupper (aux2) ) { case ' 0 ' - . strcpy (cad, "0000") ; break; case '1' . - strcpy (cad,"0001") ; break; c:ase '2': strcpy(cad, "00lO") ; break; case '3 ' : strcpy (cad, "0011") ; break; case '4 ' : strcpy (cad, "0100") ; break; case '5': strcpy(cad,"0101"); break; case '6': strcpy(cad,"0110"); break; case ' 7 ' - strcpy (cad, "0111") ; break; case '8': strcpy(cad,"1000") ; break; case '9' : strcpy (cad, ''1001") ; break; case ' A ' : strcpy (cad, "1010") ; break; case 'El' : strcpy (cad, "1011") ; break; case ' C ' - . strcpy(cad, "1100") ; break; case 'Dl: strcpy(cad,"llOl"); break; case 'E' : strcpy (cad, "1110") ; break; case ' F ' : strcpy(cad,"llll"); break;

1 if (i==O) {

1 strcpy (cadl, cad) ;

I suma=O ; for (i=O;i<8;itt) { aux3=cadl[ i] ; if (aux3=='l'j { switch (i) { case 0: suma=sumatl28; break; case 1: suma=sumat64; break; case 2: suma=sumat32; break; case 3: suma=sumatl6; break; case 4 : suma=sumat8; break; case 5: suma=sumat4; break; case 6: suma=sumat2; break; case 7: suma=sumatl; break;

Page 44: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

1 I

I flotante=suma; return ( flotante) ;

I

I !

Page 45: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I I

I APENDICE A I

I

Page 46: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

nclude nclude nclude nclude nclude nclude nclude nclude aclude

tmath. h> tconio. h> tstdio. h> tctype. h> tstring.h> <stdlib.h> tgraphics.h> tdos. h> <io.h>

ifine TamFilt 100 /*513*/ ?fine TamArch 400 /*2052*/ ?fine MaxSize TamArch/4 ?fine PI 3.141592657 :fine NumCoef 100 /*513*/ :fine Delay-Eco 40 /*205*/ :fine MAX 1500 /* Doble del numero maximo de puntos a graficar */ iedef float filt[TamFilt]; bedef float vector[MaxSize];

: Iter,flag,cont; tat voz,vozeco,error,eco,alfa; )at Z[NumCoef],Coef[NumCoef]; :tor Voz,Salida,Eco,Vozeco; .t Fr,Hr; cr arch1[50],arch2[50];

,E *fpl,*fpZ,*fp3,*fp4,*fp5;

.d Inicializa(void);

.d PideDatos(void);

.d CreaEco(void); ,at HexFlot(char auxl[Z]); ,at Filtro(f1oat voz); d AdaptCoef(f1oat *alfa,float *error); .d FiltEco(f1oat x,float *y); d Iteraciones(void); Menu(void); Menul(void); d Invalido(int x,int y); d ImprimeDatos(void); d Visualiza(char cad[50]);

Esta funcion despliega el menu de opciones principal * / Menu(void)

t k,aux;

rscr( ) ; xtcolor(7); toxy(25,lO);cprintf("MEMJ DE OPCIONES DE MANEJO"); tox~(25,12);cprintf(~- Iteraciones"); toxy(25,13);cprintf("- Ver archivos de datos"); tox~(25,14);cprintf(~- Salir del programa"); xtcolor(4); toxy(27,12);cprintf("I"); toxy(27,13);cprintf("V"); toxy(27,14);cprintf("S"); wtrmlnr(71 !

I

Page 47: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

otoxy(30,16);cprintf("0pcion: " ) ; =toupper(getch()); D { switch(k){ /*si es opcion valida la despliega en la pantalla*/ case '1' : case 'VI: case ' S 1 : textcolor(RED+BLINK); gotoxy(38,16);cprintf("%Cn,k); aux=k ; textcolor(7); break ;

default: Invalido(38,16); /*si no es opcion valida despliega un mensaje*/ break ;

1 k=toupper(getch()); vhile(k!=13); /*realiza el ciclo mientras no se digite Enter*/ iturn(aux) ; /*regresa el valor de la opcion elegida*/

Esta funcion despliega el menu de opciones de archivos de datos */ ; Menu1 (void)

tt k,aux;

.rscr() ; Ixtcolor(7) ; ~toxy(25,l0);cprintf(~ARCHIVOS DE DATOSf1); btoxy(25,12);cprintf(111.- %s",archl); btoxy(25,13);cprintf("Z.- %s",arch2); ~toxy(25,14);cprintf("3.- Salir"); ~toxy(30,16);cprintf(~Opcion: " ) ; !xtcolor( 4) ; ~toxy(25,lZ) ;cprintf("l"); 1toxy(25,13);cprintf("2"); 1toxy(25,14);cprintf(n3"); :xtcolor( 7) ; :toupper(getch()); I {

switch(k){ /*si es opcion valida la despliega en la pantalla*/ case '1' : case '2' : case '3': textcolor(RED+BLINK); goto~y(38,16);cprintf('~%c",k); textcolor(7); aux=k ; break ;

default: Invalido(38,W; /*si no es opcion valida despliega un mensaje*/ break;

1 k=toupper(getch()); hile(k!=13); /*realiza el ciclo mientras no se digite Enter*/ turn(aux); /*regresa el valor de la opcion elegida*/

Funcion que despliega un mensaje de opcion invalida */ d Invalido(int x,int y)

Page 48: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

=O ; extcolor(RED+BLINK); Dtoxy(x,y);cprintf("Opcion no valida"); mnd(500),delay(70),nosound(); D { delay(l0); i++ ; shile(!kbhit() && it200); ?xtcolor( O ) ; ,toxy(x,y);cprintf("Opcion no valida"); 'Ixtcolor( 7) ;

hncion que despliega en la pantalla el contenido del archivo cuyo*/ lombre viene dado por el parametro cad*/ id Visualiza(char cad[50])

int cont=O; :har aux[ 21 ; ?ILE *fp;

:lrscr() ; ,rintf("Archivo %s\n\n",cad); .f((fp=fopen(cad,"r"))==NULL)( printf("ERR0R: el archivo no se puede abrir\n"); getch( 1 ;

' exit(1);

!lse{ while( ! feof (fp) ) {

fscanf(fp,"%s",aux); if(cont>=22){ getch( 1 : clrscr() ; cont=O;

1 printf("%s\n",aux); cont++;

1 'close( fp) ;

uncion que se encarga el parametro adecuado a la funcion visualiza*/ de acuerdo a la opcion elegida en la funcion Menul*/ d IrnprimeDatos(void)

nt opcion; har nombre[50];

o{ opcion=Menul(); switch(opcion){ case ' 1 ' : Visualiza(arch1); getch( 1 : break ;

case ' 2 ' : Visualiza(arch2); getch( 1 ; break :

case ' 3 ' !

Page 49: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

break ; 1

]while(opcion!='3');

funcion que inicializa todos los arreglos que se utilizaran*/ id Inicializa(void)

int i;

For(i=O;i<TamFilt;i++){ Fr[i]=O.O; /*Arreglos utilizados para el filtrado de la*/ Hr[i]=O.O; /*information y para la adaptacion de */

/*coeficientes del filtro */ t Por(i=O;i<MaxSize;i++){ Voz[i]=O.O; /*Arreglo con datos de voz de entrada*/ Eco[i]=O.O; /*Arreglo con datos del eco generado*/ Vozeco[i]=O.O; /*Arreglo con datos de voz + eco generado*/

1 Salida[i]=O.O; /*Arreglo con datos de salida de voz*/

Tor(i=O;i<NumCoef;i++){ i Z[i]=O.O; /*Arreglos usados para la generation*/ Coef[i]=O.O; /*de eco*/

I I :oef[Delay_Eco]=O.Z;

hncion que realiza el filtrado de la informacion de entrada de voz*/ > regresa el valor filtrado*/ )at Filtro(f1oat voz)

int i; 'loat ecoaprox;

?or( i=l;i<TamFilt; i++){ /*recorre el filtro y mete el nuevo dato*/ Fr[TamFilt-i]=Fr[TamFilt-i-11;

V[O]=voz; /*introduce el nuevo dato en el filtro*/ !coaprox=O. O ; 'or(i=O;i<TamFilt;i++){ /*multiplica cada dato por su coficiente en el*/ ecoaprox=ecoaprox+Hr[i]*Fr[i]; /*filtro y va sumando estos valores*/

'eturn(ecoaprox); /*regresa el valor de la suma acumulada*/

'uncion que realiza la adaptacion de los coeficientes del filtro de*/ cuerdo a los valores de la alfa y del error de aproximacion del eco*/ .d AdaptCoef(f1oat *alfa, float *error)

.nt i; 'loat Xav,mu;

:av=O . O ; 'or(i=O;i<TamFilt;i++){ Xav=Xav+(Fr[i]*Fr[i]);

u=(*alfa)/Xav; or(i=O;i<TamFilt;i++){ Hr[i]=Hr[i]+(mu*(*error)*Fr[i]);

Page 50: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

Puncion que convierte un numero hexadecimal ]at HexFlot(char auxl[Z])

int i, suma; float flotante; :har cad[4],cadl[4]; 2har aux2, aux3 ;

For(i=O;i<Z;i++){ ~ aux2=auxl[i];

' case ' 0 ' - . ~trcpy(cad,"OOOO~~); break; case '1' . ~trcpy(cad,"OOOl~~); break; case '2': strcpy(cad,"OOlO"); break; 'case '3' : strcpy(cad, ftOOllll) ; break; case ' 4 ' . . ~trcpy(cad,~'OlOO'~); break; case ' 5 ' : strcpy(cad,"010lW); break; case '6': strcpy(cad,"O1lOfl); break; case ' 7 ' : strcpy(cad,"0l1lw); break; case '8': strcpy(cad,l'lOOO1l); break; case ' 9 ' : strcpy(cad,"lOOll') ; break; case ' A " . ~trcpy(cad,"lOlO~~) ; break; case 'B': strcpy(cad,"lOll"); break; case 'C' : strcpy(cad,'lllOO1l) ; break;

' case 'DI. . ~trcpy(cad,"llOl~~); break; , case 'E'. . strcpy(cad,"lllOW); break; : case 'F': strcpy(cad,"llllw); break;

switch(toupper(auxZ)){

1 if (i==O) {

1 strcpy(cad1,cad);

;uma=O ; lor(i=O;i<8;i++){ aux3=cadl[i]; if(aux3=='11){ switch(i){ case O : suma=suma+l28; case 1: suma=suma+64; case 2: suma=suma+32; case 3: suma=suma+l6; case 4 : suma=suma+8; case 5: suma=suma+4; case 6: suma=suma+2; case 7 : suma=suma+l;

1 1

'lotante=suma; leturn( flotante) ;

break ; break ; break ; break; break ; break ; break ; break :

a flotante*/

i

'uncion que recibe un dato de entrada de.voz y le genera un eco*/ d FiltEco(f1oat dat1,float *dat2)

nt i;

'or(i=l;i<NumCoef;i++){ Z[NumCoef-i]=Z[NumCoef-i-11;

[O]=datl; dat2=0.0; or(i=O;i<NumCoef;i++){

Page 51: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

'1

I ! .

*datZ+=Coef[i]*Z[i]; 1

Puncion que pide los datos de: nombres de archivos de entrada y de salida,*/ 3lfa y numero de iteraciones. Tambien abre todos los archivos necesarios*/ Id PideDatos(void)

:bar cad[ 501 ;

Irintf ( "Archivo de voz: " ) ; scanf ( "%sf' ,cad) ; itrcpy(arch1,cad); ?rintf("Archivo de salida: ");scanf("%sR,cad); strcpy(arch2,cad); if((fpl=fopen(archl,"r"))==NULL){

printf("ERR0R: el archivo %S no se puede abrir\n",archl); getch( 1 : exit( 1 ) ;

i $lse{ if ( ( fpZ=fopen( arch2, "w" ) )==NULL) { printf("ERR0R: el archivo %S no se puede abrir\n",archZ); getch( 1 : exit (1) ;

I else{

if((fp3=f0pen(~~a:msedb,dat~~,"w"))==NULL){ printf(''ERR0R: el archivo a:msedb.dat no se puede abrir\n"); getch( 1 : exit (1) ;

I else{

if((fp4=f0pen(~~a:invoz.dat~,~~w~))==NULL){ printf("ERR0R: el archivo a:invoz.dat no se puede abrir\n");

exit(1); getch( 1 :

I else{

if((fp5=fopen("a:outvo~.dat","w"))==NULL){ printf("ERR0R: el archivo a:outvoz.dat no se puede abrir\n"); getch( 1 ; exit( 1) ;

I else{ printf("E1 número de iteraciones es: " ) ; /*pide el numero de*/ scanf ("%d" ,&Iter) ; /*iteraciones*/ do { printf("Alfa= " ) ; /*pide el numero de alfa*/ scanf ( "%f" ,&alfa) ;

)while((alfa<=O) I (alfa>l)); /*si >1 o <O lo rechaza*/

uncion q1 ue toma un numero MaxSize de datos de voz y genera el arreglo */ on los datos del eco y el de entrada de los datos de voz + eco*/ d CreaEco(void)

Page 52: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

I I

float dat1,datZ; :har dum[2],auxl[2];

For(i=O;i<MaxSize;i++){ /*toma un numero MaxSize de datos de voz*/

f lag=O ; /*si el archivo de voz llego a su fin*/ i=MaxSize+l; /*se detiene el ciclo*/

if (feof (fpl) ) {

1 else{

fscanf(fpl,"%s%s%s%s",auxl,&dum,&durn,&dum); /*lee los datos de voz*/ Voz[i]=HexFlot(auxl); datl=Voz[i]; fprintf(fp4,"%f ",datl); FiltEco(datl,&datZ); if(dat2>255){ dat2=255;

I if (dat2<0) { dat2=0;

1 Eco[i]=dat2; if(datl+dat2>255)(

1 Vozeco[i]=datl;

else{

1 if(Vozeco[i]>255){ Vozeco[i]=255;

if(Vozeco[i]<O){

1 Vozeco[i]=O;

Vozeco[i]=(datl+dat2);

0

I

/*transforma el dato de hex a float*/ /*datl es el dato de la voz*/

/*se obtiene el eco de datl*/ /*guarda dato de voz en a:invoz*/

/*pone un margen de valor de los datos*/ /*de eco y vozeco entre O y 255*/

'uncion que hace una aproximacion del eco generado por el sistema y le*/ 'esta esta aproximacion a los datos de voz + eco para obtener la salida*/ I

le voz con el eco cancelado. Toma los datos de entrada de voz, los filtra*/ r realiza la adaptacion de los coeficientes del filtro en base al error*/ !n la aproximacion del eco y al valor de alfa*/ .d Iteraciones(void)

I

.nt i, j; 'loat ecoaprox,salida; -

:bar p[ 21 ; 'loat Eprom,Veprom,MSE,MSEDB;

:lrscr() ; 'lag=l ; I :prom=O . O ; 'eprom=O . O ; nicializao; /*inicializa todos los arreglos*/ 'ideDatos( ) ; /*pide los datos y abre los archivos necesarios*/ 1 , Irintf(" \nIteracion MSEDB\n"); 'or(i=l;i<=Iter;i++){ /*ciclo que realiza las iteraciones*/ if(!flag){ /*si se acabaron los datos del archivo voz se*/ i=I ter+l ; /*corta el ciclo de iteraciones*/ printf("Fin de archivo de datos"); getch( 1 ; 1 else{

I ,

Page 53: UNIDAD: IZTAPALAPA DMSION: CIENCIAS BASICAS …148.206.53.84/tesiuami/UAMI10458.pdf · simulaciones realizadas muestran que, ... y por el muestreo de frecuencia, fs = UT: ... Por

CreaEco(); /*funcion que genera los vectores con datos*/

for(j=O;j<MaxSize;j++){ /*de entrada de voz, eco, voz+eco*/

voz=Voz[j]; /*toma un dato de voz del arreglo Voz*/ eco=Eco[j]; /*toma un dato de eco del arreglo Eco*/ vozeco=Vozeco[j]; /*toma un dato de vozeco del arreglo Vozeco*/ ecoaprox=Filtro(voz); /*filtra el dato de voz y obtiene el*/ I error=eco-ecoaprox; /*obtiene el error de la aproximacion*/ AdaptCoef(&alfa,&error); /*se adaptan los coeficientes del filtro*/

/*en base al error de aproximacion y a alfa*/ Salida[j]=vozeco-ecoaprox; /*obtiene la salida de voz ya con la*/

salida=Salida[j]; fprintf(fp5,"%f ",salida); /*guarda salida de voz en flotante*/ itoa(salida,p,l6); fprintf (fp2, "%s\n" ,p) : /*guarda salida de voz en hexadecimal*/ Eprom=Eprom+(error*error); /*obtiene los datos para calcular*/ Veprom=Veprom+(vozeco*vozeco); /*el error medio cuadratico*/ cont++;

/*eco aproximado*/

/*cancelation de eco*/

!

1 MSE=Eprom/Veprom; /*obtention del error medio cuadratico*/ MSEDB=lO.O*log(MSE)/log(lO.O); /*error medio cuadatico en decibeles*/ print f ( "%4d %14f6\nw,i,MSEDB); fprintf (fp3, "%f ,MSEDB) ; /*guarda datos de error medio cuadratico*/

1 'close( fpl) ; 'close( fp2) ; /*se cierran todos los archivos abiertos*/ 'close( fp3) ; ?close( fp4) ; 'close( fp5) ;

.d main(void)

.nt opcion;

:ont=O; 10 opcion=Menu(); switch(opcion){ case ' 1 ' : Iteraciones(); getch() ; break ;

case IVt: ImprimeDatos(); break ;

case ' S ' : break ;

1 while(opcion!='S'); :lrscr( ) ;