Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ESCUELA UNIVERSITARIA POLITCNICA DE TERUEL DEPARTAMENTO DE TEORA DE LA SEAL Y COMUNICACIONES TRABAJO FIN DE CARRERA
INDICE NDICE INTRODUCCIN. . . . . . . . . . . . . . . . . . . . . .4 1. CONCEPTOS INTRODUCTORIOS. . . . . . . . . . . . . . 1.1. EL PROBLEMA DEL ECO; EL ALGORITMO EN PLANTA. 1.2. SEALES Y SISTEMAS EN TIEMPO DISCRETO. . . . 1.3. CONVOLUCIN. . . . . . . . . . . . . . . . . 1.4. FFT (FAST FOURIER TRANSFORM) . . . . . . . . 1.5. FILTRADO DE WIENER . . . . . . . . . . . . . 1.6. FILTRADO ADAPTATIVO. . . . . . . . . . . . . 2. ALGORITMO LMS EN EL DOMINIO DEL TIEMPO. . . . . . . 2.1. ALGORITMO LMS. . . . . . . . . . . . . . . . 2.1.1. INTRODUCCIN . . . . . . . . . . . . . . . 2.1.2. DIAGRAMA DE BLOQUES E INSTRUCCIONES. . . . 2.1.3. RESULTADOS CON DIFERENTES SEALES DE ENTRADA . . . . . . . . . . . . . . . . . . . . . 2.1.4. RESULTADOS CAMBIANDO EL TAMAO DEL FILTRO. 2.1.5. CLCULO DEL NMERO DE SUMAS Y PRODUCTOS EN FUNCIN DEL TAMAO DE FILTRO . . . . . . . . . 2.1.6. CDIGO DEL PROGRAMA. . . . . . . . . . . . 2.2. ALGORITMO NLMS (LMS NORMALIZADO) . . . . . . 2.2.1. INTRODUCCIN . . . . . . . . . . . . . . 2.2.2. DIAGRAMA DE BLOQUES E INSTRUCCIONES. . . 2.2.3. DEPENDIENTE DE LA POTENCIA DE LA SEAL 2.2.4. RESULTADOS OBTENIDOS (MEJORES VALORES DE ). . . . . . . . . . . . . 2.2.5. COMPARACIN RESULTADOS LMS vs. NLMS (DIFERENCIAS, VENTAJAS E INCONVENIENTES). . . . 2.2.6. CDIGO DEL PROGRAMA. . . . . . . . . . . 2.3. ALGORITMO BLMS (BLOCK LMS) . . . . . . . . . 2.3.1. INTRODUCCIN . . . . . . . . . . . . . . 2.3.2. DIAGRAMA DE BLOQUES E INSTRUCCIONES. . . 2.3.3. RESULTADOS OBTENIDOS (MEJORES VALORES DE ). . . . . . . . . . . . . 2.3.4. COMPARACIN DE RESULTADOS LMS vs. BLMS (DIFERENCIAS, VENTAJAS E INCONVENIENTES). . . . 2.3.5. DIFERENCIA DE OPERACIONES LMS VS. BLMS . 2.3.6. CDIGO DEL PROGRAMA. . . . . . . . . . . 2.4. ALGORITMO BNLMS (BLOCK LMS NORMALIZADO). 2.4.1. INTRODUCCIN . . . . . . . . . . . . 2.4.2. DIAGRAMA DE BLOQUES E INSTRUCCIONES. 2.4.3. RESULTADOS OBTENIDOS (MEJORES VALORES DE ). . . . . . . . . . . . . . . .7 .8 11 13 17 28
35 36 36 40 44 53 61 63 66 66 68 70
INDICE 2.4.4. COMPARACIN DE RESULTADOS BLMS vs. BNLMS (DIFERENCIAS, VENTAJAS E INCONVENIENTES). . . . 126 2.4.5. CDIGO DEL PROGRAMA. . . . . . . . . . . 132
3. ALGORITMO LMS EN EL DOMINIO DE LA FRECUENCIA. . . 133 3.1. INTRODUCCIN; MTODO SOLAPAMIENTO-ALMACENAMIENTO . . . . . . . . . . . 134 3.2. LMS FORZADO (CONSTRAINED). . . . . . . . 3.2.1. DIAGRAMA DE BLOQUES E INSTRUCCIONES. 3.2.2. RESULTADOS CON DIFERENTES SEALES DE ENTRADA. . . . . . . . . . . . . 3.2.3.- CLCULO DEL NMERO DE OPERACIONES . 3.2.4.- CDIGO DEL PROGRAMA . . . . . . . . . . 138 . . 138 . . 141 . . 149 . . 152
3.3.-LMS NO FORZADO (UNCONSTRAINED) . . . . . . . 155 3.3.1.- DIAGRAMA DE BLOQUES E INSTRUCCIONES . . 155 3.3.2.- RESULTADOS CON DIFERENTES SEALES DE ENTRADA. . . . . . . . . . . . . . . 157 3.3.3.- COMPARATIVA RESULTADOS LMS FORZADO vs. NO FORZADO. . . . . . . . . . . . . . . . . . . . 165 3.3.4.- CLCULO DEL NMERO DE OPERACIONES . . . 171 3.3.5.- CDIGO DEL PROGRAMA . . . . . . . . . . 174 3.4.-ADAPTACIN DEL FACTOR DE CONVERGENCIA . . . 3.4.1.- ADAPTACIN SEGN POTENCIA DE LA SEAL . 3.4.2.- RESULTADOS LMS FORZADO CON ADAPTATIVA 3.4.3.- COMPARATIVA LMS CON Y SIN ADAPTATIVA. 3.4.4.- CLCULO DEL NMERO DE OPERACIONES . . . 3.5.-CONVOLUCIN CIRCULAR. . . . . . . . . . . 3.5.1.- DIAGRAMA DE BLOQUES E INSTRUCCIONES 3.5.2.- RESULTADOS OBTENIDOS CON DIFERENTES SEALES DE ENTRADA. . . . . . . . . . . . . 3.5.3.- COMPARATIVA LMS FORZADO vs. LMS CONVOLUCIN CIRCULAR. . . . . . . . . . . 3.5.3.- CLCULO DEL NMERO DE OPERACIONES . 3.5.4.- CDIGO DEL PROGRAMA . . . . . . . . 175 175 177 183 188
La motivacin que me ha llevado a realizar este trabajo o proyecto, es por la cercana del mismo con los temas de comunicacin y teora de la seal; al realizar este trabajo, pens que me sera ms fcil entender muchos de los conceptos que en la carrera, ya sea por falta de tiempo o de materia, se quedaron un poco en el aire. Quizs este trabajo hubiera quedado ms extenso y completo con la ayuda de un factor indispensable en estos casos, el tiempo. A esto hay que unirle que la mayora de la informacin utilizada se encuentra en lenguas extranjeras (sobre todo la inglesa), y mi casi total desconocimiento de las mismas hace que este problema se acente. Todo el trabajo de experimentacin se ha realizado en el entorno de programacin de MATLAB, por lo que al principio de este proyecto se dedic un tiempo para aprender su manejo, de un modo esencial, que se ira acrecentando con la realizacin del mismo. Se realizaron en este entorno varios algoritmos que ms tarde seran utilizados durante todo el trabajo como funciones, vase, implementacin del algoritmo FFT (transformada rpida de Fourier), convolucin lineal Despus se present el problema del eco en las comunicaciones, problema que debamos resolver con algoritmos adaptativos. Para ello se estudi el filtro de Wiener, como una aproximacin a lo que deberamos hacer en un futuro, con la salvedad de que en el futuro no estaramos analizando en rgimen estacionario sino que nuestro sistema cambiaria con el tiempo, de ah el estudio de los filtros adaptativos, en concreto el algoritmo LMS, un algoritmo utilizado inicialmente en estadstica (aproximacin por mnimos cuadramos). Al cabo de un tiempo, cuando se era consciente del problema y por donde tena que ir la solucin, se empez a pensar en la optimizacin del camino a recorrer (optimizacin del algoritmo) y a partir de ah, el estudio consisti en recoger datos, programar nuevos algoritmos, calcular el nmero de operaciones que realizaban, volver a recoger datos y por ltimo sacar conclusiones de todas estas figuras, grficas y tablas al compararlas unas con otras. La mayora de los conceptos que contiene este proyecto son fciles de entender para una persona con unos mnimos conocimientos en teora de la seal, aunque hay algunos
Lorenzo Meler Ferraz
INTRODUCCIN como por ejemplo el algoritmo LMS, el algoritmo de la FFT, y el mtodo de solapameinto-almacenamiento, as como el filtrado de Wiener, que pueden resultar complicados de entender en un principio, pero que en este trabajo se intentan explicar con algo de claridad, haciendo introducciones, tanto matemticas como explicativas. En el apartado conceptos introductorios, se ha intentado explicar todos estos temas en los cuales se ha pensado que el lector pudiera tener dificultades de comprensin. El objetivo principal de este proyecto es cancelar el eco. Primero se tuvo que definir la palabra eco y despus plantear el problema y cual sera el camino a resolver. El principal problema que uno se puede encontrar no es como se pueda suponer, cancelar el eco, el principal problema, que luego se convirti en objetivo, est en que el nmero de operaciones es excesivo para realizarlas en tiempo real. De ah surge nuestro siguiente objetivo, la optimizacin de algoritmos para conseguir reducir al mximo nuestro nmero de operaciones. Por supuesto, cuando se intenta optimizar surgen otras consecuencias que habr que valorar que posteriormente se convierten nuevamente en otro problema. Una vez expuestos todos los problemas que se pueden tener a la hora de hacer este proyecto, se plantean los objetivos ms concretos. Se decide trabajar con varios algoritmos, tanto en el tiempo como en la frecuencia, variaciones de dichos algoritmos, etc.; tambin hay que determinar con que seales se van a trabajar y por ltimo se realiza el trabajo, tomar muestras con diferentes algoritmos y sacar conclusiones, con las caractersticas que determinaran si una cancelacin es buena o no. Estas caractersticas son: nivel de cancelacin (se tomarn valores lineales y logartmicos). Tiempo de cancelacin (tiempo que tarda en llegar a lo que llamaremos y definiremos ms adelante nivel de error residual). y por ltimo, la estabilidad final de la cancelacin.
Una vez expuestos los objetivos, habr que analizar si se han cumplido o no, hacer un resumen de lo alcanzado y a lo que no se ha podido llegar. Pero todo esto quedar marcado en la conclusin. Por ltimo, agradecer a todas las personas que me han prestado su apoyo, tanto por aportarme una luz aclaratoria a conceptos que por mi mismo quizs no hubiera descubierto nunca, como por su apoyo moral, as como por el material. Un especial agradecimiento sobre todo a la directora de este proyecto y todos los profesores del rea de Teora de la Seal de la EUPT. Tambin se merece una mencin la
INTRODUCCIN profesora de tcnicas de expresin oral y escrita de la facultad de Ciencias Humanas y Sociales de Teruel por la ayuda que prest en su momento a la hora de redactar este proyecto. Agradezco a todos los que se sientan agradecidos y a aquellos que no lo sientan por pudor, vergenza, autoestima o simple modestia. A todos, gracias por participar en este punto y seguido de mi carrera universitaria, y a disfrutar con los conocimientos que aqu se exponen.
Por qu esta magnfica tecnologa cientfica, que ahorra trabajo y nos hace la vida mas fcil, nos aporta tan poca felicidad? La repuesta es est, simplemente: porque an no hemos aprendido a usarla con tino.
La palabra progreso no tiene ningn sentido mientras haya nios infelices. En el pensamiento cientfico siempre estn presentes elementos de poesa. La ciencia y la msica actual exigen de un proceso de pensamiento homogneo. Hay dos cosas infinitas: el Universo humana. Y del Universo no estoy seguro. y la estupidez
Albert Einstein
CONCEPTOS INTRODUCCTORIOS
CONCEPTOS INTRODUCCTORIOS 1.- EL PROBLEMA DEL ECO; EL ALGORITMO EN PLANTA. El problema del eco es bien conocido en el mbito de la telefona clsica, donde los efectos del retardo de lnea sobre una comunicacin establecida en medianas y grandes distancias resultaban bastante molestos. Pero el eco presente en estos casos, producto de las impedancias no adaptadas entre dos y cuatro hilos, no es el nico caso de eco. Es ms, con el creciente aumento de los sistemas telefnicos "manos libres", muy utilizados en los vehculos, o en las oficinas, al igual que con los telfonos inalmbricos, surge otro tipo de eco: el eco acstico. Este eco es producto de la realimentacin de la seal que emite el parlante, a travs del micrfono. La figura 1.1, muestra un esquema de lo que ocurre con el eco acstico. Imaginemos ahora una persona que habla con la que tenemos sentada en nuestro cubo (personaje b). La voz de nuestro personaje A (el que no se ve), llega a la habitacin y rebota en sus paredes, introducindose por el micrfono. Al meterse por el micrfono esta seal (que recordemos es la voz del personaje A), ir a travs de la lnea hasta el altavoz de A, producindose algo que podramos considerar desagradable desde el punto de vista de la comunicacin.
Figura 1.1 La manera de evitar que esa realimentacin acstica se propague a travs de la lnea telefnica, deteriorando considerablemente la seal y provocando molestias para el interlocutor, es cancelar la seal de eco utilizando filtros digitales con los que reproducir la seal de eco y
Lorenzo Meler Ferraz
La seal que proviene de la persona A, que va a travs del cable y que de momento no ha sufrido ninguna modificacin debido a conversores, amplificadores, rebotes, etc. ser llamada x, que evoluciona en el tiempo, esta seal es muestreada cada 1/8000 seg. por el sistema cancelador de eco. Una vez que esta seal ha pasado por lo que llamamos planta, se convertir en la seal deseada que se denotar a partir de ahora como d. Esta planta estar formada por los amplificadores y conversores necesarios para provocar la seal audible, el rebote de esta por toda nuestra sala, as como la influencia del micrfono y aparatos electrnicos que sean necesarios para retrasmitir la seal. Esta planta o sistema presentar una respuesta impulsional, a la que se llamar h, y que como ya se sabe, convolucionada con la seal x (se recuerda que es la seal de entrada), dar lugar a la seal deseada d, que ser la obtenida con el micrfono simplemente muestreada y adaptada por el sistema, como indicaremos en el apartado 3 de este captulo. Con esta seal d y otra que se obtendr al pasar la seal de entrada x por un filtro adaptativo, que tendr como respuesta impulsional he, se obtendr la seal estimada y. Esta ltima la se restar de la seal d y esto proporcionar un error, llamado e, con el cual se jugar para ir adaptando el filtro adaptativo. El filtro he queda determinado por el valor de sus coeficientes que se irn modificando con el objetivo de reducir esta seal de error (Filtro adaptativo) Un mtodo clsico y sencillo, que se encuentra dentro de la clasificacin de filtros adaptativos, es el de Least Mean Squares o ms conocido por sus siglas, LMS. Existen mejoras sobre el algoritmo bsico de LMS, como por ejemplo, la normalizacin del coeficiente de adaptacin (mu) a travs de la potencia. A su vez, hay diversas formas de implementar el clculo o estimacin de la potencia. En este caso se opta en primera instancia por la versin bsica del LMS. Luego, para ver la mejora que introduce la normalizacin del coeficiente de adaptacin tomando en cuenta la potencia de seal, se implementa la versin normalizada. El objetivo de este proyecto fue tomar contacto con los mecanismos de cancelacin de eco en su idea bsica de funcionamiento. De ms esta decir que existen muchos otros algoritmos, modificaciones y
CONCEPTOS INTRODUCCTORIOS consideraciones sobre los tratados en este proyecto, algunas de los cuales se mencionarn mas adelante. Cuando el hablante cercano (B) empieza a hablar, se deber detener el proceso de adaptacin, ya que debido a que las frecuencias son iguales se producira una distorsin en la cancelacin. Por lo tanto se debera detectar que el hablante cercano est hablando y esto se realiza con el sistema de double-talk, sistema que no se analizar en este proyecto. Este primer acercamiento a lo que se va a hacer en este trabajo, da una idea de cual va a ser el objetivo principal, adaptar un filtro, para conseguir eliminar una seal, es decir, eliminar el molesto eco. Las seales que se han intentado definir antes, y que se pueden ver claramente en la figura 1.1, son las que van a ser utilizadas a lo largo de todo este trabajo, con la misma notacin que aparecen aqu. Habr que tener en cuenta, como se explica en el apartado 4 de este captulo, que las seales que aqu estn en el dominio del tiempo, ms adelante, se podrn ver en el dominio de la frecuencia, debido a la simplicidad que reporta el trabajar en este campo. Pues bien, a las seales que estn en el dominio de la frecuencia, se les intentar denotar igual que en el dominio del tiempo pero con maysculas. Estos sistemas funcionan en tiempo real, de otra forma no tendra sentido realizar todas estas operaciones, ya que nunca se podra llegar a reducir el error. Estos sistemas suelen implementarse en DSPs debido a que tienen una gran capacidad de hacer operaciones como suma o productos. En algunos apartados de esto proyecto se tiene en cuenta el hecho de que se implementen estos sistemas en DSPs, sobre todo a la hora de calcular las operaciones.
10
CONCEPTOS INTRODUCCTORIOS 2. SEALES Y SISTEMAS EN TIEMPO DISCRETO Debido a que el trabajo se va a realizar en su mayor parte con el ordenador (que va a simular el procesador digital), es necesario que se trabaje en todo momento con seales y sistemas en tiempo discreto. Tanto las seales como los sistemas originales son de carcter continuo, por lo que se debern transformar a un nmero de muestras concreto. Las seales en tiempo continuo estn definidas para todos los valores del tiempo, sin embargo las seales en tiempo discreto slo estn definidas para determinados valores del eje de tiempos. Si la seal puede tomar cualquier valor en cualquier instante de tiempo, es decir, si es una funcin continua en el tiempo y continua en amplitud, se dice que la seal es continua o analgica como puede verse en la figura 2.1. La variable tiempo se representa mediante la letra t y la seal mediante x(t).
x(t)
Figura 2.1
Si la seal est definida nicamente en instantes enteros del tiempo, pero puede tomar cualquier valor real o complejo, se dice que la seal es discreta, como puede verse en la figura 2.2. En este caso habra un muestreo de una variable real. La variable independiente se representa con la letra n y la seal mediante x[n].
11
Figura 2.2 Este ltimo tipo de seales son las que se van a utilizar en el presente trabajo. En realidad la amplitud de la seal tambin tomar valores discretos, valores que sern determinados por el nmero de bits del conversor analgico-digital. Pero se asumir que la computadora podr tomar valores suficientemente aproximados como para decir que la amplitud pueda tomar cualquier valor. Para conseguir una seal en tiempo discreto a partir de otra en tiempo continuo, esta ltima la se tendr que muestrear. Este muestreo tiene que cumplir una norma esencial; esta norma o criterio se llama criterio de Nyquist, el cual nos dice que la frecuencia de muestreo (fm) tiene que ser mayor o igual a dos veces el ancho de banda de la seal a muestrear (ec. 2.1). Si se cumpliera esto, se podra reconstruir la seal sin ningn problema.
fm 2w
ec. 2.1
Este criterio sirve tanto para seales peridicas como para no peridicas, ya que estas ltimas se pueden poner como combinacin de lineal de seales peridicas. Por lo tanto, si se est usando una frecuencia de muestreo de 8000 muestras por segundo, nicamente se podr recuperar con precisin seales que posean un ancho de banda de w=fm/2=4000 Hz., o combinaciones lineales de frecuencias menores que sta.
12
CONCEPTOS INTRODUCCTORIOS 3.- CONVOLUCIN La seal x (en la figura 1.1), que se denomina seal de entrada, es la seal que circula por el cable antes de llegar a la habitacin. Esta seal entra a la habitacin, rebota y se introduce por el micrfono, para volver a salir de la habitacin. El camino que la seal de entrada x recorre hasta salir de la habitacin, se llamar sistema y la seal obtenida a la salida (por supuesto diferente a x) es la seal deseada d. Se supone que se conoce la respuesta impulsional1 de este sistema, h[n], entonces para calcular la seal deseada, lo nico que se debera hacer sera la convolucin de la seal de entrada x con esta respuesta impulsional h[n] (que en algunos casos tambin llamaremos filtro). Se supone que el filtro h[n] (es decir, la respuesta impulsional de nuestro sistema) no vara en el tiempo. Si la seal de entrada es x[n], la seal de salida y[n] se calcula a travs de la convolucin.
x(n)
Figura 3.1
y(n)=x(n)*h(n)
Con el smbolo , se quiere mostrar el sistema por el que deber pasar la seal de entrada x(n), cuya respuesta impulsional es h(n)
y (n) = h[m]x[n m]
m =1
ec. 3.1
La interpretacin grfica de la suma de convolucin es muy sencilla. Para calcular la salida y[n] en un cierto instante fijo n, primero se dibujan h[m] y x[n-m] sobre el eje m. m recorre el ndice de coeficientes de la respuesta impulsional (salida para un impulso en tiempo 0) En segundo lugar, se multiplican ambas seales para obtener la seal h[m] x[n-m]. Si se suman todos los valores de la nueva seal con respecto a m obtendremos el valor de y[n].
1. La respuesta impulsional, es el resultado que se obtiene a la salida de un sistema al proporcionarle en la entrada una Dirac (impulso unitario).
de
13
CONCEPTOS INTRODUCCTORIOS Hay que tener en cuenta que estas operaciones tienen que repetirse para cada valor de n (cada 1/8000 seg.). A continuacin se muestra un ejemplo grfico de cmo se realiza esta convolucin. Se parte de un filtro h[m] que tiene una respuesta impulsional como se muestra en la figura 3.2 (onda cuadrada muestreada).
h [n]
Figura 3.2 La seal que se va a pasar por este sistema (o filtro) es x, representada en la figura 3.3
h [n] x[n-m] n = -3
Figura 3.3 A medida que va pasando el tiempo (tiempo que se tarda en realizar una muestra), la seal se va desplazando hacia la derecha (en el eje de tiempo del tiempo discreto m). En cada instante n, se multiplicacin de x(m)h(m) multiplicaciones resultantes. tendr que y sumar realizar la todas las
h [n] x[n-m] n = 2
Figura 3.4
14
CONCEPTOS INTRODUCCTORIOS
h [n] n = 5 x[n-m]
Figura 3.5
h [n] n = 8
x[n-m] 0 4 m
Figura 3.6 El resultado es la seal de la figura 3.8, observando que ahora el eje de abscisas no se corresponde a m sino a n, es decir, una seal de n muestras de duracin.
h [n] n = 11 x[n-m]
Figura 3.7
y [n]
Figura 3.8 Se ve como si se analiza la seal de la figura 3.4, donde n=2, el valor que obtenemos de la convolucin aparece
15
CONCEPTOS INTRODUCCTORIOS representada en al figura 3.8 cuando n=2, un nico valor para y(n) Hay que tener en cuenta que la seal que se han introducido por el sistema (x), se ha tomado como de duracin finita, pero estos anlisis se suelen usar para seales de duracin infinita o de larga duracin, con lo cual el resultado sera diferente al que se ha obtenido en este ejemplo, ya que se seguiran sumando resultados no nulos de la obtencin de x(m)h(m). A la hora de programar esta operacin, tomando seales de entrada de duracin larga, en un instante de tiempo n, se escoger nicamente un vector de la seal de entrada1 de la misma anchura que el vector del filtro; haremos la siguiente operacin: y n = xn [m]h[1] + xn [m 1]h[2] + .... + xn [2]h[m 1] + xn [1]h[m] ec. 3.2
Esta operacin nos da como resultado un escalar, y, que ser la salida en el instante de muestreo n.
1. A vector de la seal de entrada se refiere a la seal de entrada pero muestreada, es decir una serie de coeficientes, nmero que ser igual que el que posee el filtro. El primer coeficiente de este vector corresponder a la ltima muestra tomada de la seal.
16
CONCEPTOS INTRODUCCTORIOS
Un algoritmo puede ser admirado debido a numerosas razones; tecnolgicas por resolver eficientemente un problema prctico importante, estticas por ser elegante o incluso dramticas por abrir nuevas e inesperadas reas de aplicacin. La transformada rpida de Fourier, quizs por ser fuerte en todos estos apartados, ha emergido como uno de los sper algoritmos de la informtica desde su descubrimiento a mediados de los 60. Lipson 1981 El algoritmo para la realizacin de la transformada de Fourier de una forma eficaz (FFT) fue un hito en el clculo numrico y, parece ser, que el artculo donde se public originalmente es uno de los ms citados de la literatura cientfica. En el apartado anterior, se vio como realizar una convolucin. Esta operacin es necesaria para calcular el valor de una seal cuando pasa a travs de un sistema. Esto, en muchas ocasiones puede tardar demasiado tiempo, tiempo del que no se dispone cuando se intenta trabajar en tiempo real.
*
d h
FFT
X
FFT
H
IFFT
D
Figura 4.1
Lorenzo Meler Ferraz
17
CONCEPTOS INTRODUCCTORIOS
Por ello se utiliza otra herramienta, la FFT, con lo que se consigue trasladar una seal en tiempo discreto (muestreada) al campo transformado de Fourier o lo que se denomina seal en el dominio de la frecuencia. La figura 4.1, muestra de forma intuitiva cual va a ser el modus operandi para calcular la seal deseada, es decir la seal de entrada una vez haya pasado por el sistema. La convolucin consta de varias multiplicaciones y sumas; tiene que quedar claro que una convolucin en el dominio del tiempo es igual a realizar el producto de las mismas funciones en el dominio frecuencial. En la figura 4.1 se muestra como a la seal de entrada x se le hace la transformada rpida de Fourier y luego se multiplica por la tambin transformada del filtro h. Si a esta multiplicacin se le practica la transformada inversa, se obtendr la misma seal que si se sigue el otro camino en el que nicamente haba que hacer una convolucin. A priori, se podra pensar que como el camino recorrido es ms largo que cuando se haca la convolucin, los resultados tardaran ms en representarse. Pero la realidad es otra, y de mostrarlo se encargar este punto, donde tambin se calcular el nmero de operaciones que se necesitan para hacer una FFT. Todas las transformadas de Fourier que se realicen en este proyecto se harn con la transformada rpida de Fourier, ya que simplifica muchas operaciones con respecto a la tradicional DFT (transformada discreta de Fourier). LA TRANSFORMADA DISCRETA DE FOURIER. La transformada discreta de Fourier es una importante herramienta en muchos sistemas de procesado digital de seal; convierte la informacin del dominio del tiempo a una representacin en el dominio de la frecuencia. Los mtodos que son computacionalmente eficientes en el clculo de la DFT, son conocidos como algoritmos para la transformada rpida de Fourier (FFT). La DFT de una secuencia x[k ] , de longitud N, es otra secuencia de N nmeros complejos X [k ] que se define como muestra la ecuacin 4.1
18
CONCEPTOS INTRODUCCTORIOS
X[k] =
N 1
n =0
x[n] W
kn N
0 k N 1
ec. 4.1
es claro que
para cada valor de k, el clculo directo de X [k ] supone realizar N multiplicaciones complejas (4N multiplicaciones reales) y N-1 sumas complejas (4N-2 sumas reales). En consecuencia, para calcular los N valores de la DFT son necesarias N2 multiplicaciones complejas y N2-N sumas complejas. El clculo directo de la DFT es bsicamente ineficiente debido a que no explota las propiedades de simetra y periodicidad del factor de fase.
ALGORITMO FFT (en base 2)
Con este algoritmo, el resultado final es el mismo que con el anterior, lo nico que se hace es optimizar el nmero de operaciones. Sea x[n] una secuencia de longitud N=2m. Se puede dividir la secuencia x[n] en dos subsecuencias de longitud N/2, f1 [n] y f 2 [n], correspondientes a las muestras pares e impares de x[n] respectivamente:
f1 [n] = x[2n] f 2 [n] = x[2n + 1] ,
ec. 4.3
n = 0,1,...,
N 2
ec.4.4
La DFT de N puntos de x[n] puede expresarse ahora en trminos de las DFTs de las secuencias f1 [n] y f 2 [n] como indica la ecuacin 4.5.
X[k] =
n=0
x[n] W
N 1
kn N
ec. 4.5 19
CONCEPTOS INTRODUCCTORIOS
de
la
ecuacin
W N = e j 2 / N
se
obtiene
la
2 WN =e
2 2 N
=e
2 N /2
= WN / 2
ec. 4.6
Teniendo en cuenta este resultado y las ecuaciones derivadas de dividir x[n] en dos subsecuencias, se consigue que:
k = 0,1,...., N 1
m=0
ec. 4.7
Donde F1 [k ] y F2 [k ] son las DFTs de N/2 puntos de las secuencias f1 [n] y f 2 [n], respectivamente. Ahora bien, como se ha dos propiedades del factor de clculo eficiente de la DFT. periodicidad obtiene que una el nmero de muestras:
X[k] =
dicho anteriormente, existen fase WN que van a permitir un Partiendo de la propiedad de DFT es peridica, de periodo
n=0
N 1
kn x[n] WN =
n=0
x[n] W (
N 1
k + N )n N
k = 0,1,....,
N 1 2
N 1 2
ec. 4.9
N k X k + = F1 [k ] + WN F2 [k ] 2
k = 0,1,....,
ec. 4.10
(N 2 )
multiplicaciones complejas. La misma exigencia se aplica al multiplicaciones clculo de F2 [k ] . Adems se requieren N 2 k complejas ms para calcular WN F2 [k ] . De aqu que el clculo
( )
de
X [k ]
requiera
2N
( 2) + N 2 = N
2
20
CONCEPTOS INTRODUCCTORIOS
reduccin en el nmero de multiplicaciones de N 2 a N 2 + N , que equivale aproximadamente a dividir por 2 el 2 2 nmero de multiplicaciones cuando N es grande. En este punto, se puede repetir el proceso para cada una de las secuencias f1 [n ] y f 2 [n]. Por tanto f1 [n ] dar lugar a dos secuencias de N/4 puntos
v11 [n] = f1 [2n] v12 [n] = f 2 [2n + 1]
ec. 4.11
n = 0,1,...,
ec. 4.12
N 1 4
ec. 4.13
n = 0,1,...,
ec. 4.14
N 1 4
Calculando las DFTs de N/4 puntos se obtendr las DFTs de N/2 puntos F1 [k ] y F2 [k ] a partir de las relaciones:
k F1 [k ] = V11 [k ] + WN / 2 V12 [k ]
n = 0,1,...,
N 1 4 N 1 4
ec. 4.15
F1 k + N
]= V [k ] + W
11
k N /2
V12 [k ]
n = 0,1,...,
ec. 4.16
k F2 [k ] = V21 [k ] + WN / 2 V22 [k ]
n = 0,1,...,
N 1 4 N 1 4
ec. 4.17
F1 k + N
]= V
21
[k ] + WNk / 2 V22 [k ]
son las DFTs
n = 0,1,...,
de
ec. 4.18
Donde
Vij [k ]
N/4
puntos
de
las
multiplicaciones y, por lo tanto, el clculo de F1 [k ] y F2 [k ] puede realizarse con N2/4 + N/2 multiplicaciones complejas. Para calcular la secuencia final X [k ] a partir de F1 [k ] y F2 [k ] , se requieren N/2 multiplicaciones complejas ms. Por
Lorenzo Meler Ferraz
clculo
de
Vij [k ]
se
requiere
4(N/4)2
21
CONCEPTOS INTRODUCCTORIOS
tanto el nmero de multiplicaciones necesarias se reduce a N2/4 +N, aproximadamente un factor 2. Este proceso debe repetirse hasta que las secuencias de datos resultantes sean de un nico punto. Si N=2m, el proceso se realizar (N/2)log2N veces. El nmero de sumas complejas queda tambin reducido a Nlog2N.
NMERO DE PUNTOS N MULTIPLICACIONES EN EL CLCULO DIRECTO DE N2 MULTIPLICACIONES CON EL ALGORTIMO (N/2)log2N
En la tabla 4.1 se compara el nmero de multiplicaciones complejas necesarias para el clculo de la DFT, utilizando el clculo directo y el algoritmo FFT de base-2 Hay que recordar que los DSPs, que sern los dispositivos donde se implementen todos estos algoritmos, hacen operaciones reales, por lo que habr que tener en cuenta que al transformar al dominio de la frecuencia nos quedarn nmeros complejos. Se puede observar en la tabla que la utilizacin del algoritmo para la FFT base-2 supone una importante disminucin del nmero de operaciones necesarias en el clculo de la DFT, sobre todo para secuencias de larga duracin.
22
la
DFT
de
puntos,
Figura 4.2
Puesto que las secuencias de una muestra, cuya transformada son ellas mismas, el clculo se realiza en tres etapas. Comienza con el clculo de 4 DFTs de dos puntos, despus dos de 4 puntos y finalmente, una de 8 puntos. El clculo bsico que se realiza en cada etapa, consiste en coger dos nmeros complejos (x1,x2), r multiplicar x2 por WN , y sumar y restar el producto obtenido con x1 para obtener dos nuevos nmeros complejos (f1,f2). Este clculo bsico se denomina mariposa e implica una multiplicacin y dos sumas complejas. Con un nmero de muestras N=2m, se tienen log2N etapas con un total de N/2 mariposas en cada etapa, por lo que el nmero total de operaciones ser (N/2)log2N multiplicaciones complejas y Nlog2N sumas complejas. Cada vez que se realiza una mariposa sobre un par de nmeros complejos (x1, x2 por ejemplo) para obtener (f1,f2), no es necesario guardar el par de entrada (x1,x2). Por tanto se puede guardar el resultado (f1,f2) en las mismas posiciones que (x1,x2). En consecuencia, se necesitan una cantidad de memoria fija con 2N registros de almacenamiento, para guardar los resultados de los clculos
Lorenzo Meler Ferraz
23
CONCEPTOS INTRODUCCTORIOS
correspondientes a cada etapa, usando durante todo clculo de la DFT las mismas posiciones de memoria.
el
0 1 2 3 4 5 6 7
0 4 2 6 1 5 3 7
Por otro lado cabe destacar el orden de la secuencia de entrada. Si se considera el caso de N=8 el primer diezmado (separacin de las secuencias en sus muestras pares e impares) da la secuencia x1, x3, x5, x7 y el segundo x2, x4, x6, x8. La secuencia de entrada debe de ser reordenada antes de comenzar el clculo de las mariposas. Cada muestra de la secuencia inicial x[n] se almacena en la secuencia reordenada en orden binario invertido (ver tabla 4.2). El orden binario invertido consiste en tomar la posicin de las muestras en al secuencia inicial con m=log2N bits e invertir el orden de los bits; el nmero binario resultante nos dar la posicin de la muestra correspondiente en la secuencia reordenada final. Vector de entrada:
0 1 2 3 4 5 6 7
10
Tabla 4.3
la
notacin
x[n]
como
24
CONCEPTOS INTRODUCCTORIOS
Vector de salida:
0 1 2 3 4 5 6 7
10
Tabla 4.4
Se puede concluir que la transforma de Fourier es una herramienta matemtica que consiste bsicamente en un cambio de base. La base elegida para representar las seales son fasores (exponenciales complejas) sinusoidales de todas las frecuencias, y al calcular los coeficientes o transformada se obtiene el peso relativo de cada componente frecuencial de la seal a transformar. Un anlisis espectral es siempre el primer paso en cualquier proceso de tratamiento de seal. Lo que se ha implementado es un algoritmo eficiente que realiza de un modo aproximado (no hay que olvidar que se trabaja con seales muestreadas y cuantificadas) ese anlisis espectral. Realizar la IFFT (inversa de la transformada rpida de Fourier), consistir nicamente en seguir la mariposa de derecha a izquierda (sentido inverso al que se ha recorrido antes), para llegar a los resultados iniciales, recordando que se debe de reorganizar el vector de entrada (salida en la FFT), para que en la salida (entrada en la FFT) el resultado de ordenado.
25
CONCEPTOS INTRODUCCTORIOS
CDIGO function [senal_out]=mifft(senal_in,N) for u=1:N %metemos los primero N coeficientes de la seal de entrada en out out1(u)=senal_in(u); end out=out1; T=log10(N)/log10(2);%calculamos el nmero de bits necesarios, segn el nmero de coeficientes que le metemos a la funcin. T=fix(T+0.5); binario=zeros(1,T); %para crear un vector de longitud T todo zeros %********************************************************** %***** ordenamos los coeficientes %********************************************************** for n=1:N indice=n-1; for t=1:T %calculo el numero en binario y le doy la vuelta directamente binario(t)=rem(indice,2); indice=fix(indice/2); binario2(T-t+1)=binario(t); end decimal=0; for t=0:T-1 decimal=binario2(t+1)*(2^(t))+decimal; end decimal=decimal+1; out(n)=out1(decimal); end %****************************************** %*** una vez ordenados los coeficientes %*** calculamos la transformada %****************************************** for d=1:T n=2^d; w=2*pi/n; for m=0:n:N-n for k=1:1:(n/2) y=out(m+k);
26
end end
27
Como se explicaba en el primer punto el problema del eco, el proceso de pasar la seal por conversores, habitaciones, altavoces, etc., se acaba denominando filtrado. El inters radica en estimar como se realiza este filtrado, es decir, poder realizar digitalmente un sistema lo ms parecido al filtrado real (recordando, los conversores, los altavoces,.) Wiener propone una solucin para llegar lo ms rpido posible a conseguir nuestro filtro deseado, caso que se explicar a continuacin. Pero despus de todo esto, surge un problema aadido, y es que tanto el filtro real como nuestra seal de entrada van variando constantemente, la seal de entrada lo hace por razones obvias (si es voz esta seal est claro su cambio) y el filtro puede cambiar por condiciones ambientales, por modificacin de la sala etc. Este ltimo problema no se puede resolver con la solucin que en un principio Wiener nos propone, pero si con un algoritmo llamado LMS que proviene del filtrado de Wiener. Se ver como el problema de la no estacionareidad se resuelve con este ltimo algoritmo, ya que la solucin ptima de Wiener se consigue exclusivamente para sistemas estacionarios. El objetivo de este apartado consiste en explicar el filtro de Wiener, que no es ms que el de diseo de una respuesta impulsional h(n), de longitud L muestras, de modo y manera que la salida y(n) sea lo mas parecida posible a una seal, denominada deseada, d(n). El denominado parecido puede establecerse con cualquier criterio que se estime oportuno; no obstante, un planteamiento lineal del problema obliga a tomar, como medida de parecido, el error cuadrtico medio entre la salida y la referencia.
ec. 5.1
Dicho de otro modo, el propsito es encontrar un FIR de L coeficientes h(n) (n=1,L) tal que su respuesta a los datos, de este modo se denominar a la seal de entrada, produzca una salida lo mas prxima a la deseada en trminos de MSE (Error Cuadrtico Medio) mnimo. La situacin se resume en la figura 5.1:
28
CONCEPTOS INTRODUCCTORIOS
x(n)
salida y(n)
- +
deseada d(n)
Figura 5.1
Donde: DATOS x(n) n=0,...N-1 vector x FILTRO h(n) n=0,...,L-1 vector h SALIDA y(n) n=0,...,N+L-1 REFERENCIA d(n) n=0,...,N-1 De nuevo es til formular el problema en trminos vectoriales. La salida del filtro puede escribirse como:
y ( n) = h * x
ec. 5.2
Al introducir esta ltima expresin en el clculo del error que aparece en la ecuacin 5.1 y desarrollar el valor esperado de su modulo al cuadrado se obtiene la funcin objetivo a minimizar. En definitiva, encontrar un filtro FIR que cumpla estas condiciones no es ms que ir modificando los coeficientes de manera que el error que se produzca, sea cada vez menor, llegando al final a la solucin optima de Wiener como se muestra en al figura 5.2.
Convergencia 0.16 solucin ptima de Wiener 0.14
0.12
0.1
W1
0.08
0.06
0.04
0.02
0 -0.08
-0.06
-0.04
-0.02
0 W0
0.02
0.04
0.06
0.08
Figura 5.2
29
Generalmente, las seales con las que se trabaja no son estacionarias, por ello, el filtrado de Wiener (captulo 5) no resulta apropiado en estas situaciones, ya que es la solucin ptima para el caso de sistemas estacionarios. Una forma de solventar este problema consiste en operar con el proceso en bloques, sobre intervalos en los cuales el proceso pueda ser considerado aproximadamente estacionario. Pero esta tcnica presenta limitaciones en su efectividad por varias causas. En primer lugar, para procesos con gran velocidad de variacin, el intervalo sobre el que se puede considerar estacionariedad va a ser demasiado pequeo para conseguir una resolucin apropiada. Por otra parte, esta tcnica no puede incorporar fcilmente cambios en los intervalos de anlisis. Por ltimo, y ms importante, esta solucin impone un modelo incorrecto para los datos, es decir, considera estacionariedad donde no la hay. Por tanto, para obtener unos resultados ms precisos, se debe comenzar nuestro estudio bajo el supuesto de no estacionariedad. Para el caso del filtro Wiener FIR, con coeficientes h, la estimacin de la seal en sentido de mnimo error cuadrtico medio es: d (n) =
m =1
h(m)x(n
m)
ec. 6.1
R (n) = x(n)x H (n) ec. 6.1.a p(n) = x(n)d (n) ec. 6.1.b
Con x(n) y d(n) procesos estacionarios en sentido amplio, la solucin de Wiener resulta hopt = R-1 p. Siendo R la matriz de autocorrelacin de x (ecuacin 6.1.a) y p la ecuacin de correlacin entre las seales x y d (ecuacin 6.1.b). Pero ahora los procesos con los que se trabaja no son estacionarios, y los coeficientes del filtro que minimizan E{|e(n)|2} dependen de n: y (n) =
k=0
h (n)x(n
k
N 1
k)
ec. 6.2
30
CONCEPTOS INTRODUCCTORIOS
donde hk(n) es el coeficiente k-simo en el instante n. De esta forma, la salida del filtro y(n) se puede expresar como
y(n) = hT(n) x(n) ec. 6.3
donde
hk = [ h0(n) x(n) = [ x(n) h1(n) ... hp-1(n)]T x(n-1) ... x(n-p+1)]T ec. 6.4 ec. 6.5
El diseo de un filtro adaptativo (variante en el tiempo) es mucho ms complicado que el de un filtro de Wiener (invariante en el tiempo), ya que, para cada instante de tiempo n, se ha de encontrar un conjunto de coeficientes ptimos, hk(n) para k = 1, 2, ..., N. Pero se puede simplificar el problema considerando una actualizacin de los pesos del filtro de la forma que muestra la ecuacin 6.6.
h(n+1)= h(n) + hn ec. 6.6
donde hn es un factor de correccin que se aplica a los coeficientes h(n) en el instante n para obtener el nuevo conjunto de coeficientes h(n+1) en el instante n+1. Esta ecuacin de actualizacin es la base de los algoritmos adaptativos, y el diseo de cada filtro adaptativo requiere definir este factor hn. La clave de un filtro adaptativo se basa en un algoritmo que define cmo se ha de aplicar la correccin hn. Es evidente que estas correcciones deben reducir el error cuadrtico medio. De hecho, independientemente del algoritmo utilizado, se ha de cumplir:
En un escenario estacionario, el filtro debe producir una secuencia de correcciones hn de modo que hn converja a la solucin ptima de Wiener
lim h n = R 1 P
n
ec. 6.9
31
CONCEPTOS INTRODUCCTORIOS
No ha de ser imprescindible conocer las estadsticas rx(k) y rdx(k) para calcular hn. La estimacin de estos estadsticos se tiene que realizar de manera implcita en el filtro adaptativo. o Para seales no estacionarias, el filtro debe ser capaz de adaptarse a los cambios estadsticos y alcanzar la solucin al evolucionar en el tiempo.
o
d(n) X(n) +
hn(z)
hx
Y(n) -
+
e(n)
Algoritmo adaptativo
Figura 6.1
El algoritmo adaptativo debe disponer del error e(n) para actualizar los coeficientes, ya que e(n) permite definir las prestaciones del filtro y determinar la forma en que han de modificarse dichos coeficientes. La eficiencia de un filtro adaptativo depende de una serie de factores, como el tipo de filtro (IIR o FIR), la estructura del mismo (forma directa, paralela, ...), y la forma en que se define la medida de prestaciones (error cuadrtico medio, mnimo error cuadrtico, ...). Este estudio se va a centrar en el filtro FIR por varias razones:
El error cuadrtico medio para un filtro transversal es una funcin cuadrtica de los pesos del filtro. La superficie de error es un paraboloide con slo un mnimo, y por ello, la bsqueda del error cuadrtico medio mnimo es relativamente sencilla. Asegurando que los coeficientes del filtro estn acotados, se puede controlar fcilmente la estabilidad del filtro.
32
CONCEPTOS INTRODUCCTORIOS
Existen algoritmos para la actualizacin de los coeficientes simples y eficientes. Las prestaciones de estos algoritmos son perfectamente conocidas en trminos de convergencia y estabilidad. El filtro adaptativo FIR funciona lo suficientemente bien para satisfacer el criterio de diseo. La estabilidad a variaciones bruscas de la seal de entrada o de la sala es buena ya que el error vuelve a converger rpidamente. medida de las
Complejidad (computacional): definida como el nmero de operaciones que han de realizarse en cada instante para implementar el algoritmo adaptativo; generalmente es un importante factor para determinar si la implementacin en tiempo real resulta viable. Velocidad de convergencia: la tasa a la que el filtro adaptativo converge a la solucin de Wiener. Desafortunadamente, la velocidad de convergencia es inversamente proporcional a la complejidad. Desajuste: mide la diferencia entre la solucin de Wiener y la obtenida con el algoritmo adaptativo. Generalmente, el desajuste es inversamente proporcional a la velocidad de convergencia y a la complejidad.
El mtodo de mxima pendiente es un algoritmo que modifica los coeficientes en la direccin del gradiente del error. Este algoritmo exige el conocimiento de la estadstica, no requiere inversin de matrices (ventaja respecto al mtodo de Wiener), es sensible a la dispersin de autovalores y permite incorporar fcilmente cambios en la estadstica. Pero en este proyecto se ver el algoritmo LMS, mucho ms fcil de implementar que el anterior y, aunque realiza una estimacin del gradiente muy exagerada (se estima de forma instantnea en una sola iteracin), resulta un mtodo muy robusto. Tambin se ver el LMS normalizado, que independiza la convergencia del filtro de la potencia de la seal de entrada. Otros algoritmos que son susceptibles de estudio debido al carcter del proyecto son: el LMS con factor de prdidas (leaky), importante en casos de matrices mal
Lorenzo Meler Ferraz
33
CONCEPTOS INTRODUCCTORIOS
condicionadas, o los algoritmos signados, que suponen un gran ahorro computacional y, por ello, son ampliamente utilizados en aplicaciones de tiempo real, importante para el desarrollo final del estudio presente. Sin embargo, estos dos ltimos, no sern estudiados en este proyecto, centrndolo ms en el LMS y en el NLMS, para ms tarde pasar a su implementacin en el dominio de la frecuencia.
34
2.4.1.- INTRODUCCIN 2.4.2.- DIAGRAMA DE BLOQUES 2.4.3.- RESULTADOS OBTENIDOS (mejores valores de ) 2.4.4.- COMPARACIN DE RESULTADOS BLMS vs. BNLMS (DIFERENCIAS, VENTAJAS E INCONVENIENTES) 2.4.5.- CDIGO DEL PROGRAMA
35
su de de
Un proceso de filtrado, que implica el clculo de la salida generada por un filtro transversal, y la generacin de una estimacin del error comparando esta salida con la respuesta deseada. Un proceso adaptativo, que realiza el ajuste automtico de los coeficientes del filtro de acuerdo con la estimacin del error.
Si fuera posible obtener medidas exactas del vector gradiente (n) en cada iteracin n, y dispusiramos del parmetro adecuadamente elegido, el vector de pesos del filtro convergera a la solucin ptima de Wiener. Pero en la realidad no se dispone de estas medidas exactas del vector gradiente, ya que no se conoce la matriz de autocorrelacin de la seal de entrada al filtro ni el vector de correlacin cruzada entre esta seal de entrada al filtro y la respuesta deseada. Por tanto, el vector gradiente ha de ser estimado a partir de los datos. La manera ms sencilla de estimar el vector gradiente consiste en sustituir en la ecuacin 1.1.1
(n) = -2 p + 2 R h(n)
ec. 2.1.1.1
R y p por estimaciones instantneas a partir de los valores de seal de entrada al filtro y por la respuesta deseada como se ve en la ecuacin 1.1.2.
36
Ec. 2.1.1.2
ec. 2.1.1.3
Esta estimacin puede verse como el resultado de aplicar el operador gradiente al error instantneo |e(n)|2. Si se sustituye la estimacin del vector gradiente en la ecuacin de actualizacin de los pesos utilizada en el algoritmo Steepest-Descent { h(n+1) = h(n) - (1/2) (-(n)) } se obtiene la relacin recursiva siguiente:
x(n) e*(n)
ec. 2.1.1.7
En cada iteracin, la actualizacin de un peso requiere dos multiplicaciones reales y una suma. Por tanto, para un filtro de N coeficientes, se realizan 2N+1 multiplicaciones reales y 2N sumas reales por iteracin. Se observa que la estimacin del error, definida por las dos primeras ecuaciones, depende del vector de pesos actual h(n), y el trmino x(n)e*(n) representa la correccin aplicada al vector de pesos h(n). El algoritmo iterativo ha de comenzar con un valor inicial h(0). Tambin notamos que en cada iteracin se debe conocer el valor de x(n), d(n) y h(n).
37
Cuando este algoritmo de gradiente estocstico opera con seales estocsticas, las direcciones del gradiente son aleatorias y generalmente no coinciden con la direccin sealada por el Steepest-Descent. Pero, al ser no sesgado en media, la correccin aplicada al vector de pesos sigue, en media, la direccin del Steepest-Descent.
= E 2 ] + 2E[x(n)x H(n).h(n)] = + E (n) x ( n ) d ( n ) 2 x (n) x H(n) h (n) E[x (n) d (n) = 2 = 2p + 2 Rh (n) = (n) ec. 2.1.1.8
ANLISIS DE CONVERGENCIA:
Una de las prestaciones a analizar en todo algoritmo es la velocidad de convergencia. La convergencia, al igual que en el steepest descent, viene determinada por los autovalores de la matriz de autocorrelacin R y su dispersin. As, el valor de que garantiza convergencia en media es:
0< <
2
max
ec. 2.1.1.16
max k = tr ( R)
k =0
N 1
ec. 2.1.1.17
Con el fin de asegurar la convergencia en varianza, el parmetro debe elegirse de forma ms restrictiva:
0< <
2 3 max
ec. 2.1.1.18
Cuando el vector de pesos comienza a converger en media, los coeficientes empiezan a fluctuar en torno a sus valores ptimos. Estas fluctuaciones son debidas a que el vector gradiente utilizado para realizar las correcciones al vector de pesos es ruidoso. En consecuencia, la varianza del error no tiende a cero y el error cuadrtico medio es mayor que el error cuadrtico medio mnimo en una cantidad denominada exceso de error cuadrtico medio. Para determinar este exceso de error, se puede demostrar que:
38
exc() = min
k k k = 0 2 N 1 k 1 k k = 0 2
N 1
ec. 2.1.1.19
39
*
DELAY
viejo
he
x x
y e
e
+
*
h
Figura 2.1.2.1
*
X
Este smbolo nos indica una convolucin lineal. Multiplicacin. En los dos casos que hay multiplicacin se hace un escalar por un vector.
40
Las flechas indicadas en negrita muestran que por ah va un vector (del tamao del filtro), y las flechas o lneas ms finas indican que nicamente circula un escalar.
41
se
representan
en
las
INICIALIZACIN he=[00] %anchura del vector N constante de adaptacin. func seal de entrada al sistema x(m)=func(m) los N primeros valores de la seal muestreada se introducen en el vector de entrada inicial. PARA CALCULAR UN VALOR DE LA SEAL DE SALIDA - Toma una nueva muestra xn(m+1)= xn(m) xn(1)= func(m+n) - Calcula la seal deseada dn = yn(m)*hn(m) - Calcula la seal estimada yn = xn(m)*hen(m) - Clculo del error en = dn - yn - LMS hen+1 = hen(m)+exn(m)
Figura 2.1.2.2
Donde el significado de cada elemento es: - func: la seal que va llegando (a travs del altavoz). - x: se muestrea la seal func para utilizarla en el algoritmo. - h: es el vector que representa el filtro real, es decir sistema en planta.
42
- d: seal que se desea obtener, calculada a partir de la seal de entrada (x) y del filtro real (h), haciendo la convolucin entre stas. - e: se denomina con e minscula al error que vamos cometiendo obtenido de restar la seal deseada con la seal estimada (y). - y: es la seal estimada, la que se tiene que hacer que se parezca a la seal deseada. - : factor de convergencia. - he: filtro estimado. Al igual que ye se tiene que ir pareciendo a y, el filtro estimado se tiene que ir acercando a los valores del filtro real, porque una vez que lo obtengamos la seal estimada pasar a ser igual que la seal deseada. - m: es la posicin del coeficiente en los diferentes vectores. Cada instante de tiempo n (en nuestro caso 1/8000 seg.), muestrearemos la seal func, introduciendo su valor en la primera posicin del vector x (previamente habremos desplazados todos los valores de este vector hacia la derecha, es decir desechando el ms antiguo).
Nota: Los coeficientes que conforman el filtro real h, se consigui recogiendo el resultado de introducir estimando la funcin impulso en la furgoneta del laboratorio CAR de la EUPT.
43
44
En las grficas aparece la amplitud de la seal de error junto con el nivel de cancelacin obtenido al final del clculo. La ecuacin que se utilizar para calcular este nivel de cancelacin es la 2.1.3.1. error (e) error(dB) = 10log10 seal deseada (d) 300.
ec. 2.1.3.1
Las representaciones grficas del apartado 3 se han realizado de acuerdo al valor optimo del factor de convergencia para cada una de las seales, exceptuando la seal Combinacin de tonos 2 (50, 100, 150 Hz). (=0.0001), donde se ha utilizado un valor inferior al mximo que no diverge debido a que el nivel de cancelacin alcanzado es mucho mejor. Todos los tonos, as como la msica y la voz estn muestreados a 8000 muestras por segundo. Este dato ha sido el fundamental para poner los resultados en funcin del tiempo de la seal. Se han utilizado 16.000 muestras, con lo cual se han representado 2 segundos, y aunque slo se muestra el tiempo necesario para ver las grficas, la potencia del error est calculada para los valores finales en dos segundos.
45
CANCELACION DE ECO
7 6 5 e rro r 4 3 2 1 0 0.1 0.2 0.3 0.4 0.5 0.6 tiempo (seg.) 0.7 0.8 0.9
121,2696 dB
Figura 2.1.3.1
0.02
0.005 122,7569 dB
Figura 2.1.3.2
46
118,0803 dB
0.4 0.3 0.2 0.1 e rro r 118,2809 dB 0 -0.1 -0.2 -0.3 -0.4 0 1 2 3 4 5 6 tiempo (seg.) 7 8 9 10 x 10
-3
Figura 2.1.3.4
47
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). (=0.0001)
CANCELACIN DEL ECO 0.6
0.4
-0.2
-0.4
-0.6 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 tiempo (seg.)
Figura 2.1.3.5 Combinacin de tonos 2 (50, 100, 150 Hz). (=0.0001) En este caso se ha probado con =0.001 y el resultado no diverge, pero es mucho peor que el que obtenemos para este valor del factor de convergencia.
CANCELACIN DEL ECO
0.15
0.1
-0.05
-0.1
-0.15 0.01 0.02 0.03 0.04 0.05 tiempo (seg.) 0.06 0.07 0.08 0.09
Figura 2.1.3.6
48
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Combinacin de tonos 3 (1000, 2000, 3000 Hz). (=0.001)
CANCELACIN DE ECO
0.5
119.9592 dB
error 0
-0.5
-1
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
tiempo (seg.)
Msica. (=0.01)
-0.05
0.2
0.4
0.6
0.8
1.2
1.4
1.6
1.8
0.2
0.4
0.6
0.8
1 tiempo
1.2
1.4
1.6
1.8
Figura 2.1.3.8
49
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.5
2.5
Figura 2.1.3.10 CONCLUSIONES: Los niveles que la ITU recomienda como aceptables para una cancelacin de eco estn a partir de 40dB., niveles que como se ver, muy pocas veces se alcanzan, pero la explicacin radica en que las seales utilizadas estn normalizadas, por lo que la potencia del error cancelado se har ms difcil. Estos niveles sern utilizados tanto para los algoritmo LMS en el tiempo como
Lorenzo Meler Ferraz
50
en la frecuencia. En estas representaciones, se puede ver que las seales de un tono y combinacin de tonos, vienen dadas por la seal del error, utilizando la ecuacin 1.3.1 para calcular la potencia final a la que llega la potencia del error, donde se saca una relacin entre el error cometido y la seal de entrada. En estas seales (los tonos nombrados en el prrafo anterior), cuando se le aplica el primer algoritmo se ve que el tiempo de cancelacin depende claramente de la frecuencia del tono, siendo mayor este tiempo cuanto menor es la frecuencia. En la combinacin de tonos se puede apreciar claramente esta observacin, ya que la primera combinacin, compuesta por tonos de diferentes frecuencias, algunas muy juntas y otras muy separadas; tiene un tiempo de cancelacin intermedio comparado con las otras combinaciones, donde la que est compuesta por tonos de baja frecuencia el tiempo es mucho ms bajo que el que tarda en el de la tercera combinacin. Con respecto a las seales como voz y msica, de las cuales no se representan las seales de error, se puede observar como la seal estimada, al cabo de menos de un segundo, la similitud, en lo que respecta a la evolucin en el tiempo de la amplitud, es bastante grande, teniendo en cuenta que los valores de amplitud de la seal estimada son aproximadamente la mitad del valor de la deseada. Si se ha escogido el mtodo de comparacin en estas seales, es debido a que las representaciones de la cancelacin del error no aportan nada de informacin. Esta falta de informacin proviene de la no existencia de una cancelacin real del error y s una simple similitud entre las dos seales. Se puede concluir que para estas dos seales (representadas en las figuras 2.1.3.8 y 2.1.3.9) con este algoritmo no se consiguen los objetivos planteados. Lo que respecta al ruido, ltima seal a analizar, se ha representado la figura en la que aparece el error (resta de la seal deseada menos la estimada), es decir el error lineal. Se puede ver como la cancelacin del eco es de 9.0304dB.
51
DATOS:
TONOS 1000Hz. 0.003
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 0.3
150Hz. 0.04
3000Hz. 0.003
121.2696
122.7569
118.0803
118.2809
COMB. 1 0.03
COMB. 3 0.03
118.6414
119.9592
VOZ ---
RUIDO ---
---
---
---
Tabla 2.1.3.1
52
53
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Tono 50Hz. Error filtro 512 coeficientes (=0.005)
CANCELACION DE ECO 0.025
CANCELACION DE ECO
7 6 5 e rro r 4 3
0.02
0.015 e rro r
0.01
0.005
32,9802 dB
2 1
0
121,2696 dB
-0.005
0
0.2
0.4
0.6
0.8
1.4
1.6
1.8 x 10
-3
0.1
0.2
0.3
0.7
0.8
0.9
CANCELACION DE ECO
0.02
0.04
0.06
0.12
0.14
0.16
0.18
Figura 2.1.4.1 Tono 150 Hz. Error filtro 512 coeficientes (=0.005)
10 9 8 7 6 e rro r 5 4 3 2 1 0 0 0.1 0.2 0.3 0.4 0.5 0.6 tiempo (seg.) 0.7 0.8 0.9 121,6057 dB 0 0.02 0.04 0.06 0.08 tiemo (seg.) 0.1 0.12 0.14 0.005 122,7569 dB 0.015 error 0.01 0.02 x 10
-3
CANCELACION DE ECO
CANCELACION DE ECO
10
e rro r
2 121.6061 dB
0.02
0.04
0.06
0.14
0.16
0.18
Figura 2.1.4.2
54
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Tono 1000 Hz. filtro 512 coeficientes (=0.005)
CANCELACION DE ECO 0.16 0.2 0.18 0.12 0.16 0.1 0.14 0.08 e rro r e rro r 0.12 0.1 0.08 0.06 0.04 0.02 0 0 0.002 0.004 0.006 0.008 0.01 0.012 tiempo (seg.) 0.014 0.016 0.018 0.02 117,8995 dB -0.04 1 2 3 4 5 6 tiempo (seg.) 7 8 9 x 10 10
-3
0.15
e rro r
0.1
0.3
0.1 59.2296 dB
-0.2 0.002 0.004 0.006 0.008 0.01 0.012 tiempo (seg.) 0.014 0.016 0.018 0.02
CANCELACION DE ECO
Figura 2.1.4.4
55
Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). filtro 512 coeficientes (=0.001)
CANCELACION DE ECO 0.6 0.4 0.3 0.2 0.2 0.1 e rro r 0 -0.1 -0.2 -0.3 -0.4 -0.4 -0.5 0 0.02 0.04 0.06 0.08 0.1 0.12 tiempo (seg.) 0.14 0.16 0.18 -0.6 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 tiempo (seg.) -0.2 197,5190 dB 118,6414 dB error 0 0.4
0.2 117.5519 dB 0
e rro r
-0.2
-0.4
-0.6 0 0.01 0.02 0.03 0.04 tiempo (seg.) 0.05 0.06 0.07
Figura 2.1.4.5 Combinacin de tonos 2 (50, 100, 150 Hz). Error filtro 512 coeficientes (=0.001)
CANCELACION DE ECO 0.1 0.08 0.06 0.1 0.04 0.02 114.9054 dB e rro r 0 -0.02 -0.04 -0.06 -0.08 -0.15 -0.1 0.02 0.04 0.06 0.08 0.1 0.12 tiempo (seg.) 0.14 0.16 0.18 0.01 0.02 0.03 0.04 0.05 tiempo (seg.) 0.06 0.07 0.08 0.09 -0.05 error 0 0.05 122,0456 dB 0.15
-0.1
e rro r
0.02
0.04
0.1
0.12
0.14
Figura 2.1.4.6
Lorenzo Meler Ferraz
56
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Combinacin de tonos 3 (1000, 2000, 3000 Hz). Error filtro 512 coeficientes (=0.001)
CANCELACION DE ECO 1 1
0.5
0.5 118.8299 dB
e rro r
error
119.9592 dB
0
-0.5
-0.5
-1 -1 0 5 tiempo (seg.) 10 15 x 10
-3
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
tiempo (seg.)
0.5 e rro r
112.0369 dB 0
-0.5
0.02
0.04
0.1
0.12
0.14
SEAL ESTIMADA
0.01 0
0.02 0.01 0
-0.01
-0.01
-0.02
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
-0.02
0.2
0.4
0.6
0.8
1 tiempo
1.2
1.4
1.6
1.8
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
Figura 2.1.4.8
57
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.2 0.1 0 -0.1 -0.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
SEAL ESTIMADA
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.7
0.8
0.9
0.5
2.5
9.7385 dB
0.1
0.2
0.3
0.7
0.8
0.9
Figura 2.1.4.10
58
ALGORITMOS LMS EN EL DOMINIO TEMPORAL CONCLUSINES: Despus de observar todas estas figuras, comparndolas unas con otras, se puede aventurar a dar algunas conclusiones sobre la utilizacin de un filtro con mas o menos coeficientes.
Habr que diferenciar entre las seales peridicas (los tonos y combinacin de tonos) y las que no lo son (el ruido blanco, la voz y la msica) ya que el comportamiento es totalmente diferente. En las seales peridicas, la gran diferencia entre usar un filtro y otro es el tiempo que tarda en alcanzar su valor mximo de cancelacin, siendo este tiempo mayor cuanto menor nmero de coeficientes posee el filtro. Excepto en el caso de una tono de baja frecuencia, donde el tiempo de cancelacin es menor para el uso de un filtro de 216 coeficientes que para el de 512. En el resto de seales no se puede apreciar una clara diferencia, a no ser que lo se sepa a priori, entre el uso de un filtro u otro, ya que la cancelacin no es excesivamente buena con ninguno. La conclusin en este caso es que para este tipo de seales sera mejor usar algoritmos diferentes, como los que se van a ver en captulos posteriores. La ltima conclusin a la que llegamos con la simple observacin es que lo nico en lo que se gana con filtros con ms coeficientes es en una mayor rapidez en la cancelacin del error y nicamente en seales peridicas; mientras que el nivel de cancelacin es similar se use el filtro que se use; esto se puede comprobar dando ms tiempo de funcionamiento, es decir computando ms muestras de la seal de entrada. Para las seales que hasta ahora ms haba costado cancelar, me refiero a la msica y a la voz, se ve una pequea mejora cuantos ms coeficientes tiene nuestro filtro. Si se observa la seal de ruido, parecer a primera vista que la mejor cancelacin se hace con el filtro de 256, y es correcto, sencillamente porque debido a que se usa un filtro con tan pocos coeficientes, permite utilizar un factor de convergencia mas alto, consiguiendo de este modo una reduccin del error mucho ms rpida que con el resto de filtros. Para el filtro de 512 coeficientes el valor de esta constante es la misma que en el caso del filtro con menos coeficientes y se puede observar como la potencia del error toma valores de 3dB. por encima del anterior. Si el tiempo de anlisis hubiera sido bastante
59
mayor, los resultados obtenidos para el de 512 seran mejores, y los de 1024 hubieran cancelado ms an debido a la tan pequea. Con los filtros de menos coeficientes se obtiene una peor estimacin de la respuesta real. Se pueden usar valores del factor de convergencia mayores que con filtros con un mayor nmero de coeficientes. Aunque el algoritmo tarde un poco ms en convergir con los filtros grandes, a veces no es necesario un tiempo tan corto, y ms una precisin ms exacta.
DATOS:
TONOS 150 Hz. 1000 Hz. 0.04 0.003 0.2 0.16 122.7569 121.6057 0.005 0.005 118.0803 117.8995
TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.)
50 Hz. 0.3 0.9 0.06 121.2696 32.9802 27.6755 COMB. 1 0.03 0.02 0.01 118.6414 197.5190 117.5519 VOZ -------------
121.6061 117.9178 COMBINACIN DE TONOS COMB. 2 0.04 0.16 0.08 122.0456 114.9054
--112.0369 SEALES NO PERIDICAS MSICA RUIDO --------------0.9 0.5 9.0304 6.7044 9.7385
60
2.1.5.- clculo del nmero de multiplicaciones y sumas en funcin del tamao del filtro.
Si se quiere calcular el nmero de multiplicaciones y sumas que se deben hacer segn el tamao del filtro, es necesario saber, lo primero, cuantas convoluciones se van a realizar y que conlleva cada convolucin. Una convolucin consta de: - Tantos productos como coeficientes tiene el filtro. - Tantas sumas como coeficientes tiene el filtro menos una. Para saber todas estas operaciones nos fijaremos en las instrucciones que aparecen en el apartado 1 de este mismo tema, donde aparecen todas las operaciones que nuestro algoritmo, y en definitiva nuestro programa, realiza. La primera operacin es una convolucin, entre la seal de entrada x y el filtro real h. Por lo tanto por ahora habr N productos y N-1 sumas (siendo N el tamao del filtro h). Hay que tener en cuenta que estas operaciones, en la implementacin real, nos aparecern, ya que se tendr acceso a esta seal directamente y se la podr muestrear en vez de calcularla. Si se sigue mirando el cuadro de instrucciones se ve que la segunda operacin es otra convolucin, entre la misma seal de entrada x y el filtro estimado he, consiguiendo con ello la seal estimada. El filtro estimado se ha supuesto de la misma anchura (con el mismo nmero de coeficientes) que el filtro real, as pues, se vuele a tener el mismo nmero de productos y sumas que en la primera operacin. N productos y N-1 sumas. La tercera operacin es una simple suma (o resta), entre la seal deseada (y), calculada en la primera operacin y la seal estimada (ye), con lo que da un error. Esta suma es de dos nmeros escalares, as que slo se contar como una. En el cuadro de instrucciones se tiene luego como, cuarta operacin, es la adaptacin del filtro estimado (LMS), donde hay dos multiplicaciones y una suma. Pero esto, se puede reducir un poco, ya que una de las multiplicaciones es de dos constantes escalares. De esta forma, haciendo la multiplicacin fuera del LMS, dentro de este bucle slo quedar una multiplicacin y una suma (es decir, igual que en las operaciones anteriores, una multiplicacin y una suma por cada coeficiente que tenga el filtro).
Lorenzo Meler Ferraz
61
La quinta operacin ser la multiplicacin que se ha sacado antes del bucle anterior (en el cdigo de MATLAB se puede ver que lo se ha sacado llamando a la multiplicacin e*=fi). As pues, a continuacin se pone un ejemplo comparando un filtro de 1024 coeficientes y otro de 512, y se ver la diferencia del nmero de operaciones entre una y otra.
Filtro de anchura 1024: Sumas
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. total
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. total
Productos
Tabal 2.1.5.2
La diferencia de operaciones es de casi un tercio ms para el filtro de 1024 coeficientes, tanto de sumas como de productos. Por lo tanto el tiempo de resolucin de cada muestra ser bastante menor en el filtro de anchura ms pequeo (como era de esperar). La desventaja radica en que la informacin del sistema es menor, y por tanto las soluciones no sern tan reales como en el caso del filtro mayor.
1.este valor es invariable, no depende del filtro estimado que se use, ya que depende del filtro real que en un principio es siempre el mismo
62
63
ALGORITMOS LMS EN EL DOMINIO TEMPORAL ylabel('error'); subplot(2,1,2),plot(t,e_db,'r'); title('ERROR CALCULADO EN dBs'); xlabel('tiempo'); ylabel('dBs');
func_lmstiempo.m
function[ysalida,et,ye]=proyecto_20(func) k=16000; for m=1:1024%inicializamos el valor de x x(1025-m)=func(m); end he=zeros(1,1024); load camino.mat load seales.mat mu=input('introduce el valor de mu (aconsejable 0.001): '); vector_h=input('elige la "h" del sistema (1,2 o 3): '); if vector_h==1 hr=load('h1_a.txt'); hr=hr';%trasponemos la matriz porque el archivo .txt es una columna elseif vector_h==2 hr=load('h2_a.txt'); hr=hr';%trasponemos la matriz porque el archivo .txt es una columna elseif vector_h==3 hr=h_real; else disp('no existe este archivo'); end for ii=1:k%para el tiempo %movemos el vector x hacia la derecha for i=1:1023 z(i+1)=x(i); end z(1)=func(ii+1024); x=z; %calculamos la y, haciendo la convolucion y=0; for i=1:1024
64
ALGORITMOS LMS EN EL DOMINIO TEMPORAL y1=hr(i)*x(i); y=y1+y; end ysalida(ii)=y; e1=0; for i=1:1024 e2=x(i)*he(i); e1=e2+e1; end ye(ii)=e1; %ahora si que calculamos el error e=y-e1; fi=mu*e; for j=1:1024 he(j)=he(j)+(x(j)*fi); %actualizamos la h estimada, con este 1025, lo que conseguimos es %darle la vuelta al vector x, aqui es donde no se si es necesario %darle la vuelta. %he probado tambin a darle la vuelta a he y no a x y el resultado es el mismo. end et(ii)=e; end
65
66
NLMS =
x xn +
H n
ec. 2.2.1.1
donde es normalmente 1/2 y es un nmero muy pequeo, introducido en la ecuacin para prevenir una posible divisin por cero si x llega a ser un nmero muy pequeo o cero.
67
*
ABS
DELAY
viejo
he
^2
x
y
e
+
*
h
Figura 2.2.2.1
68
INICIALIZACIN he=[00] %anchura del vector N func seal de entrada al sistema x(m)=func(m) los N primeros valores de la seal muestreada se introducen en x. PARA CALCULAR UN VALOR DE LA SEAL DE SALIDA - Toma una nueva muestra xn(m+1)= xn(m) xn(1)= func(m+n) - Calcula la seal deseada dn = yn(m)*hn(m) - Calcula la seal estimada yn = xn(m)*hen(m) - Clculo del error en = dn - yn - Clculo del factor de amortiguamiento segn la potencia de la seal n=/(Pn+) Pn= - LMS hen+1 = hen(m)+exn(m)
figura 2.2.2.2
N
x(i)
i =1
69
= Xi
i =1
=P
Ec. 2.2.3.1
As pues, el valor resultante, ser un nmero escalar, al que le denominar con la letra P (potencia de la seal de entrada). En este caso, no slo necesitaremos una constante, sino que se optar por dos, a las que llamaremos y . Con todo esto ya se puede definir con la siguiente ecuacin con la ecuacin 2.2.3.2:
X
i =1
ec. 2.2.3.2
2
donde 0<<1 y ser un valor muy pequeo, que casi no intervenga en la ecuacin, utilizado exclusivamente para cuando algn instante la potencia de la seal es cero y entonces no se produzca un error de divisin por cero. Esta ecuacin proporciona la ventaja de que a las seales que tienen mucha potencia les hace descender su error lentamente y a las que tienen poco les produce el efecto contrario. Esto beneficia a la convergencia del error, ya que a la seal dbil se le ayuda y a la fuerte se le retiene, consiguiendo as un amortiguamiento equitativo
70
71
El anlisis se realizar para una seal de 1 seg. es decir 8000 muestras de la seal de entrada.
Tono 50 Hz. (=0.1)
5 4.5 4 3.5 3 e rro r 2.5 2 1.5 1 0.5 0 0.1 0.2 0.3 0.4 tiempo (seg.) 0.5 0.6 64.4514 dB x 10
-4
CANCELACION DE ECO
Figura 2.2.4.1
72
CANCELACION DE ECO
0.2 0.18 0.16 0.14 e rro r 0.12 0.1 0.08 0.06 0.04 0.02 0 1 2 3 4 5 6 tiempo (seg.) 7 8 9 10 x 10
-3
117.6279 dB
Figura 2.2.4.3
73
118.8284 dB
Figura 2.2.4.4 Combinacin de tonos 1 (50, 150, 1000 y 3000 Hz). (=0.9)
0.4
-0.4
-0.6
Figura 2.2.4.5
74
-0.05 -0.1 -0.15 -0.2 0 0.01 0.02 0.03 0.04 0.05 0.06 tiempo (seg.) 0.07 0.08 0.09 0.1
CANCELACION DE ECO
0.5 118.5567 dB 0
e rro r
-0.5
-1 0 1 2 3 4 5 6 tiempo (seg.) 7 8 9 10 x 10
-3
Figura 2.2.4.7
75
Msica. (=1)
CANCELACION DE ECO 0.025 0.02 0.015 0.01 0.005 0 -0.005 -0.01 -0.015 -0.02 8.7524 dB
error
0.1
0.2
0.3
0.7
0.8
0.9
0.2
0.1
4.8445 dB
0.1
0.2
0.3
0.7
0.8
0.9
Figura 2.2.4.8
76
1.5
Figura 2.2.4.10 CONCLUSIN: Observando el apartado de las seales peridicas, se ve como la cancelacin de seales con mayor frecuencia es ms rpida que las que tienen una frecuencia menor.
Segn las frecuencias de estas seales, tambin se ve necesario un cambio en el valor de , siendo ste un valor mayor cuanto mas alta es esta frecuencia (esto se aplica tanto a tonos sueltos como a su combinacin). Las seales que no poseen ningn tipo de periodo1, tambin necesitan un valor de esta constante an mayor que las seales anteriormente mencionadas. En este caso se ha decidido representar el error lineal para estas dos seales ya que ahora si que se puede apreciar una cierta cancelacin como muestra la figura.
1.- esto no es totalmente cierto ya que todas las seales se pueden descomponer en suma de seales peridicas
77
Esto se debe, claro est, a la normalizacin segn la potencia de la seal. Quizs la reduccin no sea tan grande como para otras seales, pero si que se ha demostrado que hay cierta cancelacin. Esta conclusin se ve ms clara en la msica que en la voz si se observa el valor en dB. de la cancelacin. En el anlisis de la seal de ruido se ve perfectamente como el error va disminuyendo, tomando valores de incluso diez veces menos al cabo de un segundo y medio, y casi 10dB.
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 0.6 150Hz. 0.045 TONOS 1000Hz. 0.002 3000Hz. 0.002
64.4514
123.3941
117.6279
118.8284
COMB. 1 0.06
COMB. 3 0.003
115.9506
118.5567
VOZ ---
RUIDO ---
Tabla 2.2.4.1
78
LMS
x 10
-4
CANCELACION DE ECO
CANCELACION DE ECO
121,2696 dB
Figura 2.2.5.1
79
LMS
CANCELACIN DEL ECO 0.025
CANCELACION DE ECO
Figura 2.2.5.2
LMS
CANCELACION DE ECO 0.14 0.12 0.1
117.6279 dB
Figura 2.2.5.3
80
LMS
CANCELACION DE ECO 0.4 0.3 0.2 0.1
e rro r
e rro r
118.8284 dB
118,2809 dB 0
Figura 2.2.5.4
LMS
CANCELACIN DEL ECO
-0.6
-0.6 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 tiempo (seg.)
Figura 2.2.5.5
81
LMS
CANCELACIN DEL ECO
-0.05 -0.1
-0.05
-0.1 -0.15 -0.2 0 0.01 0.02 0.03 0.04 0.05 0.06 tiempo (seg.) 0.07 0.08 0.09 0.1 -0.15 0.01 0.02 0.03 0.04 0.05 tiempo (seg.) 0.06 0.07 0.08 0.09
Figura 2.2.5.6
NLMS
CANCELACION DE ECO
LMS
CANCELACIN DE ECO
0.5
e rro r
119.9592 dB
0
-0.5
-0.5
-1 -1 0 1 2 3 4 5 6 tiempo (seg.) 7 8 9 10 x 10
-3
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
tiempo (seg.)
Figura 2.2.5.7
82
NLMS
SEAL DESEADA 0.06 0.04 0.02 0 0 -0.02 -0.04 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 -0.05 0 0.2 0.4 0.6 0.8 0.05
LMS
SEAL DESEADA
1.2
1.4
1.6
1.8
SEAL ESTIMADA 0.04 0.02 0 -0.02 -0.04 0.02 0.01 0 -0.01 -0.02
SEAL ESTIMADA
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.2
0.4
0.6
0.8
1 tiempo
1.2
1.4
1.6
1.8
Figura 2.2.5.8
Voz.
NLMS
SEAL DESEADA 0.4 0.2 0 -0.2 -0.4 0.4 0.2 0 -0.2 -0.4
LMS
SEAL DESEADA
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
SEAL ESTIMADA 0.4 0.2 0 -0.2 -0.4 0.2 0.1 0 -0.1 -0.2
SEAL ESTIMADA
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5 tiempo
0.6
0.7
0.8
0.9
Figura 2.2.5.9
83
LMS
0.8 0.7 0.6 0.5 0.4 0.3
9.5796 dB 9.0304 dB
0.2 0.1
0.5
1.5
Figura 2.2.5.10
CONCLUSIONES: Las conclusiones son claras: -SEALES PERIDICAS. Se puede observar una pequea diferencia entre las seales de muy baja frecuencia (un nico tono), en las que la cancelacin del eco se hace mejor con el LMS normal, que con el NLMS.
A medida que se va aumentando esta frecuencia, las diferencias se van haciendo mnimas, consiguiendo un tiempo de cancelacin y nivel de la potencia del error muy similar. Cuando la seal es una combinacin de tonos, con una diferencia bastante grande entre los mismos, la solucin ms ptima, parece ser el NLMS, sin embargo, cuando los tonos no estn muy separados, el algoritmo que mejor tiempo de cancelacin final tiene es el LMS. Para todas estas seales peridicas, el nivel de cancelacin final es el mismo, se use el algoritmo que se use. -SEALES NO PERIDICAS. Cuando se analizan estas seales por separado, en el primer algoritmo (LMS), se ha utilizado la representacin de colocar la seal deseada junto con la estimada y se compara una con otra. En el siguiente algoritmo (NLMS), se quiso exponer la figura que mostrara el error lineal para demostrar que se haba conseguido una mejora. Debido a esto, ahora resulta complicado comparar entre las dos algo
Lorenzo Meler Ferraz
84
tan obvio como la mejora sufrida gracias a este ltimo algoritmo. Por ello se decidi colocar la representacin de las dos seales (deseada y estimada), como en el primer algoritmo, y a partir de ah hacer una comparacin de las mejoras vistas en estas figuras 2.2.5.8 y 2.2.5.9. El comportamiento, o las diferencias que se tienen, en seales no peridicas, es diferente con respecto a las seales de entrada analizadas en los guiones anteriores. La mejora de la cancelacin es substancial al utilizar este algoritmo. Se observa la primera de estas seales msica; as como con el algoritmo LMS normal no se llega a una cancelacin clara y las seales comparadas tardaban mucho en llegar a parecerse (si se considera similitud lo que ocurre al final del tiempo analizado), ahora el tiempo analizado corresponde a un nico segundo, porque se considera que con este tiempo se puede decir que el parecido es bastante claro, aunque la amplitud de la seal estimada sea un poco inferior a la de la deseada. La voz es quizs la seal ms problemtica surgida a la hora de analizar en el anterior algoritmo, debido a su poca cancelacin. En este caso, la reduccin del error tampoco es el ms deseado, ya que no se llegan a niveles de cancelacin esperados. Pero sin duda se ha conseguido una mejora fundamental. Analizando un nico segundo ya se puede ver claramente la mejora, ya que la amplitud conseguida con el algoritmo actual es bastante parecida a la seal deseada; en cambio, con el LMS normal slo se cosigue alcanzar una amplitud de la mitad de la seal estimada, por lo tanto el error se puede adivinar que tendr una figura bastante parecida a la seal estimada. As, la suma del error y la seal estimada dar como resultado el valor de la seal deseada. Cuando se analiza el ruido blanco, se ve como la mayor diferencia radica en el tiempo de cancelacin. Es la nica seal no peridica que no se observan grandes diferencias en el nivel final de cancelacin y s en el tiempo que tarda en conseguir una seal de error final aceptable. Se ve claramente que se cancela mucho mejor con el NLMS. Con todo esto, se puede concluir que para este tipo de seales, se consigue una cancelacin ms clara del error, un nivel ms bajo en la potencia de ste. En lo que se refiere al tiempo de cancelacin, el tiempo final de reduccin de error se mejora tambin con este ltimo algoritmo.
85
El nmero de operaciones utilizado en este algoritmo aumenta con respecto al LMS normal, como se ver en el siguiente captulo. Estas operaciones extras a realizar, cuando se aplica el LMS normalizado, son N multiplicaciones y N-1 sumas, adems de una suma ms y una divisin. El NLMS, por lo general, converge mucho ms rpido que el LMS con un nmero de operaciones extra muy pequeo, por eso el NLMS es ms usado. Se concluye pues, que para las seales con mayor dispersin espectral es mejor utilizar el algoritmo normalizado.
DATOS:
TONOS 150 Hz. 1000 Hz. 0.05 0.05 123.7569 123.3941 0.003 0.002 118.0803 117.6279
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) LMS NLMS LMS NLMS 0.3 0.7 121.2696 64.4514 COMB. 1 LMS NLMS LMS NLMS 0.03 0.02 118.6414 115.9506 VOZ LMS NLMS LMS NLMS ---------
3000 Hz. 0.003 0.002 118.2809 118.8284 COMB. 3 0.03 0.003 119.9592 118.5567 RUIDO ------
COMBINACIN DE TONOS COMB. 2 0.04 0.05 122.0456 122.1603 SEALES NO PERIDICAS MSICA ---------
Tabla 2.2.5.1
86
El comentario (tras el smbolo %), indica una posible forma de calcular alfa sin tener que darle un valor constante, dependiendo de la varianza de la seal de entrada x. De momento esto ltimo no se va a realizar, debido a que la varianza no es una operacin sencilla (suma o multiplicacin) que se puede implementar luego fcilmente en un DSP.
for i=1:1024 p=p+(abs(x(i)))^2; end %alfa=0.95*2/(5*(0.001+var(x))); mu=alfa/(p+sigma);
87
88
tamao con un filtro que posee un tamao menor, se deben ir cogiendo subvectores que posean el tamao de este ltimo (como se muestra en la figura 2.3.1.1 donde los vectores grises estn compuestos por ocho muestras, el mismo nmero de coeficientes que nuestro filtro). As pues, se podra decir que en realidad es como si se tuvieran cuatro vectores diferentes para cada intervalo de tiempo, compuesto cada uno por ocho muestras de la seal de entrada, conformando al final un total de 11 muestras. Una vez aclarado que se est trabajando con varios vectores a la vez (aunque algunos coeficientes de estos coincidan, se vern diferentes para una mayor claridad), al llegar en el algoritmo a la ecuacin del LMS, surge el problema de cmo utilizar el vector de entrada de N+S-1 coeficientes. El procedimiento para solucionar esto es el siguiente: El error (e) obtenido para el primer vector de entrada (que ser un escalar), se multiplica por este vector. Esto dar otro vector de N coeficientes.
muestra ms nueva
muestras antiguas
vector viejo x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 vector nuevo vector muestras viejas muestras nuevas
figura 2.3.1.1
89
Esto se hace para cada uno de los vectores de entrada, en nuestro caso 4, con lo cual se tendrn cuatro vectores de N coeficientes. El siguiente paso consiste en sumar coeficiente a coeficiente de los vectores resultantes y cada uno de ellos multiplicarlos por el factor de convergencia . Despus de todo esto y por ltimo, se dividir cada uno de los coeficientes por cuatro, y ya se habr obtenido el vector que se deseaba. Visto con ecuaciones queda de la siguiente manera: Se necesitan generar S salidas
y F y F -1 M y F S + 1 VIEJA
NUEVA
ec. 2.3.1.1
donde F=kS, siendo k un nmero entero. El clculo de estas salidas se realiza como en la ec. 2.3.1.2 y F S + 1 = xF S + 1* h y F S = xF S * h
donde donde
y F = xF * h
En la ecuacin 2.3.1.3 aparece como calcular el error (que en este caso ser un vector de S coeficientes)
90
ec. 2.3.1.3
Una vez que ya se ha obtenido el vector de error, solo queda actualizar el filtro (h), como se muestra en las ecuaciones 2.3.1.4.
eF x F + h (F 1) = h (F) eF 1 x F 1 + h (F 2) = h (F 1) : :
eF S + 1 xF S + 1 + h (F S + 1) = h (F S + 2)
ec. 2.3.1.4
Pero como muestra la ecuacin 2.3.1.4 se consiguen S vectores del filtro y slo se quiere uno, as que hay que hacer el promedio que se nombraba anteriormente, como se muestra en la ecuacin 2.3.1.5 y as se obtendr un nico vector del filtro, que ser el que se utilice en la siguiente iteracin, ya que se obtiene
h (F + S) a partir de h (F).
h (n + S) = h (n) +
+ eF S + 2 x xF S + 2 + L + eF xF ec. F S +1 F S +1 S 2.3.1.5
Este algoritmo tiene la ventaja de jugar con datos ya pasados, es decir, se dispone de informacin de la seal en tiempos anteriores. El problema est en que mientras se analizan estas S muestras nuevas, se est produciendo otras S que cogeremos en un instante posterior. El hacer una media de muchas muestras antiguas, puede proporcionar una muy buena aproximacin de la seal lo que hace que este algoritmo sea bastante estable. Adems de la ventaja de la estimacin que se ha mencionado, se le debe aadir una ms, proveniente mas que por razones matemticas o estadsticas como hasta ahora, debida a razones tcnicas, y es que, este algoritmo se deber introducir en un DSP, el cual estar insertado en una placa. Esta placa tiene la particularidad de tardar un tiempo relativamente elevado en introducir valores al DSP,
91
que no es proporcional al tamao del vector; aclarando, el tiempo que tarda en introducir un vector largo es mucho menor que el que tarda en introducir muchos vectores cortos que sumados nos dan el mismo tamao que el largo.
92
En este diagrama, en el cual se intenta representar todos los bloques que se hacen necesarios para realizar este algoritmo, se presenta como inicialmente se incluyen S muestras para luego dividirlo en S bloques diferentes, que se irn cogiendo de uno en uno para realizar el resto del diagrama de bloques.
x{1N}
*
he
viejo
sumatorio y media
x x
e
+
*
h
figura 3.2.1
93
INICIALIZACIN S nmero de vectores de entrada he=[00] %anchura del vector N constante muy pequea. func seal de entrada al sistema x(m)=func(m) los S+N-1 primeros valores de la seal muestreada se introducen en el vector de entrada. PARA CALCULAR S VALORER DE LA SEAL DE SALIDA, PARA UN CONJUNTO DE VECTORES DE LA SEAL DE ENTRADA. - Toma S muestras nuevas xn(m+S)= xn(m) xn(i)= func(m+S+i)
i=1 S
- Calcula S seales deseadas y S estimadas dn[F-S+i] = xn(F-S+i)*hn(k) yn[F-S+i] = xn(F-S+i)*hen(k) - Clculo S seales de error en[i] = dn[i] - yn[i] - LMS Fin[m]=1/S( (xn[m,F]en[m,F]))
f =1 S
hen+1[m]= hen(m)+Fin[m]
figura 2.3.2.2
significado de cada trmino: S es el tamao del bloque y por tanto el nmero de vectores que analizaremos para cada iteracin. sigue siendo nuestro factor de convergencia, una constante, al igual que en casos anteriores.
94
he vector o filtro que estimamos, el filtro adaptativo que variaremos para conseguir nuestro objetivo final. func seal completa de entrada, de ella sacaremos los valores o muestras de lo que llamaremos seal de entrada. x vector de la seal de entrada. Este vector poseer un nmero de coeficientes que ser igual al nmero que posee nuestro filtro ms S (nmero de muestras adicionales). N es el nmero de coeficientes de nuestro filtro h y de el filtro estimado he. dn nos referiremos a esta notacin a un vector de la seal deseada que tendr tantos coeficientes como el valor de S. Recordar que en apartados anteriores, esta notacin nos proporcionaba una nica muestra, mientras que aqu nos da un vector. yn al igual que lo comentado para la seal deseada, ocurre con esta seal, la estimada, que si en algoritmos anteriores nos referamos a ella como una sola muestra, en el actual es un vector de S coeficientes, conseguidos por trabajar en una sola iteracin con varias muestras de entrada. en esta letra querr mostrarnos el error (resta entre las dos seales anteriores) y por tanto ser tambin un vector de la misma anchura que las dos seales anteriores, es decir de S. Fin Simplemente es una notacin que se ha incluido para facilitar la comprensin. Es un vector, en este caso, de un nmero de coeficientes igual al filtro utilizado. Lo nico que indica es la media de los S valores de cada elemento m del producto de xe. El multiplicar esto por el factor de convergencia es opcional, pero por supuesto, habr que pensar que si lo se multiplica fuera de este bucle se estar ganando en el nmero de operaciones.
95
tiempo (seg.)
Figura 2.3.3.1
96
tiempo (seg.)
0.2
-0.1
-0.2
Figura 2.3.3.3
97
-0.5
-1
tiempo (seg.)
Figura 2.3.3.4 Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). =0.001
CANCELACIN DE ECO
1.5
-0.5
-1
-1.5 0 0.05 0.1 0.15 0.2 0.25 0.3 tiempo (seg.) 0.35 0.4 0.45
Figura 2.3.3.5
98
ALGORITMOS LMS EN EL DOMINIO TEMPORAL Combinacin de tonos 2 (50, 100, 150 Hz). =0.001
CANCELACIN DEL ECO
0.5
121.5969 dB error 0
-0.5
-0.5
-1
-1.5 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 tiempo (seg.)
Figura 2.3.3.7
99
Msica =0.1
SEAL DESEADA 0.1 0.05 0 -0.05 -0.1
0.5
2.5
0.5
1.5 tiempo
2.5
-0.5
0.5
2.5
Figura 2.3.3.9
100
Ruido =0.005
CANCELACION DE ECO 0.9 0.8 0.7 0.6 0.5 0.4 0.3 10.4725 dB 0.2 0.1 0
error
0.5
2.5
Figura 2.3.3.10 CONCLUSIONES: Para todas estas seales se han analizado tres segundos. En ellos, se puede observar la diferencia de las seales.
Se analizarn primeramente, como siempre, las seales peridicas. La diferencia del resultado obtenido para la primera, un tono de 50Hz. se ve como el error disminuye lentamente, hasta detenerse y llegar a su valor lmite al cabo de muy poco tiempo. A medida que se aumenta la frecuencia el tiempo de convergencia es ms corto. La potencia del error residual aumenta con la frecuencia de la seal analizada. Los resultados obtenidos cuando se adentra en el anlisis de las seales no peridicas, sin incluir el ruido, son muy similares al LMS, aunque estas comparativas se vern en el siguiente apartado, se ve como, por ejemplo para la msica, al cabo de un segundo comienza a parecerse la seal estimada a la deseada y que en la seal de voz, la similitud se hace clara si dejamos a un lado la comparativa de la amplitud, pero es esta amplitud la que hace concluir que existe cancelacin para estas seales, aunque hay que marcar que otra vez se ha visto la obligacin de mostrar la
101
comparativa entre la seal estimada y la deseada, porque la seal del error lineal no aporta informacin; la nica informacin que da es la de que no cancela. El comportamiento del ruido es bastante conseguimos una cancelacin relativamente buena 10dB.) al cabo de los tres segundos analizados. bueno, (> de
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 0.3 500Hz. 0.12 TONOS 1000Hz. 0.08 3000Hz. 0.06
129.2333
119.5986
117.4501
114.7605
COMB. 1 0.3
COMB. 3 0.1
116.8806
115.0379
VOZ ---
RUIDO ---
---
---
Tabla 2.3.3.1
102
=0.001
x 10
-4
LMS
CANCELACION DE ECO
CANCELACIN DE ECO
0.1 error 0 -0.1 -0.2 -0.3 -0.4 -0.5 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35
121,2696 dB
0.4
0.45
0.5
0.1
0.2
0.3
tiempo (seg.)
0.7
0.8
0.9
Figura 2.3.4.1
=0.005
0.025
LMS
CANCELACIN DEL ECO
tiempo (seg.)
Figura 2.3.4.2
103
LMS
CANCELACION DE ECO
118,0803 dB
Figura 2.3.4.3
LMS
CANCELACION DE ECO
-1
tiempo (seg.)
Figura 2.3.4.4
104
LMS
CANCELACIN DEL ECO
-0.5
-0.2
-1
-0.4
-1.5 -0.6 0 0.05 0.1 0.15 0.2 0.25 0.3 tiempo (seg.) 0.35 0.4 0.45 0.005 0.01 0.015 0.02 0.025 0.03 0.035 0.04 0.045 0.05 tiempo (seg.)
Figura 2.3.4.5
LMS
CANCELACIN DEL ECO
-0.15 0.01 0.02 0.03 0.04 0.05 tiempo (seg.) 0.06 0.07 0.08 0.09
Figura 2.3.4.6
105
LMS
CANCELACIN DE ECO
0.5
119.9592 dB
0
-0.5
-0.5
-1
-1
-1.5 0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 tiempo (seg.)
0.01
0.02
0.03
0.04
0.05
0.06
0.07
0.08
0.09
tiempo (seg.)
Figura 2.3.4.7
LMS
SEAL DESEADA
SEAL ESTIMADA
0.2
0.4
0.6
0.8
1 tiempo
1.2
1.4
1.6
1.8
Figura 2.3.4.8
106
LMS
SEAL DESEADA
-0.5
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
SEAL ESTIMADA
Figura 2.3.4.9
LMS
0.8 0.7 0.6 0.5 0.4 0.3
9.0304 dB
e rro r
0.2 0.1
0.5
2.5
Figura 2.3.4.10
CONCLUSIONES: Si se supiera a priori que la seal de entrada iba a ser un tono de 50Hz., no habra que dudar en utilizar el algoritmo LMS, ya que, como se ver ms adelante, el nmero de operaciones utilizadas para este ltimo algoritmo (BLMS), es mayor que el simple LMS para llegar al mismo nivel de cancelacin en el mismo intervalo de tiempo o incluso un poco peor
107
Lo que ocurre con el tono de 50Hz. Ocurre con el resto de seales peridicas. Al igual que suceda con el LMS, ahora ocurre con el BLMS, es decir, a medida que se aumenta la frecuencia aumenta el tiempo de cancelacin. Por lo tanto debido a un crecimiento igual en los dos algoritmos, el BLMS nunca llegar a tener tan buen tiempo de cancelacin como el LMS (para estas seales peridicas). La potencia del error final, aunque muy similar, en todos los casos es mejor para el LMS que para el BLMS. La seal de msica proporciona con clara mejora, ya que a priori, parece tarda en conseguir un cierto parecido la al deseada, es menor (pero se sigue cancelacin evidente). este algoritmo que el tiempo seal estimada sin llegar a una que con una
En el caso de la voz, las diferencias que se puedan observar son mnimas, aunque el tiempo que se ha analizado sea diferente, el parecido entre las dos seales es bastante claro. As pues, se pueden sacar algunas conclusiones generales, como por ejemplo que utiliza un mayor tiempo de cancelacin, debido al retardo que ya se ha nombrado en anteriores ocasiones; la cancelacin de este error es muy similar entre las seales analizadas, casi no hay diferencia en el tiempo de cancelacin entre seales y por ltimo, decir que los errores residuales que quedan con el algoritmo BLMS son muy similares entre seales.
108
DATOS:
TONOS 150 Hz. 1000 Hz. 0.05 0.12 123.7569 119.5986 0.003 0.08 118.0803 117.4501
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) LMS BLMS LMS BLMS 0.3 0.3 121.2696 129.2333 COMB. 1 LMS BLMS LMS BLMS 0.03 0.25 118.6414 116.8806 VOZ LMS BLMS LMS BLMS ---------
3000 Hz. 0.003 0.06 118.2809 114.7605 COMB. 3 0.03 0.1 119.9592 115.0379 RUIDO ------
COMBINACIN DE TONOS COMB. 2 0.04 0.3 122.0456 121.5969 SEALES NO PERIDICAS MSICA ---------
Tabla 2.3.4.1
109
En la segunda operacin se han seguir los mismo pasos que antes, ya que ahora se calcula la seal estimada y, que deber tener el mismo nmero de coeficientes que la seal deseada d. Por lo tanto aqu habr tambin SN productos y S(N-1) sumas.
Tercera operacin: clculo del vector de error que en total sern S restas. Cuarta operacin: se multiplican cada coeficiente del vector de error (que posee S componente) por cada uno de los coeficientes del vector x correspondiente, es decir NS productos. Ahora, de los vectores resultantes, se suman coeficiente a coeficiente de los N elementos que poseen los nuevos vectores xi, por lo tanto habr (S-1) N sumas. Quinta operacin: se deber multiplicar el vector resultante de antes (de N coeficientes), por el factor de amortiguamiento . Habr que incluir en esta operacin la divisin que hay que hacer para sacar la estadstica de lo sumado anteriormente, pero se va a omitir haciendo la
, ya que la operacin de S divisin no se puede considerar como la misma dificultad que una multiplicacin, al menos en el DSP en el cual se
siguiente igualdad,
110
LMS
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. Total
(3N-1)S
Tabla 2.3.5.1
En la tabla 2.3.5.1 estn representadas el nmero de operaciones que ha de realizar el algoritmo BLMS por cada operacin descritas al principio de este captulo. Como las operaciones en el algoritmo LMS y BLMS no coinciden, del primero nicamente se han colocado el nmero de sumas y restas totales que se han de realizar. La diferencia que se encuentra en el nmero de operaciones para el algoritmo LMS con lo calculado en la tabla 2.1.5.1, viene dada por la variable S, ya que hay que recordar que ahora, con el algoritmo BLMS, se est calculando un nmero S de salidas, y en la tabla 2.1.5.1 nicamente se calculaban para una salida.
x 10
500
1000
3500
4000
Figura 2.3.5.1
111
x 10
n u m e ro d ep ro d u cto s
500
1000
3500
4000
Figura 2.3.5.2
Comentar que para las figuras 2.3.5.1 y 2.3.5.2 los clculos se han hecho para un tamao de bloque S=4; claro est que si este nmero aumentase, tambin aumentara el nmero de operaciones (productos y sumas) que realizaran los dos algoritmos. Tanto en las figuras 2.3.5.1 y 2.3.5.2 como en la tabla 2.3.5.1, se puede observar como el nmero de operaciones es muy parecido para los dos algoritmos, ya que, aunque si que es verdad que en el nmero de productos es mayor para el algoritmo BLMS, en el nmero de sumas ocurre lo contrario. Se puede concluir pues que el nmero de operaciones es muy parecido, si no se tiene en cuenta la divisin que se debe de realizar para la estimacin en el BLMS. Esta operacin no se ha tenido en cuenta porque como ya se ha dicho antes en un DSP tendr un trato especial.
112
113
ALGORITMOS LMS EN EL DOMINIO TEMPORAL [ysalida,et,ye]=func_bnlms(func,numSal); elseif func=='c' func=rand(1,40000); [ysalida,et,ye]=func_bnlms(func,numSal); elseif func=='d' func=(sin(2*pi*50*n)+sin(2*pi*150*n)+cos(2*pi*500*n)); [ysalida,et,ye]=func_bnlms(func,numSal); elseif func=='e' func=2*musica'; [ysalida,et,ye]=func_bnlms(func,numSal); else disp('a introducido una funcion no valida'); end end for m=1:(k)*numSal t(m)=m/8000; end; for m=1:(k)*numSal e_db(m)=10*log10(real(et(m)/ysalida(m))); end; Funcin del algoritmo blms function[ysalida,et,ye]=funcblms(func,S) k=6000; for m=1:1024+S%inicializamos el valor de x x(1025+S-m)=func(m); end he=zeros(1,1024); load camino.mat load seales.mat mu=input('introduce el valor de mu (aconsejable 0.001 o menor): '); vector_h=input('elige la "h" del sistema (1,2 o 3): '); if vector_h==1 hr=load('h1_a.txt'); hr=hr';%trasponemos la matriz porque el archivo .txt es una columna elseif vector_h==2 hr=load('h2_a.txt'); hr=hr';%trasponemos la matriz porque el archivo .txt es una columna elseif vector_h==3 hr=h_real;
114
ALGORITMOS LMS EN EL DOMINIO TEMPORAL else disp('no existe este archivo'); end for ii=1:k%para el tiempo suma=zeros(1,1024); for jj=1:S %numero de salidas %calculamos la y, haciendo la convolucion y=0; for i=1:1024 y1=hr(i)*x(S-jj+i); y=y1+y; end ysalida((ii-1)*S+jj)=y; e1=0; for i=1:1024 e2=x(S-jj+i)*he(i); e1=e2+e1; end ye((ii-1)*S+jj)=e1; %ahora si que calculamos el error e((ii-1)*S+jj)=y-e1; for i=1:1024 suma(i)=mu*e((ii-1)*S+jj)*x(S-jj+i)+suma(i); end end for i=1:1023 z(i+S+1)=x(i); end for i=1:S z(S-i+1)=func(ii*S+i+1024); end x=z; for j=1:1024 he(j)=he(j)+suma(j)/S; %actualizamos la h estimada, con este 1025, lo que conseguimos es %darle la vuelta al vector x, aqui es donde no se si es necesario %darle la vuelta. end end et=e;
115
Al igual que el apartado 2.2, la manera de normalizar este factor depende de la potencia de la seal, de entrada. Ahora se tiene el problema aadido de trabajar en bloques (con varios vectores de la seal de entrada), como ya se ha sealado en el punto anterior. Observando el diagrama de bloques de la figura 2.4.2.1 y comparndolo con la figura 2.3.2.1, se puede ver como los nicos bloques u operaciones que se introducen adicionalmente, son aquellos que realizan la potencia de la seal. Pero conseguir esta potencia, no influye para nada la dificultad de estar trabajando con varios bloques a la vez, ya que esta potencia, la calculando va calculando cada vez que se utiliza un vector, sin importar si se est en una iteracin o en otra, ya que la inversa de esta potencia (aunque no se le puede denominar exactamente potencia, ya que tiene otra serie de componentes, que, eso si, no influyen tanto como sta) es multiplicada por un factor muy pequeo (constante) y luego por la seal propiamente dicha, convirtindose en otro vector, con otras caractersticas, pero con el mismo nmero de coeficientes Si se toman esta serie de molestias a la hora de hacer clculos, est claro que ser para conseguir algn beneficio en el objetivo final. Como se ver ms adelante, la diferencia estar muy clara cuando se comparen la msica y la voz, dos seales no peridicas, decantndose la balanza hacia el lado del algoritmo BNLMS, pues la ventaja de este algoritmo estriba en que calcula la potencia de la seal de entrada, y con ello se amortigua ms rpido cualquier cambio en la seal. Si a esto se le aade la estadstica que nos proporciona de por si el algoritmo BLMS (que mejora sensiblemente respecto del LMS), se podr concluir que este algoritmo, el BNLMS, es el ms indicado para este tipo de seales. Pero no adelantemos acontecimientos, vase primero como es el diagrama de bloques expuesto en la figura 2.4.2.1 y las operaciones
116
necesarias para recrear este algoritmo que a priori promete muchas esperanzas.
117
*
ABS
DELAY
viejo
he
^2
sumatorio y media
x x
y e
e
+
*
h
Figura 2.4.2.1
118
INICIALIZACIN S nmero de vectores de entrada he=[00] %anchura del vector N func seal de entrada al sistema x(m)=func(m) los S+N-1 primeros valores de la seal muestreada se introducen en PARA CALCULAR S VALORER DE LA SEAL DE SALIDA, PARA UN CONJUNTO DE VECTORES DE LA SEAL DE ENTRADA. - Toma S muestras nuevas xn(m+S)= xn(m) xn(i)= func(m+S+i) - Calcula S seales deseadas y estimadas dn[F-S+i] = xn(F-S+i)*hn(k) yn[F-S+i] = xn(F-S+i)*hen(k) - Clculo del error en[i] = dn[i] - yn[i] - Clculo del factor de convergencia segn la potencia de la seal =/(p+) Pn= - LMS Fin[m]=1/S( (xn[m,f]en[m,f]))
f =1 S N
i=1 S
x(i)
i =1
hen+1[m+1]= hen(m)+Fin[m]
Figura 2.4.2.2
119
0.5
111.8723 dB error 0
-0.5
-1
0.02
0.04
0.08
0.1
0.12
Figura 2.4.3.2
120
1.5
-0.5
-1
tiempo (seg.)
0.5
121.1255 dB error 0
-0.5
Figura 2.4.3.4
121
tiempo (seg.)
e rro r
19.2509 dB
0.5
2.5
Figura 2.4.3.6
122
0.5
2.5
e rro r
0.5
2.5
Figura 2.4.3.8 Conclusiones: se usa el mismo tipo de representacin para cada tipo de seal, la figura que muestra el error lineal.
Todas estas representaciones tienen en comn que estn analizadas durante el transcurso de tres segundos de las mismas y aunque en algunas no aparezca representado todo este tiempo, por ver mejor la cancelacin, la potencia del
Lorenzo Meler Ferraz
123
error residual, si que ha sido calculada para los valores resultantes al final de los tres segundos analizados. El valor de la constante vara mucho segn la frecuencia de la seal. Se resalta este dato, porque es una de las causas de que el tiempo de cancelacin de error sea mayor o menor (menor tiempo cuanto mayor sea la constante.) Para estas seales peridicas, se observa que en las combinaciones de tonos, cuanto ms cerca estn unos de otros, mayor es el tiempo que tarda nuestro filtro en llegar al valor del error residual. El tiempo transcurrido para tonos ms alejado y de alta frecuencia es bastante bueno, aunque unos tonos como en el caso de tonos 2, que se podra decir que estn muy aproximados y de muy baja frecuencia (es decir, la peor situacin para seales peridicas), tarda un tiempo aproximado de 0.2 segundos en cancelar el error, tiempo ms que asumible, considerando que es el peor de los casos. Los niveles de cancelacin final son bastante buenos. En el caso de la seal de voz se ha decido representar tres segundos, para observar la eficacia que tenemos en este algoritmo en un espacio de tiempo relativamente largo. Al contrari que otros algoritmos, aqu se est representando la seal del error ya que la cancelacin es bastante buena, como indica el dibujo de ms de 19dB. Como caba esperar, algo similar ocurre con la seal de msica y aqu tambin se ha preferido representar los tres segundos que se prometieron al principio del captulo, para asegurar al lector la no divergencia de la seal al cabo de un tiempo razonable, llegando a valores de 7.8dBs de cancelacin. Los valores alcanzados por el error del ruido son bastante aceptables. Se puede observar como hay un descenso continuado del error. La cancelacin final, al cabo de los tres segundos sealados es ms que aceptable, entendiendo por aceptable, lo que se seal al principio de este trabajo segn la normativa de la ITU, teniendo en cuenta que se est usando un valor de relativamente alto.
124
129.4983
---
---
111.8723
COMB. 1 0.2
COMB. 3 0.06
116.6243
113.0837
VOZ ---
RUIDO ---
Tabla 2.4.3.1
125
=0.001
0.5 0.4 0.3 0.2 0.1
CANCELACIN DE ECO
129.4983 dB 0 -0.1 -0.2 -0.3 -0.4 -0.5 0 0.05 0.1 tiempo (seg.) 0.15 0.2
tiempo (seg.)
Figura 2.4.4.1
0.5
111.8723 dB 0
-0.5 -0.5 -1 -1 -1.5 0 0.02 0.04 0.06 0.08 0.1 0.12 0 0.02 0.04 0.06 tiempo (seg.) tiempo (seg.) 0.08 0.1 0.12
Figura 2.4.4.2
126
BNLMS =2 y =0.001
CANCELACIN DE ECO
0.5 116.6243 dB 0
-0.5
-0.5
-1
-1
-1.5 0 0.05 0.1 0.15 0.2 0.25 0.3 tiempo (seg.) 0.35 0.4 0.45
tiempo (seg.)
Figura 2.4.4.3
BNLMS =2 y =0.001
CANCELACIN DE ECO
0.5
0.5
121.5969 dB error 0
121.1255 dB error 0
-0.5
-0.5
Figura 2.4.4.4
127
BNLMS =4 y =0.001
CANCELACIN DE ECO
tiempo (seg.)
Figura 2.4.4.5
BNLMS
SEAL DESEADA
0.5
2.5
0.5
1.5 tiempo
2.5
Figura 2.4.4.6
128
BNLMS
SEAL DESEADA
SEAL ESTIMADA
Figura 2.4.4.7
BNLMS
CANCELACIN DE ECO
e rro r
0.5
1 tiempo (seg.)
1.5
2.5 x 10
4
Figura 2.4.4.8
CONCLUSIONES: Dentro de las observaciones de las seales peridicas hay que sealar una que se ve a simple vista, y es que si que se aprecia mejora al utilizar este algoritmo. As en el tono de 3000Hz. el tiempo de cancelacin se amplia a unas cuantas centsimas de segundo mas, al igual que en la primera combinacin y la segunda. En la tercera combinacin; se puede apreciar como el tiempo ha aumentado a casi el doble, como ocurre con el tono de 50Hz.
Hay que recordar que en el algoritmo anterior, la comparacin de las seales llevaba a observar que se
129
llegaba a la mitad de la amplitud de la seal deseada, ahora, con nuestro nuevo algoritmo se consigue una mejora en esta amplitud, tanto que se puede representar la seal de error y aportar informacin. El comportamiento de la seal de voz es muy similar, cosa que se esperaba debido al continuo comportamiento parecido de estas dos seales a lo largo de todo este estudio. As, como se dijo para la msica, se ha conseguido aumentar la amplitud, que en comparacin con los niveles a los que se llegaban con el algoritmo anterior, se ha mejorado multiplicando niveles anteriores por dos. La mejora cuando se introduce a la entrada la seal de ruido blanco es clara, se consiguen unos niveles bastante mejores. Era de esperar que se consiguieran mejores resultados para las ltimas seales que son analizadas, debido a que ahora se tienen en cuenta la potencia de la seal y los cambios que se producen en estas son bastante bruscos, mientras que en las peridicas, los cambios son predecibles. Cuando no se tenan en cuenta la potencia de la seal, la recuperacin del error (o mejor dicho del filtro adaptativo o estimado) se haca ms difcil. Se puede asegurar que en entornos normales, este ltimo algoritmo es el ms adecuado, debido a la mayor facilidad de que se encuentren seales del tipo como las ltimas que se han estudiado (voz, msica y ruido blanco). El problema radica en el tiempo de computacin, ya que como se puede apreciar en la figura 4.2.2, el nmero de operaciones es un poco mayor en este ltimo algoritmo que en cualquiera de los anteriores.
130
DATOS:
TONOS 150 Hz. 1000 Hz. -----------------
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) BNLMS BLMS BNLMS BLMS 0.15 0.3 129.4983 129.3333 COMB. 1 BNLMS BLMS BNLMS BLMS 0.2 0.25 116.6243 116.8806 VOZ BNLMS BLMS BNLMS BLMS -----
3000 Hz. 0.06 0.06 111.8723 114.7605 COMB. 3 0.06 0.1 113.0837 115.0379 RUIDO -----
COMBINACIN DE TONOS COMB. 2 0.2 0.3 121.1255 121.5969 SEALES NO PERIDICAS MSICA ----7.8156 (tras 3 seg.) ---
Tabla 2.4.4.1
131
132
3.- ALGORITMO LMS EN FRECUENCIA 3.1.-INTRODUCCIN (MTODO SOLAPAMIENTOALMACENAMIENTO) 3.2.-LMS FORZADO (CONSTRAINED) 3.2.1.- DIAGRAMA DE BLOQUES E INSTRUCCIONES 3.2.2.- RESULTADOS CON DIFERENTES SEALES DE ENTRADA 3.2.3.- CLCULO DEL NMERO DE OPERACIONES 3.2.4.- CDIGO DEL PROGRAMA 3.3.-LMS NO FORZADO (UNCONSTRAINED) 3.3.1.- DIAGRAMA DE BLOQUES E INSTRUCCIONES 3.3.2.- RESULTADOS CON DIFERENTES SEALES DE ENTRADA 3.3.3.- COMPARATIVA RESULTADOS LMS FORZADO vs. NO FORZADO. 3.3.4.- CLCULO DEL NMERO DE OPERACIONES 3.3.5.- CDIGO DEL PROGRAMA 3.4.-ADAPTACIN DEL FACTOR DE CONVERGENCIA 3.4.1.- ADAPTACIN SEGN POTENCIA DE LA SEAL 3.4.2.- RESULTADOS LMS FORZADO CON ADAPTATIVA 3.4.3.- COMPARATIVA LMS CON Y SIN ADAPTATIVA 3.4.4.- CLCULO DEL NMERO DE OPERACIONES 3.5.-CONVOLUCIN CIRCULAR 3.5.1.- DIAGRAMA DE BLOQUES E INSTRUCCIONES 3.5.2.- RESULTADOS OBTENIDOS CON DIFERENTES SEALES DE ENTRADA 3.5.3.- COMPARATIVA LMS FORZADO vs. LMS CONVOLUCIN CIRCULAR 3.5.4.- CLCULO DEL NMERO DE OPERACIONES 3.5.5.- CDIGO DEL PROGRAMA
133
m =1
x [m]x [n
1 2
m]
ec. 3.1.1
Como se ve, la ecuacin 3.1.1 es la misma que la ecuacin de la convolucin lineal (ecuacin 1.3.1 de captulo primero), de lo que se deduce que lo nico que cambia es el nombre de la convolucin, denominada lineal para seales no peridicas y circular para las peridicas, ya que estas ltimas, al repetirse cada 2 periodo, puede hacer girar sus coeficientes circularmente para ir desplazando los mismos. En otras palabras, nicamente se utilizar esta convolucin cuando la convolucin de dos secuencias en el dominio del tiempo sea transformada en el producto de sus DFTs (punto 4 del primer captulo) en el dominio de la frecuencia, ya que se ha conseguido representar una seal peridica o no peridica en una suma de seales peridicas (Fourier). Cuando se quiere calcular la convolucin de dos seales peridicas, que poseen la misma longitud, el producto de sus DFT en el dominio trasformado, no se corresponde con la convolucin lineal, sino con la circular. En este apartado, el primer objetivo ser deducir algunas operaciones en el dominio de la frecuencia, como por ejemplo la convolucin, autocorrelacin, ya que como se nombraba en el apartado cuarto del primer captulo, en el cual se explica como se hace la FFT, se gana en el
Lorenzo Meler Ferraz
134
nmero total de operaciones para realizar el objetivo final. Esto es lo que lleva a dedicar todo un captulo entero para el estudio del algoritmo LMS y sus variantes en el dominio de la frecuencia. La salida de un filtro lineal (caso que nos ocupa) se analiza como una convolucin, y la estimacin del gradiente de un algoritmo adaptativo es una correlacin. La convolucin de dos secuencias requiere que una de estas sea invertida antes de que la muestra sea trasladada, multiplicada y sumada. La correlacin es similar a la convolucin, excepto que ninguna secuencia es invertida. Se puede observar que un subconjunto de las muestras de una convolucin circular, es idntico a un conjunto especfico de muestras de una convolucin lineal y otro subconjunto a la correlacin. Se tienen dos secuencias a y b, la secuencia a tiene longitud N1 y la secuencia b N2 (siendo N1 mayor o igual que N2), entonces, las ltimas N1-N2+1 muestras de la convolucin circular corresponden a una convolucin lineal. Por otra parte, las N1-N2+1 primeras muestras de una correlacin circular corresponden a una correlacin lineal. As con esto, una convolucin o correlacin lineal, pueden ser generadas a partir de su correspondiente circular, pero primero partiendo y solapando los datos y entonces se conserva un subconjunto del resultado final. Hay dos maneras para llevar a cabo una convolucin lineal usando el algoritmo de la FFT, y son el almacenamiento solapamiento (overlap-save) y el sumasolapamiento (overlap add). En este estudio nicamente se utiliza la primera (almacenamiento solapamiento), debido a que se va a realizar la implementacin del algoritmo LMS, y se sabe que para este algoritmo o mtodo, el primer mtodo utiliza menos operaciones que el segundo (Clark et al., 1983).
135
Es decir, se irn cogiendo muestras hasta el tamao que se considere apropiado para este estudio. Este filtro, ser tomado de un tamao igual a L=1024. En este mtodo, la longitud de los bloques de entrada es N=L+M-1, al igual que la longitud de cada una de las FFT e IFFT. Cada bloque de datos contiene al menos M-1 puntos del bloque de datos anterior, seguidos de L nuevos puntos de manera que la longitud de la secuencia as formada es N=L+M-1. se calcula la FFT de N puntos de cada bloque de datos. La respuesta impulsional del filtro se aumenta en longitud aadiendo L-1 ceros, se calcula la FFT de N puntos y se almacena. La multiplicacin de las dos FFTs de N al bloque m-simo de puntos {H (k )}y{X m (k )} correspondiente datos da lugar a
Y m (n ) = H (k ) X m (k ) Ec. 3.1.2
k = 0,1,....., N 1
Dado que la longitud del registro de datos es N, los primeros M-1 puntos de cada registro de datos y estos puntos se convierten en los primeros M-1 puntos del registro siguiente, tal como se indic arriba. Para empezar el procesado, los M-1 primeros puntos del primer registro se hacen iguales a cero. Por tanto, los bloques de datos son:
, 0 ,....., 0 , x ( 0 ), x ( 1 ),...., x ( 2 L 1 ) Iteracin 1 x1 (n) = 0 ec. 3.1.4 1 4 24 3 M 1 puntos Iteracin 2 x 2 (n) = x( L M + 1),..., x( L 1), x( L),..., x(2 L 1) ec.3.1.5 1444 4 24444 3 1442443 M 1 puntos _ de _ datos _ de _ L _ nuevos _ puntos _ de _ datos x1 ( n )
136
Iteracin 3 x3 (n) = x(2 L M + 1),..., x(2 L 1), x(2 L),..., x(3L 1) 14444244443 144 4 2444 3 M 1 puntos _ de _ datos _ de _ L _ nuevos _ puntos _ de _ datos x2 ( n ) ec. 3.1.6
Y as sucesivamente. Las secuencias de datos resultantes de la IFFT estn dadas por la segunda ecuacin, rechazndose los primeros M-1 puntos debido al aliasing, de manera que los L puntos restantes constituyen el resultado deseado de la convolucin lineal. Esta fragmentacin de los datos de entrada y la unin de los bloques de datos de salida para formar la secuencia de salida se ve en la figura 3.1.1.
|---------L-------|
seal de entrada
|---------L-------|
|---------L-------|
n M-1 ceros
x1(n)
M-1 x2(n)
x3(n)
seal de salida
descartamos M-1 puntos
y1(n)
Y2(n)
Descartamos M-1 puntos
y3(n)
descartamos M-1 puntos
Figura 3.1.1
Del mismo modo que se ha mencionado a Clark para decidir cual de los dos algoritmos (almacenamiento o suma) se iba a elegir, l mismo dice que la implementacin ms eficiente de este algoritmo (overlap-save method), se obtiene usando el 50 % de solapamiento. De ah que el desarrollo que se ha realizado en este trabajo sea con estas cantidades. Esto quiere decir que N=2M=2L.
137
FFT
x
retardo
IFFT
conjugar
x
FFT
2i
gradient constraint
,,,,
FFT
d(n)
Figura 3.2.1.1
138
INSTRUCCIONES
INICIALIZACIN
W (0) = [0,...,0]
T
Figura 3.2.1.2
139
FFT: transformada rpida de Fourier. (fast Fourier Transform). IFFT: transformada inversa rpida de Fourier (invers fast Fourier transform).
140
141
0.5
2.5
3.5
Figura 3.2.2.1
CANCELACION DE ECO 0.05 0.04 0.03 0.02 0.01 e rro r 31.9981 dB 0 -0.01 -0.02 -0.03 -0.04 -0.05
0.5
2.5
3.5
Figura 3.2.2.2
142
0.2
0.5
2.5
3.5
Figura 3.2.2.3
CANCELACION DE ECO 0.8 0.6 0.4 0.2 e rro r 111.4538 dB 0 -0.2 -0.4 -0.6 -0.8
0.5
2.5
3.5
Figura 3.2.2.4
143
CANCELACION DE ECO 1 0.8 0.6 0.4 0.2 21.6124 dB e rro r 0 -0.2 -0.4 -0.6 -0.8 -1
0.5
2.5
3.5
Figura 3.2.2.5
116.0901 dB
0.5
2.5
3.5
Figura 3.2.2.7
144
1.5
-0.5
-1
-1.5
0.5
2.5
3.5
Figura 3.2.2.8
Msica. (=0.01)
salida estimada
2 salida deseada
-0.050
Figura 3.2.2.8
145
Voz. (=0.01)
salida estimada
2 salida deseada
Figura 3.2.2.9
-0.5
-1
0.5
2.5
3.5
Figura 3.2.2.10 CONCLUSIONES: La primera observacin que hay que hacer es cmo analiza el algoritmo estas seales. Se puede apreciar claramente como el anlisis, o los resultados obtenidos
Lorenzo Meler Ferraz
146
aparecen cada cierto tiempo y no instantneamente despus de haber analizado cada muestra. En este caso los datos se actualizan cada 1024 muestras, es decir 1024/8000=0.128 seg. de la seal de entrada. Otra observacin es que al trabajar por bloques el factor de convergencia mximo se hace menor. En las seales peridicas que se analizan al principio (los tonos), se ve claramente el descenso del error. Este descenso se ve mucho mas acusado cuanto ms alta es la frecuencia del tono. El error que se alcanza para las seales peridicas de alta frecuencia (a partir de 1 KHz), es bastante bajo, el tiempo utilizado es relativamente bajo (alrededor de 1 seg.), si se compara con el tiempo que tardaba con los tonos de ms baja frecuencia. Cuando se hace una combinacin de tonos el descenso para las frecuencias bajas se ve ms acusado que en los casos anteriores (cierta mejora), y la combinacin de tonos de alta frecuencia produce un descenso relativamente bueno. Se puede observar como el factor de convergencia es excesivamente bajo (comparndolo con los valores utilizados en el caso del dominio del tiempo), pero an as eficiente, aunque se podra achacar al valor que toma la constante el descenso tan lento que se tiene en la potencia del error. Los valores del factor de convergencia utilizados para las tres seales no peridicas (ruido, voz y msica) son bastante ms elevados que los utilizados en las seales peridicas. Estos valores, que al ser elevados hacen que la cancelacin del error sea ms rpida, no hace que la seal deseada diverja (estado que sucede cuando el valor de esta constante es demasiado alto). En estas seales, no se puede observar la seal del error sino la similitud de la seal deseada con la seal estimada. Cuando se observa la seal de msica, se ve como hay bastante similitud entre una y otra, sino se observa la amplitud de las dos (ya que la deseada tiene ms amplitud que la estimada). Esta diferencia en la amplitud de las dos seales es la que da un error no nulo. En el caso de la voz, la seal que peor llega a cancelar, la diferencia de la amplitud de las dos seales es de 1:2, aunque hay un cierto parecido entre ambas.
147
La ltima seal a analizar es el ruido blanco, la seal mejor cancelada de estas tres no peridicas. Al cabo de aproximadamente 2 seg., la seal estimada ha llegado al valor deseado, y la cancelacin se hace evidente (del error llega a disminuir considerablemente). En definitiva, la cancelacin se realiza bastante bien para seales peridicas, teniendo en cuenta, como ya se ver ms adelante, la mejora que se obtiene en el cmputo general de las operaciones que se realicen con respecto a las que se hacan en el dominio del tiempo, pero este tema tocar analizarlo en el punto inmediatamente posterior. Como en otras ocasiones, el utilizar la comparacin entre la seal deseada y la seal estimada para comentar la cancelacin del eco no es un buen signo, ya que denota la no cancelacin del eco.
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 2.5 100Hz. 2.5 TONOS 1000Hz. 1 3000Hz. 1
31.1000
31.9981
116.1189
111.4538
COMB. 1 1
COMB. 3 1
21.6124
114.5435
VOZ ---
RUIDO ---
---
---
Tabla 3.2.2.1
148
siendo j la unidad imaginaria. Algo similar ocurrir cuando se quiera realizar una suma en el dominio transformado, se sumar la parte real con la real del otro y la parte imaginaria con la imaginaria, como muestra la ecuacin 2.3.2. (a + bj) + (c + dj) = (a + c) + (b + d)j
ec. 3.2.3.2
Estas dos ecuaciones sern aplicadas en todos los apartados que, como este, se calculen el nmero de operaciones que realiza nuestro algoritmo. Todas las operaciones que se van a mostrar en negrita a continuacin, tienen el carcter de reales. La primera operacin es la FFT (transformada rpida de Fourier), para calcular la X(k) (seal en el dominio de la 2Nlog2(N) sumas y frecuencia). Una FFT nos da 4N/2log2(N) multiplicaciones. En segundo lugar se tiene que multiplicar el tamao del filtro W es de N, habr N complejas, es decir 4N multiplicaciones misma operacin hay tambin una IFFT de N decir 2Nlog2(N) sumas y 4N/2log2(N) ms. X(K)W(k) y como multiplicaciones reales. En esta coeficientes, es multiplicaciones
149
En la tercera habr simplemente N restas. La cuarta operacin consta nicamente de una FFT para conseguir el error en el dominio de la frecuencia E(k), por lo tanto 2Nlog2(N) sumas y 4N/2log2(N) multiplicaciones ms.
Quinta operacin. Entrando ya en lo que es el algoritmo LMS hay que hacer una multiplicacin de dos vectores complejos XH(k)E(k) de N coeficientes cada uno, un total de 4N multiplicaciones reales. Despus de esto la transformada inversa IFFT de N coeficientes, es decir, otra vez 2Nlog2(N) sumas y 4N/2log2(N) multiplicaciones.
La ltima operacin (sexta) que aparece en esta tabla es una FFT de lo anterior, de N coeficientes 2Nlog2(N) sumas 4N/2log2(N) multiplicaciones, multiplicar este y resultado por el factor de amortiguamiento (), es decir N multiplicaciones complejas y en este caso 2N productos reales ya que uno de los multiplicandos es un escalar, ms y N-1 sumas complejas para concluir con el algoritmo LMS, que sern 2(N-1) sumas reales. Todas estas operaciones se van a pasar a un ejemplo concreto, con un filtro de 1024 coeficientes, eligiendo este valor para poderlo comparar con la cantidad de operaciones que se necesitaban en el dominio del tiempo. Entonces, N=1024
Sumas f(N) 2Nlog2(N) 2Nlog2(N) N 2Nlog2(N) 2Nlog2(N) 2Nlog2(N)+2(N1) 10 Nlog2(N) +3N-2 f(1024) 20480 20480 1024 20480 20480 20480+2046 105407 Productos f(N) f(1024) 4N/2log2(N) 20480 4N/2log2(N)+4N 4096+2048 0 -----------------------4N/2log2(N) 20480 4N+4N/2log2(N) 4096+2048 0 4N/2log2(N)+2N 20480+204 8 20N/2log2(N) 112640 +10N
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. Sexta op. total
Tabla 3.2.3.1
Todas estas operaciones dan como resultado un vector de salida de 1024 coeficientes. En el caso del dominio del tiempo, haba como resultados un total de 3071 sumas y 3073 productos con lo que se consegua un nico valor de la seal estimada. De esta forma, si se multiplican por 1024 los resultados obtenidos en el caso del dominio del tiempo
Lorenzo Meler Ferraz
150
se podr comparar el nmero de operaciones que realiza cada algoritmo para conseguir un total de 1024 muestras de la seal deseada.
x 10
5
4 numero de operaciones
500
1000
1500
2000
2500
3000
3500
4000
Figura 3.2.3.1
Multiplicaciones sumas Dominio de t 30731024=3146752 30711024=3144714 Dominio de f 112640 105407
Tabla 3.2.3.2
La diferencia se ve claramente, decantndose la balanza de la optimizacin por el dominio de la frecuencia. El nmero tanto de sumas como de multiplicaciones se ve reflejado en la figura 3.2.3.1, apreciando una exponencial creciendo con el nmero de coeficientes del filtro.
151
152
ALGORITMOS LMS EN LA FRECUENCIA y(ss)=y(ss)+h(gg)*func(n*L+ss-gg+1); de la seal de entrada y de end %la simulacion de planta. end %a partir
%voy alamacenando la seal de salida real en el vector 'ysalida' cada vez que pasa % un intervalo de tiempo n for u=1:L ysalida((n-1)*M+u)=y(u); end YE=X.*HE; ye=miifft(YE,N); %lo mismo que antes (la salida salida estimada. for u=1:L yesalida((n-1)*M+u)=ye(M+u); xsalida((n-1)*M+u)=x(M+u); end real) pero para la
%rellenamos en la segunda mitad del vector error con los valores del error for m=1:L efourier(m+M)=y(m)-ye(m+M); e(m+(n-1)*M)=efourier(m+M); e_db(m+((n-1)*M))=10*log10(abs(real(e(m+((n1)*M)))/abs(real(y(m))))); end
%***TROZO QUE LO DIFERENCIA DEL UNCONSTRAINED (NO FORZADO)********** EFOURIER=mifft(efourier,N);%transformada de todo el vector de error FI_TOTAL=conj(X).*EFOURIER;%calculamos la fi extraa fi_total=miifft(FI_TOTAL,N); fi=zeros(1,N);%rellenamos todo el vector fi con ceros for m=1:L%cogemos solo los primeros elementos de la fi fi(m)=fi_total(m); end FI=mifft(fi,N); %********************************************************** ***********************
153
ALGORITMOS LMS EN LA FRECUENCIA for m=1:N%actualizo la H estimada, en frecuencia HE(m)=HE(m)+mu*FI(m); end %DESPLAZAMOS LOS PRINCIPIO for u=1:L x(u)=x(u+M); end VALORES FINALES DEL VECTOR x AL
%actualizar x con el metodo almacenamiento %cogiendo de L en L muestras for u=1:L x(M+u)=func(u+(n*M)+M); end
de
solapamiento-
%esto simplemente lo hacemos para sacar por pantalla los coeficientes en dominio del tiempo he=miifft(HE,N); for u=1:L he_total(u+(n-1)*M)=he(u+M); e_relativo((u+(n-1)*M))=(h(u)-he(u+M))/(h(u)); end end for m=1:(n*M)%simplemente tiempo t(m)=m/8000; end para poder representar en el
154
func
FFT
x
retardo x
IFFT
conjugar
x x
2i
FFT
d(n)
Figura 3.3.1.1
El diagrama de bloques de este algoritmo es prcticamente igual que el diagrama del LMS, pero ms sencillo, nicamente hay que eliminar el bloque que rodeaba el cuadro de puntos que se presentaba en el anterior. Esto supone que se toman todos los valores de la convolucin circular XH(k)E(k) por la realizacin de la correlacin lineal de al actualizacin de coeficientes. Se evita de esta forma una FFT y una IFFT, pero se pierde en estabilidad y robustez, por esto, ms adelante se ver una comparativa entre los resultados de este algoritmo y el LMS forzado (constrained), y se puede hacer un pronstico para decir cual es el idneo para nuestro propsito.
155
INICIALIZACIN
W (0) = [0,...,0]
T
e( k ) = d ( k ) y ( k ) 0 E (k ) = FFT e( k )
156
157
CANCELACION DE ECO 0.04 0.03 0.02 0.01 e rro r 0 -0.01 -0.02 -0.03 -0.04
9.9739 dB
0.5
2.5
3.5
0.2
0.5
2.5
3.5
Figura 3.3.2.2
158
ALGORITMOS LMS EN LA FRECUENCIA Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). (=0.000001)
CANCELACION DE ECO 1 0.8 0.6 0.4 0.2 e rro r 0 -0.2 -0.4 -0.6 -0.8 -1
20.9197 dB
0.5
2.5
3.5
Figura 3.3.2.3
0.5
2.5
3.5
Figura 3.3.2.4
159
-0.5
-1
-1.5
0.5
2.5
3.5
Figura 3.3.2.5
Voz. (=0.001)
salida estimada 0.2 0.1 0 -0.1 -0.2 0 0.4 0.2
0
2 salida deseada
-0.2 -0.4 0 1
2
Figura 3.3.2.6
160
Msica. (=0.001)
salida estimada
salida deseada
-0.05
Figura 3.3.2.7
-0.5
-1
0.5
2.5
3.5
Figura 3.3.2.8
161
ALGORITMOS LMS EN LA FRECUENCIA CONCLUSIONES: Una de las primeras apreciaciones, en una primera comparacin nada exhaustiva entre los dos algoritmos, sera la similitud en el valor del factor de convergencia , para conseguir los mejores resultados, aunque estos no sean iguales. Pero el anlisis comparativo entre los dos algoritmos, se realizar con mayor profundidad en apartados posteriores.
Observando especialmente los resultados proporcionados por este algoritmo, se pasa a detallar las conclusiones de dicha observacin para cada una de las seales. Se asume, como en el caso anterior, que para seales peridicas (sin importar si las frecuencias altas o bajas), el factor de convergencia deber ser bajo para no conseguir una divergencia en el resultado, tanto esto llevar a que la cancelacin del eco no sea rpida como cabra esperar. las son muy por tan
Una vez ms, para las seales peridicas, la cancelacin se consigue a los 2.5 seg. Y a partir de ah se estabiliza la seal, dejando un error residual muy pequeo, como se ve en el nmero de decibelios cancelados. La estabilidad mencionada no se refiere a que la seal del error en s sea estable, porque como se puede ver, hay altibajos constantes, eso s, debido a no estar utilizando el gradiente forzado. El comportamiento del algoritmo para seales de alta frecuencia (3000 Hz.), es un poco diferente, tanto en el tiempo de cancelacin como en el error residual, que es bastante menor en este caso que el la seal de 50 Hz. En las combinaciones de tonos, tanto para el primero, que es el que aparece con gran separacin entre sus valores y de frecuencias altas y bajas, como para el segundo, con los valores de las frecuencias muy bajos, los resultados son muy parecidos, el eco se llega a cancelar rpidamente (instantes despus de un segundo) o lo que es lo mismo las seales se llegan a parecer bastante transcurrido este tiempo. Vemos como del error no se cancela tanto como esperbamos. Mayor eficacia se consigue con la tercera combinacin de tonos (los que estn bastante separados y adems son de alta frecuencia), ya que la cancelacin es an ms rpida que en todos los casos anteriores (se puede aventurar a la aproximacin de un segundo).
162
Tras analizar las seales peridicas, tocar realizar la observacin de las seales no peridicas (voz, ruido blanco y msica). Los resultados vuelven a ser parecidos a los obtenidos en el algoritmo anterior (pero como se ha sealado antes no se entrar a hacer ninguna comparacin con nada anterior, por el momento). El factor de convergencia vuelve a tomar valores superiores a los utilizados en las funciones peridicas, con lo cual se puede suponer que la convergencia se realizar en un tiempo menor; pero no es as. En nuestro anlisis, estas seales no llegan a alcanzar los valores altos de la seal deseada, debido a cambios bruscos en la amplitud. En el caso de la voz, la seal estimada, nicamente llega a la mitad del valor de la seal deseada cuando esta ltima toma las amplitudes ms altas. Como lado positivo, hay que decir que se tiene un gran parecido entre estas dos seales (en lo que a forma de la seal se refiere). Cuando observamos la seal de msica, la situacin empeora, debido a que si en el caso anterior las amplitudes entre la seal deseada y la estimada eran en una proporcin de , ahora, la proporcin entre las mismas es de 1/10. El parecido sigue siendo bastante bueno, pero como en esta seal se producen cambios ms bruscos que en la anterior, es imposible conseguir una estabilidad para la seal estimada. En el caso de que el factor de convergencia se pudiera aumentar, este resultado lo se podra mejorar, ya que los cambios bruscos se subsanaran con una mayor. Mas adelante se ver como hallar o adaptar este factor segn la potencia de la seal, con lo que se subsanar en parte el error citado. Como en el caso anterior, no poner la seal de error por falta de informacin quiere decir que este algoritmo no cancela para este tipo de seales Los resultados obtenidos con la seal de ruido blanco son bastante buenos, ya que se obtiene una cancelacin del error al cabo de relativamente poco tiempo (poco ms de un segundo), si se compara con las seales anteriores.
163
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 2.5 500Hz. --TONOS 1000Hz. --3000Hz. 1
9.739
---
---
77.4374
COMB. 1 1.5
COMB. 3 1
20.9197
774374
VOZ ---
RUIDO ---
---
---
Tabal 3.3.2.1
164
9.9739 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.3.3.1
0.2
0.2
0.1 77.4374 dB 0
-0.1
-0.1
-0.2
-0.2
-0.3
-0.3
-0.4
0.5
2.5
3.5
-0.4
0.5
2.5
3.5
Figura 3.3.3.2
165
Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). LMS FORZADO (=0.000005)
CANCELACION DE ECO 1 0.8 0.6 0.4 0.2 e rro r 0 -0.2 -0.4 -0.6 -0.8 -1 e rro r 21.6124 dB 1 0.8 0.6 0.4 0.2 20.9197 dB 0 -0.2 -0.4 -0.6 -0.8 -1
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.3.3.3
0.5
2.5
3.5
Figura 3.3.3.4
166
0.5 77.4374 dB 0
0.5 77.4374 dB 0
e rro r
-0.5
e rro r 3 3.5
-0.5
-1
-1
-1.5
0.5
2.5
-1.5
0.5
2.5
3.5
Figura 3.3.3.5
LMS NO FORZADO
0.2 0.1 0 -0.1 -0.20 0.4 0.2
0
salida estimada
2 salida deseada
-0.2 -0.4 0 1
2
Figura 3.3.3.6
167
MSICA
LMS FORZADO
0.04 0.02 0 -0.02 -0.04 0
0.05
LMS NO FORZADO
0.01 0.005 0 -0.005 salida estimada
salida estimada
2 salida deseada
-0.01 0.05
1 2 salida deseada
-0.05 0
-0.05 0
Figura 3.3.3.7
0.5 16.9656 dB 0
-0.5
-0.5
-1
0.5
2.5
3.5
-1
0.5
2.5
3.5
Figura 3.3.3.8 CONCLUSIONES: Echando un vistazo rpido a las figuras de este apartado, no es arriesgarse el decir que con el algoritmo LMS NO FORZADO, se consiguen peores resultados para todo tipo de seales ya que se deja por hacer la autocorrelacin del error y esas operaciones necesarias
168
para evitar el solapamiento de las seales (ltimas tres ecuaciones de la figura 3.2.1.2). En las seales peridicas, el comportamiento viene siendo el mismo, es decir, a medida que se aumenta la frecuencia del tono, mejora el descenso del eco. Esto ltimo es quizs la nica similitud que se puede encontrar en los dos algoritmos, porque del resto de observaciones son todo diferencias. Las tres caractersticas que ya alguna vez se han sealado para poder decidir que convergencia del error es mejor o peor, en este caso se decantan por el algoritmo LMS FORZADO. Se recuerdan estas tres caractersticas, tiempo que tarda en llegar a nuestro valor residual del error, el valor final de este error y estabilidad. Para estas seales peridicas es bastante apreciable la diferencia en las dos primeras caractersticas, porque aunque haya seales que para el algoritmo LMS NO FORZADO consigan mejorar el valor de convergencia, el LMS FORZADO lo har mejor y con mayor rapidez. Los resultados que ms se pueden parecer entre ellos son para un tono de alta frecuencia y una combinacin de tonos de alta frecuencia tambin (tonos 3), pero ni en este caso, al cabo del mismo tiempo (3 seg.), no se consigue ni la mitad de la reduccin de la potencia del error. En la seal de voz se ve como para el algoritmo LMS NO FORZADO le cuesta mucho ms recuperar el valor de la seal deseada, al igual que alcanzar el valor deseado. Esto repercute en la similitud en la que se observa para definir si es o no buena la convergencia del error. La similitud es bastante mayor en el algoritmo forzado que en el no forzado. En la msica ocurre algo diferente, si que es verdad que sigue siendo mejor la similitud del primer algoritmo, pero adems se puede observar que la amplitud a la que se consigue llegar con el segundo algoritmo es casi diez veces menor que la seal deseada, mientras que con el LMS FORZADO, el nivel de amplitud llega a conseguir un poco ms de la mitad de lo que deseamos. Se recuerda que aunque las seales se parezcan, si no se ha representado la seal de cancelacin de eco, es porque no aporta informacin debido a la falta de dicha cancelacin. Por ltimo, en la seal de ruido blanco, se puede asegurar que la seal se cancela, al igual que en el resto
169
de seales, mejor que en el FORZADO que en el NO FORZADO, pero esta vez, la diferencia no es tan notable como antes. El nivel de error final (refiriendo al nivel de error lineal), aunque en el primero se consigue reducir el error en un tiempo menor, el tiempo necesario del segundo tampoco es nada desdeable, incluso se podra decir que es bueno. As pues, con todo esto se concluye que salvo por el nmero de operaciones que necesita cada uno (estudio que se realiza en el apartado siguiente), el mejor algoritmo con bastante diferencia es el FORZADO como cabra esperar, pero lo que igual no se esperaba era que hubiera tanta diferencia en los resultados obtenidos. Se reitera pues que el nico resultado para una de estas seales de entrada que se puede considerar aceptable y que se podra usar para obtener unos resultados ptimos, sera el ruido blanco.
DATOS:
TONOS 150 Hz. 1000 Hz. -----------------
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) LMS FORZADO LMS NO FORZADO LMS FORZADO LMS NO FORAZADO LMS FORZADO LMS NO FORZADO LMS FORZADO LMS NO FORZADO LMS FORZADO LMS NO FORZADO LMS FORZADO LMS NO FORZADO 2.5 2.5 31.100 9.9739 COMB. 1 1 1.5 21.6124 20.9197 VOZ ---------
COMBINACIN DE TONOS COMB. 2 1 1.5 116.0901 17.5562 SEALES NO PERIDICAS MSICA ---------
Tabla 3.3.3.1
170
La primera operacin es la FFT (transformada rpida de Fourier), para calcular la X(k) (seal en el dominio de la frecuencia). Una FFT nos da 2Nlog2(N) sumas y 4N/2log2(N) multiplicaciones. En segundo lugar hay que multiplicar X(K)W(k) y como el tamao del filtro W es de N, habr N multiplicaciones complejas, es decir 4N multiplicaciones reales. En esta misma operacin hay tambin una IFFT de N coeficientes, es decir 2Nlog2(N) sumas y 4N/2log2(N) multiplicaciones ms. En la tercera hay simplemente N restas. La cuarta operacin consta nicamente de una FFT para conseguir el error en el dominio de la frecuencia E(k), por lo tanto 2Nlog2(N) sumas y 4N/2log2(N) multiplicaciones ms.
Quinta operacin. Entrando ya en lo que es el algoritmo LMS se tiene que hacer una multiplicacin de dos vectores complejos X (k) E (k), un total de 4N multiplicaciones reales.
Despus de ver estos resultados que se muestran en la tabla 3.3.4.1, habr que compararlos con los obtenidos para el algoritmo forzado, y sacar as conclusiones de la reduccin de operaciones.
171
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. Total
Sumas f(N) f(1024) 2Nlog2(N) 20480 2Nlog2(N) 20480 N 1024 2Nlog2(N) 20480 ------------- ------6Nlog2(N)+N 62464
Productos f(N) f(1024) 4N/2log2(N) 20480 4N/2log2(N)+4N 4096+20480 --------------------------4N/2log2(N) 20480 4N 4096 12 N/2log2(N)+8N 69632
Tabla 3.3.4.1
Para hacer esto, se retrasan los valores del algoritmo forzado del no forzado (constrained-unconstrained), viendo as la diferencia de operaciones.
ALGORITMO FORZADO NO FORZADO SUMAS 10Nlog2(N)+3N-2 6Nlog2(N)+N 2 Nlog2(N)+2N-2 PRODUCTOS 20 N/2log2(N)+10N 12 N/2log2(N)+8N Nlog2(N)+2N
DIFERENCIA
Tabal 3.3.4.2
Se puede apreciar una clara mejora en lo que a operaciones se refiere, debido nicamente a quitar una FFT y una IFFT.
x 10
500
1000
3500
4000
figura 3.3.4.1
172
El ejemplo utilizado es el mismo que en casos anteriores, un filtro de N=1024 coeficientes. Est claro que el aumento de la diferencia de las operaciones ser proporcional con el aumento del nmero de coeficientes que se utilicen en este algoritmo, para ello, se pueden ver las figuras 3.3.3.1 y 3.3.3.2.
x 10
n u m e ro d ep ro d u cto s
500
1000
3500
4000
figura 3.3.4.2
173
174
ec. 3.4.1.1
as, para cada valor de la frecuencia k, se obtiene una potencia instantnea de la seal X. Al ser esta seal un vector en el dominio espectral, el primer coeficiente corresponde al valor de la seal de entrada de menor frecuencia y el ltimo al valor de la seal de entrada de mayor frecuencia. Se utiliza una herramienta para incluir el efecto de estimaciones de esta potencia a iteraciones anteriores si se quiere dar ms importancia al valor ms nuevo de la seal o por el contrario se quiere tener ms en cuenta lo que ha valido sta en muestras pasadas. Para definir esto anterior, se utiliza la siguiente ecuacin:
Pk (n) = Pk (n 1) + (1 ) X n (k ) en un instante n
ec. 3.4.1.2
k = 0,1,....,2 M 1
donde es una constante que se encuentra en el rango 0 < < 1 y n es la iteracin considerada. Esta constante, tambin llamada factor de olvido, controla la efectividad de la memoria del proceso descrito en la ecuacin anterior, la memoria de la seal de entrada a la aplicacin, X(k).
As con esto, se definir coeficientes llamado D(k): ahora otro vector de
175
As, cogiendo el valor de P(k) para la potencia media de la seal, el factor de convergencia , es reemplazado por un vector de N coeficientes:
(k) = D (k)
ec. 3.4.1.4
176
177
3.1765 dB
0.5
2.5
3.5
Figura 3.4.2.1 Combinacin de tonos 1 (50,150, 1000 y 3000 Hz) =0.001 y =0.5
4 5 tiempo (seg.)
Figura 3.4.2.2
178
3 tiempo (seg.)
Figura 3.4.2.3
0.5
1.5
2.5
3.5
Figura 3.4.2.4
179
Voz (=0.5
=0.8)
0.5
5.7065 dB
e rro r
-0.5
-1
-1.5
0.5
2.5
3.5
Figura 3.4.2.4
e rro r
1 23.3244 dB 0 0 1 2 3 tiempo 4 5 6
Figura 3.4.2.5
180
ALGORITMOS LMS EN LA FRECUENCIA CONCLUSIONES: El tipo de representacin de todas las seales ha sido la misma. Se ha decidido poner el error lineal que cada una de ellas incluso para las seales de voz y de msica. Como se coment al principio de este apartado, nicamente se han colocado los resultados obtenidos de las seales que ahora se pudieran analizar.
Al igual que en el resto de representaciones, los valores utilizados de y , son los que mejores resultados ofrecen, despus de haber dado varios valores a estos. Entre las primeras, se puede ver como el tono de 50Hz, tras una pequea inestabilidad al principio, llega a conseguir una cierta estabilidad y a su vez una cierta reduccin del eco, al cabo de aproximadamente 2 seg. En la siguiente seal tonos 1, aunque se pueda pensar en un primer vistazo que el resultado obtenido es mejor que el anterior, hay que observar el eje de tiempos, ya que aqu el tiempo de seal que se ha procesado es bastante mayor, por eso no se puede apreciar tanto la inestabilidad que ofrece la seal al principio, para luego permanecer al cabo de cuatro segundos en el valor de error residual. En tonos 2, la cosa empeora, la cancelacin del error cada vez va siendo menor, exponencialmente menor. Por eso no es posible apreciar cual es el valor el error residual. Para ello se debera dejar transcurrir durante un tiempo muy alto el algoritmo. No es cuestin de aventurarse a decir al cabo de cuanto tiempo se llegara a ese valor, pero presumiblemente es un tiempo demasiado alto. La seal que se ha creado a mano denominada tonos 3, que consiste en una combinacin de tonos de alta frecuencia, y que es habitual en todos los algoritmos anteriores, se ha omitido al igual que la seal de un tono suelto de alta frecuencia. Esto se debe a que no se ha podido conseguir para este tipo de seales ninguna cancelacin con ningn valor de ni de . La potencia de estas seales de entrada es constante, debido a su carcter peridico por ello no tiene sentido adaptar el factor de convergencia para este tipo de seal. As pues, la siguiente seal a analizar sera la msica, representada como ya se ha dicho anteriormente, por el error lineal que proporciona y no por la comparacin entre la seal estimada y la deseada. Si se ha elegido esta forma de representacin es sencillamente porque existe una cancelacin ms o menos clara, sobre todo si la se compara con la seal inicial, pero de ello se dar cuenta en el
Lorenzo Meler Ferraz
181
apartado de la comparativa. Aqu, en un principio, slo se observa el dato del error residual de algo ms de 3dB. con respecto a la seal de entrada. Algo similar ocurre cuando se introduce la seal de voz en la entrada, pero en este caso el error final disminuye an ms. Recordar que la potencia del error final a la que se est refiriendo continuamente, no es exclusivamente el valor ltimo de al potencia del error con respecto a la seal deseada, sino que es un promedio de las 300 ltimas muestras de esa potencia del error. Para terminar, se comentar la seal de ruido blanco, una seal que ofrece la mejor cancelacin de todas las seales que se han analizado con este algoritmo. Mejor en tiempo de cancelacin, donde a simple vista se puede decir que se cancela al cabo de dos segundos, como en el nivel de error residual, las dos propiedades ms importantes para caracterizar el algoritmo.
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 2.5 500Hz. --TONOS 1000Hz. --3000Hz. ---
3.1765
---
---
---
COMB. 1 ---
COMB. 3 ---
---
RUIDO 2.5
23.3244
Tabla 3.4.2.1
Lorenzo Meler Ferraz
182
3.1765 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.4.3.1
Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). LMS, SIN ADAPTAR (=0.000005)
CANCELACION DE ECO 1 0.8 0.6 2 0.4 0.2 e rro r 0 -0.2 -0.4 -2 -0.6 -0.8 -1 -3 -4 e rro r 21.6124 dB 1 0 -1 12.7411 dB 4 3
0.5
2.5
3.5
4 5 tiempo (seg.)
Figura 3.4.3.2
183
ALGORITMOS LMS EN LA FRECUENCIA Combinacin de tonos 2 (50, 100, 150 Hz). LMS, SIN ADAPTAR (=0.00005)
CANCELACION DE ECO 0.5 0.4 0.3 0.4 0.2 0.1 e rro r 0 -0.1 -0.2 -0.4 -0.3 -0.4 -0.5 -0.6 -0.8 0.2 116.0901 dB e rro r 0 -0.2 0.8 0.6 3.6184 dB
0.5
2.5
3.5
3 tiempo (seg.)
Figura 3.4.3.3
=0.5 y
0.5
1.5
2.5
3.5
SEAL ESTIMADA
Figura 3.4.3.4
184
MSICA
LMS, ADAPTADA
0.2 0.1 0 -0.1 -0.2
=0.8, =0.9
SEAL DESEADA
0.5
1.5
2.5
3.5
SEAL ESTIMADA
salida estimada
0.5
1.5 tiempo
2.5
3.5
Figura 3.4.3.5
=0.5 y
Figura 3.4.3.6 CONCLUSIONES: En este apartado habr que diferenciar bien entre las seales peridicas y las no peridicas, ya que el comportamiento para unas y para otras, comparndolas con los datos obtenidos para el LMS FORZADO, es totalmente diferente.
As, con las primeras seales peridicas, tono a 50Hz., se ve que al utilizar el factor de convergencia adaptado, se
Lorenzo Meler Ferraz
185
pierde precisin, nivel de error, ya que para el primero la potencia del error calculada es mucho menor que para el segundo (niveles en dBs de la figura 3.4.3.1), y tiempo de cancelacin tambin es mejor para el algoritmo sin incorporar la adaptacin de . Cuando se observa la figura 3.4.3.2, se ve como se ha mejorado en la comparacin de las dos seales, ya que ahora la diferencia del nivel residual del error es menor que en la figura 3.4.3.1. Tambin hay que tener en cuenta que en este caso, la seal utilizada en la adaptacin del factor de amortiguamiento es de mayor duracin, se ha utilizado un mayor tiempo de computacin a la hora de obtener los resultados, por ello, es presumible que el error alcanzado sea menor, pero tambin se puede observar que este tiempo extra que se ha utilizado, el descenso del error no ha sido muy pronunciado. La ltima seal peridica que se va a analizar es la denominada tonos2, representada en la figura 3.4.3.3. La mejora que se observa respecto a otras seales cuando se usa el algoritmo LMS sin adaptar, no se ve correspondida al usar la adaptacin de este factor. La reduccin para el segundo algoritmo es bastante mala, aprecindose a simple vista, sin casi ser necesario el mirar la potencia del error final que sealamos en todas las grficas. Mirando la figura 3.4.3.4 se comprueba lo que al principio de esta conclusin se avanzaba, se ha dado la vuelta en la mejora de los resultados, dado que ahora, adaptando la se consiguen unos resultados mucho ms satisfactorios. De hecho, tanto en esta figura, la voz, como en el sonido (figura 3.4.3.5), la similitud entre las seales cuando la se adapta este factor es mucho mayor que la similitud cuando no se adapta. Esto lo se poda suponer, ya que si en el anlisis por separado, en el primer algoritmo no se represent el error sino las seales como estn aqu, es debido a que el error no proporcionaba ninguna informacin, sin embargo, cuando se adapta, el error si que se puede interpretar, como se ve en las figuras 3.4.2.4 y 3.4.2.5. Al analizar la figura 3.4.3.6 se puede deducir tambin que hay una mejora al usar este tipo de algoritmo con respecto al anterior, pero tambin habr que fijarse que el tiempo analizado para la segunda seal de error es mayor, por lo que se ha podido llegar a un nivel mucho menor gracias a este tiempo, aunque parece difcil que en el tiempo que le queda al primero para llegar al tiempo del segundo pueda disminuir su potencia de error en 5dB.
186
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) LMS,SIN ADAP. LMS ADAP. LMS,SIN ADAP. LMS ADAP. LMS,SIN ADAP. LMS ADAP. LMS,SIN ADAP. LMS ADAP. LMS,SIN ADAP. LMS ADAP. LMS,SIN ADAP. LMS ADAP. 2.5 2.5 31.100 3.1765 COMB. 1 1 --21.6124
12.7411 (tras 3.6164 (tras 8 seg.) 5.5 seg.) SEALES NO PERIDICAS VOZ MSICA ------5.7065 (tras 3 seg.) ------5.1862 (tras 3 seg.)
Tabla 3.4.3.1
187
En la ecuacin 3.4.1.2, se realizan ms operaciones. En primer lugar una resta, entre 1 y el factor de memoria (una resta). La segunda operacin ser este resultado por el valor que result de multiplicar la seal de entrada por si misma, con lo cual se tendr una multiplicacin de un nmero complejo por un escalar (2N multiplicaciones). Otra operacin dentro de la misma ecuacin es la multiplicacin del factor de memoria por el coeficiente anterior del resultado de la P (2N multiplicaciones). Los resultados de estas dos multiplicaciones se tienen que sumar entre ellos para conseguir el resultado deseado(N-1 sumas complejas, 2(N-1)). Todas estas operaciones, exceptuando la resta, se realizan tantas veces como coeficientes tiene la seal de entrada muestreada X(k), es decir N (como se ha indicado en los parntesis); por lo tanto el resultado del nmero de operaciones en esta ecuacin es: 1 resta + 2(N-1) sumas = 2N-1 sumas; 2N multip. + 2N multip. = 4N multp.; La siguiente ecuacin sera la 3.4.1.3, en la que hay que hacer N divisiones, o lo que es lo mismo, multiplicar cada coeficiente por 10-1. Como en otras ocasiones, se omitir el clculo de ninguna divisin, debido a que en el DSP del que se dispone (dispositivo en el que se debern implementar estos algoritmos en un futuro), no se pueden hacer divisiones directamente. La ecuacin 3.4.1.4 utiliza 2N multiplicaciones, ya que hay que multiplicar por todos los coeficientes del vector resultante de las operaciones anteriores.
188
Como se ve, estas operaciones son adicionales a cualquiera de los algoritmos anteriores, ya que con ellas se obtiene lo que antes era una simple constante. En el cuadro siguiente, se ver el aumento en el caso genrico, es decir con N coeficientes y para el caso concreto de N=1024, como se ha estado haciendo hasta ahora con los dems clculos.
ALGORITMO FORZADO ADAPTATIV. SUMAS 10Nlog2(N)+3N-2 2N-1 5 Nlog2(N)+5N-1 PRODUCTOS 20N/2log2(N)+10N 10N 5N/2log2(N)+20N
TOTAL OP.
Tabla 3.4.4.1
La tabla 3.4.4.1 valdra igual para el algoritmo del no forzado, porque como ya se ha dicho antes, el nmero de operaciones extra que introduce esta adaptacin, no depende del algoritmo utilizado.
x 10
PRODUCTOS REALIZADOS POR CADA ALGORITMO forzado sin adaptar forzado adapatado
n u m e ro d ep ro d u cto s
500
1000
3500
4000
Figura 3.4.4.1
189
x 10
SUMAS REALIZADAS POR CADA ALGORITMO forzado sin adaptar forzado adaptado
500
1000
3500
4000
Figura 3.4.4.1
Despus de ver como aumenta el nmero de operaciones al utilizar la adaptacin y la mejora o no en la cancelacin del error, habr que decidir si se adopta esta solucin o no en futuras implementaciones en algn DSP. Lo que queda claro es que si las seales que se fuesen a emplear son peridicas como las que se han analizado aqu, no se debe utilizar esta adaptacin del factor de convergencia, ya que empeora la cancelacin del eco y adems da un aporte extra de operaciones que ralentizarn el trabajo en un futuro.
190
191
DIAGRAMA DE BLOQUES
func acumulamos un bloque nuevo x X Y FFT
x
ABS ^2
retardo
conjugar
x x
D FFT
Figura 3.5.1.1
192
INICIALIZACIN
W (0) = [0,...,0]
T
de longitud L
y (k ) = IFFT [ X (k )W (k )] W (k + 1) = W (k ) + [D(k )E (k ) X (k )]
Figura 3.5.1.2
Este algoritmo realiza una convolucin circular entre dos vectores. Al contrario que en los anteriores algoritmos, el trmino de error, aqu se calcula directamente en el dominio de la frecuencia. Aqu no se puede usar la parte del algoritmo forzado (tambin llamado gradient constrain) que lo diferenciaba del no forzado, ya que slo se tienen L coeficientes en el dominio de la frecuencia. Antes se realizaba la convolucin circular con solapamiento de muestras para obtener la convolucin lineal y la correlacin. Ahora directamente se realiza la convolucin circular. Contrastando con anteriores algoritmos adaptativos, el vector de error en este caso es calculado directamente en el dominio frecuencial, aunque sera posible llevar a cabo la misma operacin en el dominio temporal. No se utiliza el gradient constrain 3.2.1.1 del presente captulo), porque slo coeficientes en el dominio de la frecuencia que L=N/2 y N es el nmero de coeficientes que (ver figura se tienen L (se recuerda tenan todas
193
las seales en anteriores algoritmos) y estos estn relacionados con los correspondientes coeficientes en el dominio temporal a travs de una FFT de L puntos. Desde el punto de vista de la implementacin, las transformadas de Fourier (FFTs), son colocadas slo tras haber acumulado L muestras de la seal de entrada. Pero es til imaginar que las FFTs son calculadas para cada nueva muestra de datos, en vez de que la frecuencia de muestreo se haga ms pequea, en concreto en un factor de L. De este modo, la FFT opera como un bloque de filtros pasobanda, y este algoritmo puede ser visto como un caso especial de un filtro adaptativo de subbanda. Aunque el algoritmo de convolucin circular fue originalmente diseado para un clculo de FFTs por bloque de datos (anulando de esta forma la superposicin), pueden ser sin embargo calculadas con una mayor frecuencia de muestreo para reducir la distorsin producida por el aliasing.
194
e rro r 0.5
117.3597 dB 0
0.5
2.5
3.5
Figura 3.5.2.1
195
1.2
0.5
2.5
3.5
1.5 e rro r
0.5
114.3150 dB
0.5
2.5
3.5
Figura 3.5.2.3
196
1.2
0.5
2.5
3.5
Figura 3.5.2.4
Tonos 3
2.5
e rro r
1.5
0.5 177.9718 dB
0.5
2.5
3.5
Figura 3.5.2.5
197
msica =1 y =0.5
CANCELACION DE ECO 0.1
0.09
0.08
0.07
0.06 e rro r
0.05
0.04
0.03
0.5
2.5
3.5
Figura 3.5.2.6
voz =1 y =0.5
CANCELACION DE ECO 1.4
1.2
0.5
2.5
3.5
figura 3.5.2.7
198
3.5
2.5 e rro r
1.5
0.5 65.5391 dB 0
0.5
2.5
3.5
Figura 3.5.2.8
CONCLUSIONES: Antes de empezar a comentar y sacar conclusiones, habr que hacer una pequea apreciacin o recordatorio, y es que este algoritmo, a priori, nos va a proporcionar bastante inestabilidad a la hora de cancelar el eco, ya que bien es sabido que aqu estamos utilizando la convolucin circular en vez de la lineal y la correlacin, que es lo que se debera usar. Este perjuicio no viene a cambio de nada, lo que nos proporciona, como veremos en el captulo 3.5.4 es una reduccin considerable en el nmero de operaciones, que recordando, es una de las objetivos de este proyecto, optimizar el nmero de operaciones. Por lo tanto se tienen dos caractersticas, la primera el nmero de operaciones, la segunda las caractersticas de la cancelacin de la seal de eco (la estabilidad, rapidez con la que se cancela y el residuo de error).
Sorprendentemente, al observar las grficas ocurre algo totalmente inesperado, y es que la cancelacin en todas y cada una de las seales es rpida y llega a alcanzar niveles de cancelacin mucho mayores que en casos anteriores. Al contrario de lo que se presupona por el echo de que este algoritmo era demasiado inestable por realizar la convolucin circular y todo el detrimento que ello
Lorenzo Meler Ferraz
199
conllevara, se han conseguido resultados sorprendentemente aceptables. Los niveles de potencia que aparecen en las figuras han sido calculados haciendo la media de los ltimos 300 valores del vector de la potencia de error residual de cada seal. Todas las seales han sido analizadas durante tres segundos y al cabo de este tiempo se ha sacado la media anteriormente mencionada de la potencia de ruido. Otro caracterstica que habr que mencionar es que los valores de las constantes y son las mismas para todos las seales analizadas. Entrando a valorar seal por seal, se ve como para las seales peridicas, para todas sin excepcin, se consigue una reduccin del error enorme; si que es verdad que a medida que se va aumentando la frecuencia se consiguen reducciones an mayores, pero an con todo la reduccin para la frecuencia ms baja (50Hz.) alcanza al cabo de tres segundos valores superiores a 100 dB. Para las combinaciones de tonos, ocurre algo similar, si la combinacin est compuesta por frecuencias bajas, no se cancela tanto que si est compuesta por frecuencias altas y la seal compuesta por frecuencias de todo tipo cancela un valor intermedio. Pero se vuelve a recalcar que los valores alcanzados de la potencia de error son muy aceptables para cualquier seal peridica que se introduzca en el sistema. Pero lo sorprendente viene a la hora de analizar las figuras que proporcionan las seales no peridicas. Si se echa la vista a tras para recordar otros algoritmos, se ver que el que mejor reduca estas seales estaba en el dominio del tiempo, y se trata del algoritmo BNLMS, recordando LMS Block Normalizado (ver figuras 2.4.3.6 y 2.4.3.7 del captulo 2 de este trabajo). Los niveles de reduccin de eco han disminuido considerablemente con el que haca en el algoritmo que inicialmente se consideraba el mejor para cancelar este tipo de seales. De las tres seales peridicas, la mejor cancelada es, como de costumbre, el ruido blanco, alcanzando al cabo de 3 segundos (tiempo que se ha analizado para todas las seales), -61 dB de potencia de error con respecto a la seal de entrada. Esto es menos significativo que lo que ocurre con la seal de msica, ya que esta llega a alcanzar niveles muy cercanos a los que llega el ruido blanco y esto es la primera vez que ocurre. En todos los algoritmos anteriores, el que ms se reduca con diferencia era el
200
es
que
aqu
no
existe
casi
esa
La seal de voz, como de costumbre, se lleva la peor parte de la cancelacin, pero an as, reduce en -21dB. la seal de entrad al cabo de 3 segundos. Hasta ahora, valores de error ms elevados que los alcanzados aqu para la seal de voz, se han considerado aceptables, as que aqu, se aceptan todos y cada uno de los valores que se han conseguido en reduccin del error.
DATOS:
50Hz. TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN ESTIMADO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) 1 500Hz. --TONOS 1000Hz. --3000Hz. 0.5
117.3597
---
---
184.5226
COMB. 1 0.5
COMB. 3 0.5
114.3150
177.9716
VOZ 2.5
RUIDO 1.5
21.9357
61.0012
65.5391
Tabla 3.5.2.1
201
0.03
0.025
1
0.02 e rro r
e rro r
0.015
0.5
0.01
0.005 31.1000 dB
117.3597 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.1
202
0.3
1.2
0.25
0.2 e rro r
e rro r
0.8
0.15
0.6
0.1
0.4
0.05
115.1189 dB
0.2 184.5226 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.2
Combinacin de tonos 1 (50, 500, 1000 y 3000 Hz). LMS FORZADO (=0.000005)
CANCELACION DE ECO 0.9 0.8 0.7 0.6
1.5 2 2.5
e rro r
0.5 0.4
1 e rro r
0.5
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.3
203
Combinacin de tonos 2 (50, 100, 150 Hz). LMS FORZADO (=0.00005) CONVOLUCIN CIRCULAR =1 y =0.5
CANCELACION DE ECO 1.4
0.4 0.35 0.3 e rro r 0.25 0.2 0.15 0.1 0.05 0 116.0901 dB
0.2 109.8742 dB 0 e rro r 1
0.8
0.6
0.4
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.4
Combinacin de tonos 3 (1000, 2000, 3000 Hz). LMS FORZADO (=0.000001) CONVOLUCIN CIRCULAR =1 y =0.5
CANCELACION DE ECO 3
1.4 1.2 1
e rro r 1.5 2
e rro r
0.2 0
77.4374 dB
0
177.9718 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.5
204
2 salida estimada
0.8
0.6
0.4
0.2 21.9357 dB
0.5
2.5
3.5
Figura 3.5.4.6
MSICA
0.09
0.08
0.07
e rro r
0.06
0.05
salida estimada
0.04
0.03
0.5
2.5
3.5
Figura 3.5.4.7
205
1.2
1
3
0.8 e rro r
e rro r
2.5
0.6
1.5
0.4
1
0.2
18.3138 dB
0.5
65.5391 dB
0.5
2.5
3.5
0.5
2.5
3.5
Figura 3.5.4.8 CONCLUSIN: Para realizar la comparativa entre estos dos algoritmos, ha sido necesario volver a representar la seal de error del algoritmo LMS FORZADO, ya que anteriormente la figura que se decidi colocar no estaba en valor absoluto y ahora es conveniente hacerlo as para una mejor comparacin entre cancelaciones de error.
Solventado este problema pasamos a analizar y observar esta comparativa y lo hacemos por la figura 3.5.4.1, donde como siempre, estn representadas las seales de error para un tono de 50Hz. La mejora es substancial, el tiempo representado para las dos seales es el mismo, por lo tanto se puede apreciar a simple vista la mejora en el tiempo de cancelacin. Pero lo ms interesante es el nivel final de error residual (que est representado en decibelios), ya que utilizando el algoritmo que a priori dara una mayor inestabilidad, conseguimos una cancelacin final mucho mejor. En la figura 3.5.4.2 se puede ver como no estn representadas el mismo tipo de seal; para el algoritmo LMS FORZADO utilizamos una seal de entrada de 1000Hz., mientras que para la convolucin circular representamos un tono de 3000Hz.; si se decide representarlas juntas para luego hacer el anlisis como si fueran la misma es porque se considera que lo que de verdad influye en este anlisis es si la frecuencia utilizada es alta o baja. Despus de esta introduccin aclaratoria, la conclusin que se saca de una mera observacin sera la de una mejora para frecuencias elevadas. El tiempo que tarda en llegar a su nivel residual es mayor (como se observa en la figura 3.5.4.2), pero si se observa el valor de la potencia de
206
la
mejora
de
la
se
En la figura 3.5.4.3, se puede ver algn piquito de inestabilidad de la que se mencionaba al introducir este algoritmo, pero estos picos son mas frecuentes y abruptos para el algoritmo LMS FORZADO. Otra vez es sorprendente los resultados que ofrece este algoritmo, porque si cuando se observa por separado, sorprende que la cancelacin sea tan aparentemente buena, ms lo hace an si cabe, cuando se observa con otros algoritmos que en un principio daban resultados aceptables pero que ahora se plantea la duda de si aquellos resultados deberan haber sido o no aceptados. Pero de esto no se tratar ahora, el apartado implica sacar unas conclusiones de nuestra mera observacin de las figuras y datos de esta simulacin de cancelacin de ecos. La representacin que se ha hecho de las seales no peridicas no sigue la lnea que se segua en comparaciones anteriores, pero, como ya se ha dicho, este caso no es como los anteriores. De todas las restantes (voz, msica y ruido blanco), para el algoritmo actual, convolucin circular, se ha representado la seal de error de cancelacin y para el algoritmo LMS FORZADO las seales de voz y msica se ha puesto la comparativa de la seal deseada y estimada y para el ruido blanco la seal de error. Si que es verdad que colocando una representacin del resultado de una seal de un algoritmo con otra representacin diferente para compararlas, resulta bastante difcil, pero se opt por esta opcin para demostrar la gran diferencia que existe entre los resultados de los dos algoritmo. Para el primero, la cancelacin de eco se consideraba que ni exista; el LMS FORZADO, no llegaba en ningn momento a ser capaz de cancelar el eco (hay que recordar que si que consegua una similitud entre las dos seales), sin embargo con el nuevo algoritmo si que cancela este eco. Por eso se decidi colocar esta representacin, para mostrar la gran diferencia que existe entre estos dos algoritmos. En la figura 3.5.4.8 se muestra la comparacin de la cancelacin del ruido blanco para los dos algoritmos, y como para anteriores seales, no hay posible parangn entre las dos, nicamente mirando la potencia del error residual con respecto a la seal de entrad que aparece escrita en la figura.
207
50 Hz. TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) TIEMPO DE CANCELACIN DEL ECO (seg.) POTENCIA DEL ERROR RESIDUAL (dB.) LMS FORZADO LMS C. CIRC. LMS FORZADO LMS C. CIRC. LMS FORZADO LMS C. CIRC. LMS FORZADO LMS C. CIRC. LMS FORZADO LMS C. CIRC. LMS FORZADO LMS C. CIRC. 2.5 1 31.100 117.3597 COMB. 1 1 0.5 21.6124 114.3150 VOZ --2.5 --21.9357
3000 Hz. 1 0.5 111.4538 184.5226 COMB. 3 1 0.5 114.5435 177.9718 RUIDO --1.5
COMBINACIN DE TONOS COMB. 2 1 0.5 116.0901 109.8742 SEALES NO PERIDICAS MSICA --1.5 --61.0012
Tabla 3.5.4.1
208
209
El siguiente cuadro muestra todas las operaciones que se deberan realizar, en funcin de N y no de L, teniendo en cuenta lo dicho anteriormente, que N=2L.
Sumas f(N) 2N/2log2(N/2) 2N/2log2(N/2) N-2 2N/2log2(N/2) N-2 6N/2log2(N/2)+2N -4 Productos f(N) 4N/4log2(N/2) 4N/4log2(N/2) 4N/4log2(N/2)+2N 3N 12N/4log2(N/2)+5N
Primera op. Segunda op. Tercera op. Cuarta op. Quinta op. total
Tabla 3.5.4.1
Ahora se har la comparativa con el algoritmo LMS forzado y con el LMS no forzado en la tabla 3.5.4.1. En esta tabla se muestra la funcin que queda para cada algoritmo, dejndola en funcin de N, que ser el nmero de coeficientes que tiene el filtro a adaptar, aunque en este ltimo caso a este filtro no le adoptemos un tamao de N sino de L. La columna donde salen nmeros, se ha sustituido N por 1024, como en todos los casos anteriores, y en la lnea azul, se muestra la diferencia, as se puede hacer una idea del mejoramiento o empeoramiento conseguido con este algoritmo en lo que concierne a las operaciones (multiplicaciones y sumas).
ALGORITMO FORZADO CONV. CIRC SUMAS 10 Nlog2(N)+2N-1 6N/2log2(N/2)+2N-4 7 Nlog2(N)+3 10540 7 29692 75715 PRODUCTOS 20 N/2log2(N)+5N 12 N/4log2(N/2)+5N 7Nlog2(N) 11264 0 32768 79872
DIFER.
Tabla 3.5.4.2
ALGORITMO NO FORZADO CONV. CIRC. SUMAS 6Nlog2(N)+N 6N/2log2(N/2)+2N-4 3/2Nlog2(N)-N+4 62464 29692 32772 PRODUCTOS 12 N/2log2(N)+4N 12 N/4log2(N/2)+5N 3/2Nlog2(N)-N 69632 32768 36864
DIFER.
Tabla 3.5.4.3
Como se puede ver, los resultados son bastante sorprendentes, la reduccin en el nmero de operaciones es enorme, ganando de esta manera suficiente rapidez como para plantearse si es conveniente o no el utilizar este algoritmo, basando esto en los resultados comparativos de las seales analizadas en el apartado anterior.
Lorenzo Meler Ferraz
210
x 10
SUMAS REALIZADAS POR CADA ALGORITMO algoritmo forzado algoritmo no forzado algoritmo "convolucin circular"
numero de sumas
-1
500
1000
3500
4000
Figura 3.5.3.1
x 10
5
PRODUCTOS REALIZADOS POR CADA ALGORITMO algoritmo forzado algoritmo no forzaado algoritmo "convolucin circular"
500
1000
3500
4000
Figura 3.5.3.2
211
EFOURIER=Y-YE; efourier=miifft(EFOURIER,L); for m=1:L E(m+(n-1)*M)=EFOURIER(m); e(m+(n-1)*M)=efourier(m); e_db(m+((n-1)*M))=10*log10(abs(real(e(m+((n1)*M))))/abs(ysalida((((n-1)*M)+u)))); end for m=1:L P(m)=P(m)*alfa+(1-alfa)*((abs(X(m)))^2); end D=1./P;
Lorenzo Meler Ferraz
212
FI_TOTAL=D.*conj(X).*EFOURIER for m=1:L%actualizo la H estimada, en frecuencia HE(m)=HE(m)+2*mu*FI_TOTAL(m); end %actualizar x con el metodo almacenamiento %cogiendo de L en L muestras for u=1:L x(u)=func(u+(n*M)+M); end de solapamiento-
%esto simplemente lo hacemos para sacar por pantalla los coeficientes en dominio del tiempo he=miifft(HE,L); for u=1:L he_total(u+(n-1)*M)=he(u); e_relativo((u+(n-1)*M))=(h(u)-he(u))/(h(u)); end end
213
CONCLUSIN
CONCLUSIN
Al concluir este trabajo e intentar cuadrar todos los aspectos e informacin que se ha ido obteniendo, se da uno cuanta de la gran extensin de conocimientos que se ponen a disposicin de los dems en este texto. He aprendido muchas cosas, cosas que durante el transcurso de esta carrera haba pasado por alto, no le haba dado la importancia o no haba dispuesto del tiempo necesario para entender todos y cada uno de los conceptos que deberamos aprender. Otro aspecto positivo que encuentro radica en que al profundizar en un tema como este, los filtros adaptativos, empezar desde el inicio, desde los primero pasos como es la transformada de Fourier o una simple convolucin, uno se da cuenta de la grandeza del aprendizaje, de todo el trabajo que existe detrs de cualquier hecho insignificante que ocurre a nuestro alrededor, y de cmo se recurre y se necesita de cualquier estudio realizado en otros tiempos que no conocieron el desarrollo tecnolgico que ahora tenemos. Este trabajo no ha sido exclusivamente un trabajo de recopilacin o de sntesis, donde se han recogido experiencias ajenas, tambin hay un pequeo toque de anlisis o de investigacin que es lo que lo ha hecho ms interesante. Este anlisis ha consistido en programar en MATLAB ciertos algoritmo que nos llevaban conseguir nuestro objetivo final que era la cancelacin de ecos. El programar estos algoritmos, hacer simulaciones para ms tarde realizar una comparativa entre los diferentes algoritmos para encontrar el ms apropiado para nuestro objetivo, ha sido el trabajo de laboratorio. Ha habido una gran cantidad de informacin recopilada, se han programado algoritmos mas o menos antiguos (convolucin y transformada de Fourier) y algoritmos ms o menos modernos (LMS en la frecuencia como convolucin circular). Quizs el lado amargo de este trabajo est en la falta de tiempo para darle un acabado mucho ms extenso, unas conclusiones a los resultados obtenidos mucho ms claras. Para ello habra que realizar un nmero de pruebas ms extenso, aunque tiene que quedar claro que estas se han hecho con seales de muy diferentes caractersticas, vase, voz, msica, ruido, tonos, combinacin de tonos. de En cada captulo en el que se ha hecho una comparacin los resultados obtenidos con cada algoritmo, se ha
214
CONCLUSIN
colocado una conclusin, que en modo de resumen se comentan ahora. Hay que recordar que para cualificar unos resultados de buenos o malos, escoger un algoritmo u otro para utilizarlo en el laboratorio, se analizan varias caractersticas, entre se recuerdan estas tres tiempo que tarda en llegar a nuestro valor residual del error, el valor final de este error y estabilidad. Adems, habr que tener en cuenta el nmero de operaciones (productos y sumas). Como ya se dijo en las conclusiones del primer algoritmo a modo introductoria, hay que recordar que los niveles de cancelacin de error que la ITU proporciona para considerarlos aceptables, estn en una reduccin de -40dB. Esto, como se ha visto a lo largo del trabajo no se cumple en todos los casos, pero no por ello se ha de considerar que no se ha conseguido el objetivo de reduccin, ya que hay que tener en cuenta que los valores de las seales de entrada estn normalizados (amplitudes ms bajas), y por tanto la potencia del error ser ms difcil de conseguir. Las primeras comparaciones que se hacen son para los algoritmos en el dominio del tiempo, LMS vs. NLMS y LMS vs. BLMS y BLMS vs. BNLMS. En la primera comparacin, no puede haber discrepancia, porque aunque se concluye que se realizan un nmero de operaciones mayor en el segundo que en el primero, la estabilidad y la rapidez de cancelacin que proporciona para seales no peridicas este segundo algoritmo, subsana el nmero de operaciones extra que se realizan. Si tenemos que sacar conclusiones de la comparacin entre el algoritmo LMS y el BLMS, resulta difcil decantarse por uno u otro en cuanto a las caractersticas de reduccin de eco, pero cuando se entra a ver el nmero de operaciones que debe realizar cada uno de los algoritmos, la decantacin est clara, seguiramos con el algoritmo clsico. La siguiente comparacin entre seales canceladoras de eco en el dominio temporal (y por ltimo), sera entre BLMS vs. BNLMS. La mejora es notable, incluso respecto al NLMS, y el incremento de operaciones no se hace excesivo. Lo mejor de este algoritmo es la gran reduccin de error que proporciona para seales como la msica o la voz que hasta ahora resultaba tan difcil de cancelar, que por otra parte son las seales que, como ya se ha dicho infinidad de veces, son las ms importantes de cancelar. en Una vez sacadas las conclusiones para los algoritmos el dominio del tiempo, se pasa al dominio de la
215
CONCLUSIN
frecuencia donde se encuentran las siguientes comparaciones: LMS FORZADO vs. LMS NO FORZADO, LMS FORZADO con y sin adaptativa y por ltimo LMS FORZADO vs. LMS COMO CONVOLUCIN CIRCULAR. La caracterstica que proporciona la primera comparacin est en el hecho de que el segundo algoritmo realiza menos operaciones que el segundo. Esto es lo primero que se tiene en cuenta a la hora comparar estos dos algoritmos. Desde un primer momento ya se puede imaginar que esta reduccin en el nmero de operaciones vendr acompaado de algn empeoramiento en las caractersticas de la cancelacin del eco; y as es, para todas las seales se muestra una cierta inestabilidad en la cancelacin y tambin que el nivel final del residuo de error es mayor para el algoritmo LMS NO FORZADO. Aunque la reduccin del error no llegue a los niveles a los que llegaba el algoritmo LMS FORZADO, estos, siguen siendo bastante buenos, incluso para la seal de ruido blanco la cancelacin se puede considerar que es igual, dado que por las caractersticas de esta seal, la inestabilidad se hace inapreciable. Para las seales no peridicas (las que se han considerado anteriormente como las ms importantes), no se aprecia a simple vista que haya habido ninguna merma exagerada en ninguna de las caractersticas de cancelacin de eco, de hecho, se considera que siguen sin cancelar (no hay reduccin de eco clara, aunque si una similitud entre las seales). As pues, si se tuviera que elegir entre estos dos algoritmos escogeramos el LMS NO FORZADO. Por suerte no slo tenemos estos dos algoritmos para elegir, sino que ahora lo que se puede hacer es adaptar el factor de convergencia, y eso es lo que se hace en el siguiente algoritmo LMS CON ADAPTATIVA. Se sabe que al adaptar este factor se van a utilizar un nmero no muy grande operaciones extras, as que en este caso nicamente se decidir usar este en el caso de una mejora clara en las caractersticas de cancelacin. Al igual que en otras comparaciones anteriores, los resultados son muy dispares dependiendo de las seales utilizadas. As, en este caso, se puede observar que hay un empeoramiento cuando se miran las seales peridicas, sin embargo, al analizar las no peridicas, es clara la mejora, de hecho, por esa razn ahora se colocan por primera vez en el dominio de la frecuencia el error lineal de las seales de msica y voz. Por lo tanto, queda claro que hay una disminucin grande entre adaptando el factor de convergencia para seales no peridicas, y esto quiere decir que sera muy beneficioso utilizar este algoritmo para nuestro propsito.
216
CONCLUSIN
La ltima comparacin, y con ella la penltima conclusin, llega a travs de utilizar la convolucin circular, en vez de la lineal y la correlacin. Aqu, el nmero de operaciones se reduce considerablemente, dado que como se explica en la introduccin del algoritmo, se trabaja con bloques de L que recordemos L=N/2, y siempre en el dominio e la frecuencia. Las conclusiones sobre esta comparacin son realmente sorprendentes, porque se ha conseguido una cancelacin realmente buena comparndola con cualquier otro algoritmo en el dominio de la frecuencia. Pero lo que ms llama la atencin, no es su buena cancelacin del eco, que por otra parte es la mejor, sino que adems es el algoritmo que menos operaciones necesita de todos los vistos en este proyecto, incluidos los que trabajan en el dominio del tiempo. La cancelacin para seales peridicas (los tonos y combinacin de los mismos), hacen) es bastante similar a otras cancelaciones obtenidas, pero las que se han conseguido para seales no peridicas como la voz y la msica son verdaderamente buenas, no puede haber comparacin con ninguna de las representaciones que se han hecho con anterioridad, ni siquiera con el BNLMS que hasta el momento nos ofreca los mejores resultados, eso si a costa de un incremento considerable en el nmero de operaciones. Con este algoritmo se consigue una reduccin enorme del nmero de operaciones y ofrece la mejor cancelacin conseguida en todo este estudio de algoritmos adaptativos para la cancelacin de ecos. Uno de los aspectos que quedara por analizar sera conseguir esos valores que hacen optimizar al mximo este ltimo algoritmo que nos proporcionaba tan buenos resultados. Al ver todos los algoritmos y sus comparaciones, en un principio parece claro quedarnos con la ltima implementacin dada su ventaja con respecto a las operaciones, si es en eso en lo que se necesita mejorar. Despus de la realizacin de este proyecto y de la observacin que he llevado a cabo de los resultados obtenido, me atrevo a sacar las siguientes apreciaciones; - para mejorar la estabilidad en la reduccin del eco, es necesario normalizar el factor de convergencia con respecto a la potencia de la seal de entrada. - Si lo que se desea es minimizar el tiempo que tarda en llegar al valor residual, deberemos aumentar el factor de convergencia. - Para obtener un valor ms pequeo en el nivel residual del error, es necesario reducir el valor del factor de
217
CONCLUSIN
convergencia y esperar que transcurra ms tiempo que en el caso anterior. Est claro que lo que se ha podido simular en el ordenador con el entorno de MATLAB no corresponde a lo que pueda ocurrir en la realidad, cuando estos algoritmos se implementen en el DSP y se hagan pruebas en el laboratorio de CAR, pero est claro que la ventaja que nos proporciona la simulacin es la ganancia de tiempo. Entre las cosas que por falta de tiempo no se han podido concluir, est la comparacin de datos con el algoritmo LMS en la frecuencia como convolucin circular, adaptando el factor de convergencia segn la potencia de la seal, con otras seales como las obtenidas con el BNLMS, pero parece claro que lo conseguido con la convolucin circular son mejores resultados que los que proporcionaba el algoritmos de bloques. Adems, los valores de y han sido los mismos para todas las seales, es decir, no se ha intentado encontrar aquellos valores que hacen conseguir los mejores resultados; esto no se ha hecho porque los resultados obtenidos eran suficientemente buenos como para llegar a las conclusiones que se han llegado. Los resultados que a la fecha se consiguieron no eran nada satisfactorios, lo que nos lleva a pensar que no se lleg a hacer una programacin exacta del mismo.
Concluir esta conclusin diciendo que como cualquier trabajo que se realice, se acaban aprendiendo cosas, se adquieren conocimientos que en cualquier caso nunca son desdeables por mucho que se diga que no van a ser utilizados en un futuro. Esa es la sensacin agradable que se queda despus de un proyecto por el que se ha dado un tiempo de tu vida. Nuestra recompensa se encuentra en nuestro esfuerzo y no en el resultado. Mahatma K. Gandhi
218
BIBLIOGRAFA
BIBLIOGRAFA
PGINAS WEB:
http://www.wikipedia.com (30-06-2005) http://www.tsc.uc3m.es/docencia/SyC/conv_TD/ (30-06-2005) http://physionet.cps.unizar.es/~eduardo/docencia/tds/libroh tml/sd1.htm (16-06-2005) http://iie.fing.edu.uy/ense/asign/sisdsp/proyectos/2001/gru po_h_canc_eco/[4]#[4] (05-06-20005) http://physionet.cps.unizar.es/~eduardo/docencia/tds/libroh tml/sd1.htm (30-06-2005) http://www.control.isy.liu.se/~fredrik/myrefs.html (30-06-2005) http://mat21.etsii.upm.es/ayudainf/aprendainf/Matlab61/matl ab61pro.pdf (30-06-2005)
ARTCULOS:
John J. Shynk, Frecuency-Domain and Multirate Adaptive Filtering, IEEE Signal Processing, volumen 9, pginas 15 a 37; 1992 Yuu-Seng Lau, Zahir M. Hussain y Richar Harris, Performance of adaptive filtering algorithms: A comparative study; Australian Telecommunications Networks and Applications Conference (ATNAC), 2003 Apuntes asignatura Comunicaciones Digitales, Pedro Ramos Lorente, EUPT, 2005.
LIBROS:
filter
theory;
Prentice
Hall
Alan V. Oppenhein, Alan S. Willsky, Ian T Young; Seales y Sistemas; Prentice Hall; 1993. Alan V. Oppenhein, Ronald W. Schafer, John R. Back; Tratamiento de seales en teimpo discreto; Prentice Hall 2 edicin, 1999
Lorenzo Meler Ferraz
219
BIBLIOGRAFA
Ral Martn Ferrer; Implementacin de un sistema C.A.R. con conformado digital; ITTSE EUPT; 2002. Carlos Prez Peralta; Simulacin mediante Matlab de sistema de control activo de ruido; ITTSE EUPT; 2004. un
Ricardo Marn Prez; Desarrollo de una herramienta software para el tratamiento digital de seales reales basadas en el DSP TMS320C32; ITTSE EUPT; 1999.
220