El famoso http://www.musicdsp.org/files/Audio-EQ-Cookbook.txt ofrece un conjunto de fórmulas de cálculo de filtro biquad [real] que generalmente funcionan bien.
Sin embargo, cuando la frecuencia del filtro se acerca a la frecuencia de Nyquist, la especificación Q (ancho de banda) de un filtro se distorsiona mucho, por lo general, se reduce mucho (aunque el autor mencionó que realizó un pre-warping necesario).
Estoy buscando fórmulas de filtro que no tengan una distorsión de ancho de banda tan fuerte. Necesito filtros de pico / campana, paso de banda, paso bajo, paso alto, estante alto y muesca. Sé que esto se puede hacer ya que anteriormente compré fórmulas de filtro de pico / campana / paso de banda con menos distorsión, pero todavía no son perfectas y necesito otros tipos de filtros.
Entonces, también estoy dispuesto a pagar por la solución si el precio es correcto.
Alternativamente, si uno pudiera señalarme un algoritmo de optimización que funcione con filtros de dominio Z, también sería genial. Desafortunadamente, los algoritmos de optimización más habituales no funcionan bien en el dominio Z: no pueden optimizar un conjunto de parámetros para que coincida con una respuesta de frecuencia deseada (probablemente debido a las funciones periódicas utilizadas para calcular la respuesta de frecuencia).
fuente
Respuestas:
Aquí hay un vistazo rápido a cómo se pueden ver los 5 grados de libertad para el ecualizador paramétrico. Es mi opinión sobre lo que Knud Christensen de tc electronic ideó hace aproximadamente una década en una convención de AES y esta patente .
así que olvídate del Cookbook (y los problemas de Q y el ancho de banda que contiene) y considera (en el plano s) el EQ paramétrico como la suma de un filtro de paso de banda (con unQ valor) en paralelo con un cable:
eso son 4 perillas para girar. una perilla más para agregar (sin aumentar el orden del filtro) y terminaremos agregando parámetros más independientes.
entonces lo que Knud hace aquí es reemplazar ese "cable" (ese final "1 "en la función de transferencia) con un prototipo de filtro de estantería que debe tener los mismos polos, los mismosQ y ω0 como el BPF, por lo que el denominador es el mismo. La función de transferencia de ese estante es:
dóndeR ≜10t i l t20 y t i l t es el diferencial de ganancia de la plataforma en dB. Esto es lo que compensa la ganancia en Nyquist para ser diferente de la ganancia en DC. Después de la transformación bilineal, Nyquist se ve impulsado port i l t dB y la ganancia en DC permanece sin cambios. Como elresi parámetro de impulso, el t i l t El parámetro puede ser positivo o negativo. sol0 0⋅ R es la ganancia lineal en Nyquist.
pon todo junto y obtienes:
no importa cómo lo veas, esto tiene 5 grados de libertad y esos 5 coeficientes biquad están completamente definidos a partir de estos 5 parámetros. no importa si haces un mapa desdes a z usando la transformación blinear o la regla trapezoidal (efectivamente la misma cosa) o cualquier otro método que no cambie el orden del filtro. puede que tengas que falsificar la definición deQ o ancho de banda, puede que tenga que compensar ω0 0 y / o Q para efectos de deformación de frecuencia (como los que se obtienen con la transformación blinear), pero si pagó mucho dinero por algo que le proporciona un filtro IIR de segundo orden, no importa si lo implementa con cualquier Forma Directa o Forma Directa transpuesta o Lattice o Normalized Ladder o la variable de estado de Hal Chamberlin o Andrew Simpson de análogo lineal con integración trapezoidal, eventualmente se obtienen 5 coeficientes y se pueden asignar a estos 5 parámetros independientes. todo es lo mismo. si pagó o no dinero por una licencia o no. la matemática es más sólida que cualquier reclamo hecho por la persona de la que está otorgando la licencia
Para su información, he resuelto, donde el verdadero pico o valle de frecuencia es cuando no es unat i l t eso no es cero. La frecuencia en la que el pico o el valle ha sido empujado por la inclinación es:
puedes ver eso cuandot i l t = 0 , entonces R = 1 y consecuentemente ωpico=ω0 0 . la ganancia máximasolaumentar también podría tener que ajustarse un poco y eso aún no se ha resuelto. una buena primera suposición seríasolaumentar←solaumentarR√ o tal vez solaumentar←solaumentar- (R--√- 1 ) .
fuente
@Jazz, una de las cosas que aprendimos en ingeniería eléctrica es que cualquier orden de ecuación diferencial se puede dividir en un conjunto (o "sistema") de ecuaciones diferenciales de primer orden. así que si la integración trapezoidal, con el mismo "paso de tiempo"Δt está siendo usado consistentemente para todas las integrales de tiempo continuo, para unN ODE lineal de orden th, puede reventar eso en N ecuaciones diferenciales de primer orden. entonces considere solo una de esas ecuaciones diferenciales de primer orden:
nuevamente, considere emular un condensador. deje que el período de muestreo seaT=1fs ser lo mismo que el "Δt "utilizado en la regla trapezoidal.
o
en el dominio s es
entonces la integración trapazoidal en momentos discretos es:
o como valores de muestra de tiempo discreto
aplicando la transformación Z
resolviendo paraV
parece que estamos sustituyendo
o
que es precisamente lo que hace el bilineal sin compensación por deformación de frecuencia.
fuente
Usando métodos de optimización, podemos acercar la respuesta de frecuencia de un filtro digital al filtro analógico objetivo.
En el siguiente experimento, un filtro de paso de banda de 6 órdenes se optimiza usando Adam, un algoritmo de optimización que se usa a menudo en el aprendizaje automático. Las frecuencias por encima de la banda de paso están excluidas de la función de costo (peso cero asignado). La respuesta del filtro optimizado se vuelve más alta que el objetivo para frecuencias muy cercanas a Nyquist, pero esa diferencia puede ser compensada por el filtro anti-aliasing de la fuente de señal (ADC o convertidor de frecuencia de muestreo).
fuente
tensorflow-gpu
1.12.0 la optimización no es convergente, sino divergente.tensorflow
1.12.0 funciona mejor pero la optimización no converge completamente, debido a la elección del optimizador (Adam) y su tasa de aprendizaje, y posiblemente debido a la forma en que se formula la función de costo. Otorgaré la recompensa por esta respuesta, porque muestra un enfoque moderno para la optimización de coeficientes: diferenciación automática. Todavía me gustaría ver: una optimización más estable y la organización de los coeficientes obtenidos para su uso en tiempo real (como barridos de parámetros).Se me ocurrió un diseño para el ecualizador de pico de 10dB. Elegí 20 filtros con frecuencias centrales entre 500 Hz y 16 kHz (Fs = 48 kHz). La trama superior a continuación es el diseño de acuerdo con Audio-EQ-Cookbook de RBJ , que es bueno pero que conduce a una distorsión del ancho de banda cuando las frecuencias centrales se acercan a Nyquist. La trama inferior es el nuevo diseño donde los filtros coinciden muy estrechamente con los filtros prototipo analógicos:
Y así es como se ven los nuevos filtros de muesca en comparación con el Cookbook (ancho de banda = 4 octavas, el más altoF0 0= 23 kHz):
La siguiente figura muestra un diseño de filtro de paso bajo (Q = 2 , F0 0= 16 kHz Fs= 48 kHz). Tenga en cuenta que el nuevo diseño se aproxima al prototipo analógico y, por esta razón, no funciona como un filtro de paso bajo convencional (no tiene cero en Nyquist):
fuente