Hola Hernán,
Qué tal, tanto tiempo?
Muy interesante lo que nos contás. La verdad, nunca me habia dado cuenta
que si padeas con ceros las señales para hacerlas más largas que la suma
de las longitudes originales, la convolución circular se convierte en no
circular, y la FFT sirve para calcularla. Buen truco. De cualquier
manera, hay algunas cosas a tener en cuenta al hacer como nos contás:
- Es común calcular la FFT de las señales de a pedazos, con ventanas
deslizantes. En este caso, no se puede hacer esto. (ya sé que lo sabés,
pero igual lo aclaro.)
- La técnica no te sirve si querés procesamiento online (o sea empezar a
generar la salida sin tener la entrada completa). Para hacer
procesamiento online se puede usar el pasado de las señales, pero no el
futuro. En particular, el procesamiento en tiempo real siempre es
online. Y es cuando la performance más nos interesa.
- Si la respuesta al impulso tiene pocos coeficientes distintos de cero
(p.ej. menos de 20 o 25), y la señal es larga (p.ej. más 4 o 5 minutos),
puede ser más rápido una convolución optimizada.
Estás de acuerdo?
Saludos,
Juan Vuletich
Hernán Ordiales escribió:
>
> queria compartir en esta lista este post que hice en uno de mis blogs
> y de paso ver si esta lista revive o no (de paso lo revisan, je!)
>
> alguna crítica, comentario o sugerencia?
>
> también estoy evaluando hacer una versión en c++ (que será GPL) cuando
> tenga un poco más de tiempo.
>
>
> Convolución circular rápida (aplicación en reverbs)
> <http://audiores.uint8.com.ar/blog/?p=23>
>
> Si consideramos un recinto o un determinado lugar como un sistema LTI
> <http://en.wikipedia.org/wiki/LTI_system_theory>[1] y de alguna forma
> obtenemos su respuesta impulsiva
> <http://en.wikipedia.org/wiki/Impulse_response>, podemos convolucionar
> esta última con cualquier grabación[2] y obtener como resultado como
> se "escucharía" en ese lugar.
>
> ...
>
> Pero a medida que los vectores son más largos (más muestras, más
> segundos de duración por ejemplo) esta operación cada vez tarda más.
>
> Una forma de hacerlo mucho más rápido (la diferencia es muy grande),
> es pasar todo esto al dominio de la frecuencia, donde la convolución
> <http://es.wikipedia.org/wiki/Convoluci%C3%B3n> se "transforma" en una
> multiplicación, operación computacionalmente mucho más sencilla[3].
>