Filtre el diseño mediante la distribución de polos y ceros en curvas paramétricas


17

Un N º orden Butterworth filtro de paso bajo de frecuencia de corte ωc se puede diseñar mediante la distribución de N polos de manera uniforme con respecto al parámetro 0<α<1 en un plano s paramétrico curva f(α)=ωcei(π/2+πα) , que es un semicírculo:

Filtro de mantequilla
Figura 1. Polos de un filtro Butterworth de sexto orden (CC BY-SA 3.0 Fcorthay)

Es notable que se pueda usar la misma curva paramétrica para cualquier grado de filtro proporcione la función de transferencia no normalizada:N

(1)H(s)=k=1N1sf(2k12N),

y que el filtro resultante es siempre un filtro de Butterworth. Es decir, ningún otro filtro con el mismo número de polos y ceros tiene un mayor número de derivados de fuga de la respuesta de frecuencia de magnitud en las frecuencias ω=0 y ω= . El conjunto de filtros de Butterworth que tienen la misma frecuencia de corte ωc forma un subconjunto de filtros de Butterworth para los cuales la curva paramétrica f(α) es única. El subconjunto es infinito ya que N no tiene límite superior.

Más generalmente, sin contar polos y ceros en el infinito a menos que provengan de las curvas paramétricas, cualquier filtro con NNp polos y NNz ceros, con N un número entero y Nz/Np una fracción no negativa de enteros, tiene una fracción no negativa de enteros. función de transferencia de forma:

(2)H(s)=k=1NNz(sfz(2k12NNz))k=1NNp(sfp(2k12NNp)),

donde fp(α) y fz(α) son curvas paramétricas que pueden describir la distribución de polos y ceros en el límite N .

  • Pregunta 1: ¿Qué otros tipos de filtros que Butterworth, definidos por algún criterio de optimización, tienen subconjuntos infinitos, cada uno definido por la fracción Nz/Np y el par de curvas paramétricas fp(α) y fz(α) por Eq. 2, con los filtros que difieren solo por N ? Filtros tipo I Chebyshev , sí; con ellos los polos residen en la mitad de una elipse con ángulo paramétrico α . Tanto Butterworth como los filtros Chebyshev tipo I y tipo II son casos especiales de filtros elípticos.. Para ser claros, por "subconjuntos infinitos" no me refiero a un número infinito de subconjuntos, sino a subconjuntos de tamaño infinito.
  • Pregunta 2: ¿Los filtros elípticos que no son Butterworth-no-Chebyshev tienen subconjuntos tan infinitos?
  • Pregunta 3: ¿Cada filtro elíptico está en un subconjunto tan infinito?

Si el conjunto infinito de todos los filtros elípticos es una unión de subconjuntos infinitos mutuamente excluyentes y exhaustivos de filtros elípticos, cada uno definido por una sola curva paramétrica para la colocación de polos y una sola curva paramétrica para la colocación de ceros, y una fracción irreducible del número de los ceros a los polos, luego la optimización numérica para obtener filtros elípticos podría hacerse optimizando las curvas paramétricas en lugar de los filtros para cualquier orden en particular. Las curvas óptimas podrían reutilizarse para varias órdenes de filtro, manteniendo la óptima. El "si" anterior es la razón por la que hago las preguntas 2 y 3. La pregunta 1 se trata de extender el enfoque a otros criterios de optimización.

Ciertamente, los gráficos de polo cero de los filtros elípticos parecen tener algunas curvas subyacentes:

Filtro elíptico
Figura 2. Magnitud logarítmica de un filtro elíptico de paso bajo en el plano s. Los puntos blancos son polos y los puntos negros son ceros.

Una ventaja es que por Eq. 1, ciertos valores de y, por lo tanto, ciertas posiciones de polo y cero deben compartirse entre múltiples filtros:α

alfa y grado de filtro
Figura 5. Los valores obtenidos por el parámetro de curva para diferentes grados de filtro N . Observe cómo para varios órdenes de filtro tenemos, por ejemplo, α = 0.5 , o α = 0.25 y α = 0.75.αNα=0.5α=0.25α=0.75.

En particular, para un filtro que tiene polos o ceros, todos aparecen también en filtros que tienen 3 n N del mismo donde n es cualquier número entero positivo.N3nNn


Demostrando un humor extremadamente seco, por solicitud del usuario A_A, eché un vistazo al lemniscate de Bernoulli como un ejemplo de curva paramétrica del plano s:

Lemniscate de Bernoulli
Figura 4. Lemniscate de Bernoulli

La siguiente curva paramétrica da la mitad izquierda del lemniscate de Bernoulli, con el parámetro y comenzando y terminando en s = 0 :0<a<1s=0

f(α)=2sin(πα)cos2(πα)+1+i2sin(πα)cos(πα)cos2(πα)+1

Usando esta curva paramétrica para los polos, nos gustaría comparar de alguna manera entre diferentes las respuestas de frecuencia de magnitud obtenidas a través de la ecuación. 1. Una forma es mirar el N º raíz | H ( i ω ) | 1 / N de la respuesta de frecuencia de magnitud. También nos permite echar un vistazo a cómo se ven las cosas en N :NN|H(iω)|1/NN

Nth root of magnitude frequency response
Figura 3. º raíz de la respuesta de frecuencia magnitud de un N filtro de polos que tiene sus polos distribuidos en la lemniscata uniformemente con respecto al parámetro de la curva. A frecuencias más altas que las mostradas, todas las parcelas siguen una pendiente de -6 dB / oct (-20 dB / década). En el límite N hay una discontinuidad en la derivada de la gráfica en ω = 0 s = 0 cuando el lemniscate (dos veces) cruza el eje imaginario del plano s en ese punto.NNNω=0s=0

El límite de la º raíz de la magnitud de la función de transferencia (Ec. 1) como N se calculó como:NN

(3)limN|H(s)|1/N=01|1sf(α)|dα=e01log(|sf(α)|)dα,

donde representa una integral de producto que se puede calcular con el logaritmo natural, la integración y la función exponencial. Como a menudo con la integración, no había una expresión simbólica para la integral que debía evaluarse numéricamente para el lemniscate de Bernoulli. Con todo, las respuestas de frecuencia de magnitud resultantes parecen bastante inútiles para esta curva paramétrica "seleccionada al azar".


El usuario Matt L. mencionó los filtros Lerner. Lo que he encontrado sobre ellos, con ligera interpretación:

H(s)=k=1mBk(s+a)(s+a)2+bk2B1=1/2,Bm=(1)m+12Bi=(1)k+1 for k=2,,m1,

con posiciones de polo tal que b m - b m - 1 = b 2 - b 1 = 1a+ibkpara los3<k<m-1. Parece que estos polos, aunque están distribuidos en una línea, no son los polos del filtro completo sino polos de secciones paralelas. No he confirmado cuáles son los polos del sistema completo, o si los filtros Lerner son óptimos en algún sentido útil. Referencia:CM Rader, B. Gold, MIT Lincoln Laboratory Technical Note 1965-63,Digital Filter Design Techniques, 23 de diciembre de 1965.bmbm1=b2b1=12(bkbk1)3<k<m1


44
Mi inglés es inestable esta mañana, así que no entiendo muy bien lo que estás tratando de decir, pero si se trata de más de una forma de calcular un filtro elíptico, te sugiero que encuentres el libro de Lutovac, en la elíptica de la wikipedia. notas de filtro (también Dimopoulos), es bastante revelador: puede tener 7 formas de diseñar un filtro elíptico. Si esto no es lo que querías decir, ignora mi comentario.
un ciudadano preocupado

2
Los filtros Lerner tienen todos sus polos en una línea paralela al eje imaginario. Tienen la ventaja de tener una respuesta de fase aproximadamente lineal.
Matt L.

2
El filtro completo; pero si los polos de todas las secciones paralelas se encuentran en la misma línea, entonces también el filtro completo tendrá todos sus polos en esa línea. Tienes razón sobre la referencia. Hay esa nota técnica de Rader y Gold a la que generalmente me refiero.
Matt L.

1
OK, ¿para qué revista vamos? : D ¿Hay un principio rector en esto? Por ejemplo, ¿está buscando un posible paramétrico que funcione mejor que el elíptico en algún aspecto? (por ejemplo, banda de transición frente a ondulación). Otra familia que podría ser "interesante" son los * cicloides ... Pero, sin un "principio de pedido", no podemos llamar "peor, malo, bueno, mejor" ninguno de ellos :)
A_A

2
El hilo de comentarios ha ido demasiado tiempo. Sin embargo, solo arrojando un parámetro ubicación para los filtros wavelet de Daubechies ams.org/journals/proc/1996-124-12/S0002-9939-96-03557-5/…|4y(1y)|=1
Laurent Duval

Respuestas:


6

A lo largo de la respuesta usaré las notaciones matemáticas , es decir, el equivalente matemático de expresar la respuesta de magnitud de un filtro en el dominio de la frecuencia. Para esto, se usará lugar de j ω , para reflejar mejor la pregunta de @ Olli sobre cómo encontrar una curva paramétrica matemática para aproximar los filtros. Como este no es un diseño de filtro, la frecuencia de la esquina se normaliza a la unidad, por lo tanto, x en lugar de ω / ω p .xjωxω/ωp


No estoy seguro de si esta es la respuesta que está buscando, pero cualquier filtro se puede representar a través de la función de transferencia genérica:

H2(x)=11+ϵp2R2(x)

donde , yR(x)es la función característica de atenuación. Apes la atenuación / ondulación de la banda de paso en dB, pero también puede estar en la banda de detención para Cauer / Elliptic, Pascal inverso o Chebyshev inverso (también conocido como "Chebyshev Tipo II"). Estos últimos se expresan como:ϵp=10Ap/101R(x)Ap

H2(x)=11+1ϵs2TN2(x)

Para Butterworth, como has visto:

R(x)=xN

para Chebyshev es , o los polinomios de Chebyshev ( cos / a c o s para x 1 y cosh / a c o s h para x > 1 ), para Elliptic es:R(x)=TN(x)cosacosx1coshacoshx>1

R(x)=cd(NK1Kcd1(x,k),k1)

En el libro de Lutovac, hay algunas representaciones extremadamente simplistas a través de funciones equivalentes exactas para filtros elípticos. Por ejemplo, la función de transferencia de segundo orden se puede representar con precisión a través de:

R(x)=(1k2+1)x21(1k21)x2+1

donde la única dependencia es del módulo .k

Estos son los tipos conocidos, para los tipos menos conocidos, por ejemplo, Legendre, , donde P N ( x ) son los polinomios de Legendre, para los filtros Pascal existe la versión desplazada y normalizada del Pascal polinomios, que es:R(x)=PN(x)PN(x)

(N+12x+N12N)

La lista continua. Algunos se aproximan de manera diferente, por ejemplo Gaussian es , que se expande con la serie MacLaurin, casi lo mismo para Bessel, que se expande desde su expresión de Laplace exp ( - s ) en sus términos de denominador como:|H(x)|2=exp(x2)exp(s)

ai=(2N1)!2Nii!(Ni)!

También hay formas más exóticas de deducir la función de transferencia, como Papoulis (Optimum L) y Halpern, que utilizan los polinomios de Legendre para integrar la respuesta de modo que la función de transferencia disminuya monotónicamente con una alta selectividad de filtro. Para Papoulis, es:

R(x2)=i=12x21(i=0kaiPi(x))2

donde es ( N - 1 ) / 2 , y a i son algunos términos ingeniosamente elegidos, dependiendo de si N o k , ambos, son pares / impares.k(N1)/2aiNk

Como se señaló, todos estos no usan el dominio de frecuencia para la representación, ya que en es la matemática x , real, no imaginaria j ω . La resolución de las raíces se puede hacer simplemente encontrando los polos (y ceros) para la función de transferencia al reemplazar x con j ω ., Descubriendo así H ( s ) H ( - s ) y seleccionando el polinomio de Hurwitz, o simplemente encontrar las raíces de la expresión matemática en xxxjωxjωH(s)H(s)x(Ver el enlace en el segundo comentario, a continuación). Esto hará que las raíces giren 90 grados, lo que significa que todo lo que hay que hacer es cambiar las partes reales e imaginarias entre ellas y luego seleccionar el lado derecho.

¿Esta respuesta es cercana a lo que estabas buscando?


Creo que, en este punto, es importante decir que los filtros no existen porque las personas estaban lanzando dardos en un mapa para marcar los polos, llegaron a ser después de considerar cuidadosamente el objetivo que tenían en mente.

Por ejemplo, y con una calidad cada vez mayor, los filtros Butterworth surgieron debido a la necesidad de un filtro que fuera simple de diseñar, con atenuación monotónicamente creciente. Linkwitz-Riley no es más que Butterworth con un disfraz (inteligente) de tal manera que sumar un paso bajo y un paso alto con la misma frecuencia de esquina da como resultado una respuesta plana, útil para aplicaciones de audio.

Chebyshev (I y II) fueron diseñados para tener una mejor atenuación, a costa de ondas en la banda de paso o banda de detención. Legendre, ultraesférico, Pascal (y posiblemente otros) minimizan la onda, mejorando así el retraso del grupo, a costa de atenuaciones ligeramente reducidas.

Papoulis y Halpern se desarrollaron como una mezcla entre la ondulación de la banda de paso y la atenuación que aumenta monotónicamente, al tiempo que mejora la atenuación alrededor de la frecuencia de la esquina, a costa de una caída en la banda de paso.

Los filtros Cauer / Elliptic hacen uso de la ondulación tanto en la banda de paso como en la banda de detención para minimizar el orden requerido para la misma o mejor atenuación.

Todos estos están en el dominio de frecuencia, que son la mayoría de los filtros. En el otro sentido, los filtros de Bessel surgieron debido a la necesidad de aproximar un retraso analógico, por lo que convergen hacia medida que aumenta el orden, mientras que los filtros gaussianos se crearon para un sobreimpulso cero, por lo que se aproximan a exp ( - x 2 ) con orden creciente.exp(jω)exp(x2)

Por supuesto, como alguien sugirió, también puede espolvorear postes y ver qué sale, tal vez configurarlos como una estrella o algún patrón de panal de abejas, elija su lemniscate favorito, pero esa no es la forma de hacerlo si desea un filtro fuera de el. Claro, puede obtener una respuesta exótica que incluso puede ser aplicable quién sabe dónde, como un solo caso de un millón, pero ese es realmente un caso particular. El camino a seguir es imponer primero un objetivo de diseño y ver cómo se puede lograr ese objetivo en términos de un filtro físicamente realizable. Incluso si eso significa crear un filtro aplicable de quién sabe dónde. :-)


Dada la respuesta reciente de @Olli, considere el caso simple de un filtro Butterworth, diseñado para, por ejemplo 0.9@fp=1, 0.1@fs=5. Los cálculos son algo como esto:

Ap=20log10(0.9)=0.91515 dBAs=20log10(0.1)=20 dBϵp=10Ap/101=0.48432ϵs=10As/101=9.94987F=fsfp=51=5N=logϵsϵplogF=1.878

se calcula como redondeado, entonces N = 2 . Esto significa que, si coincide con la respuesta del filtro a la banda de paso, obtendrá una mayor atenuación en la banda de detención @fs. Usando la primera fórmula, la atenuación @ fs es:NN=2

H(fs)=11+0.48432252N=0.08231<0.1

Si tuviera que hacer coincidir la banda de detención para tener 0.1@fs, tendría que aplicar una corrección de frecuencia:

ωscale=(ϵsϵp)1/Nfpfs=9.949870.5=0.9065H(5ωscale)=0.1

Entonces, la escala puede variar de 1 a 0.9065 y obtendrá todas las posibilidades infinitas entre los dos extremos. ¿Puedes hacerlo? Si. ¿Vale la pena? Incluso si puede encontrar un argumento o dos, la respuesta general sigue siendo no. ¿Cómo fue todo esto posible? Debido a que la respuesta inicial del filtro de Butterworth ya se obtuvo, por lo que sabía de antemano que tenía una expresión analítica para un filtro que tiene una atenuación de frecuencia que disminuye monotónicamente, lo que lleva a descubrir los polos desde el denominador de la función de transferencia, que suceden a Acuéstese en un círculo con ángulos iguales.ωscale10.9065


Dada la respuesta reciente de @Olli, hay algunas cosas que necesitan explicarse. Primero, todo esto tiene que ver con el diseño del filtro, no importa cómo lo veas: desde un punto de vista matemático o físico.

Si es matemático, entonces hay una parte interesante sobre su teoría, es decir, obtener un orden diferente del mismo filtro sin la necesidad de rediseñar el filtro original.

Pero desde el punto de vista de la realizabilidad física, todo el proceso implica un trabajo adicional innecesario, que (debería) conducir al mismo resultado, y esa es precisamente la parte sobre el aumento / disminución del orden del filtro para obtener uno nuevo. Mis argumentos son los siguientes.

Cualquier filtro, en su núcleo, sirve para filtrar frecuencias innecesarias, ya sean eléctricas, mecánicas u otras cantidades físicas. Su propósito es modificar un espectro (o retraso de grupo, o respuesta de tiempo). Si existe la necesidad de tal dispositivo, entonces ese dispositivo no puede diseñarse simplemente arrojando un filtro de cualquier tipo, "simplemente póngalo allí, filtrará las cosas"; Su diseño es, muy a menudo, bastante complicado. Pero todo este proceso tiene que comenzar desde los requisitos. Es decir, primero tiene que haber un objetivo específico, "filtremos todo por encima de ", o "deje que pase la luz infrarroja", o algo similar, que comienza por determinar primero los parámetros con los que ese filtro debe trabajo.100 Hz

Como un ejemplo rápido, si fuera necesario filtrar las frecuencias por debajo de y por encima de 3000  Hz , uno simplemente no agregaría ningún filtro de paso de banda con esas frecuencias de esquina, también se deben especificar las atenuaciones, ya sea ondulación en la banda de paso o stopband, o ambos, son necesarios o aceptados, ya sea que la fase sea lineal o no, cómo afectará el retraso del grupo a todo esto, etc. Entonces, antes que nada, hay parámetros específicos por los cuales el filtro necesita ser diseñado.300 Hz3000 Hz

Una vez que se especifican los parámetros, ¿cómo se diseñará el filtro? Supongamos que existe la necesidad de un filtro de paso bajo elíptico de 12º orden, y que existe la posibilidad de aumentar un filtro de bajo nivel a uno de alto orden (ver la respuesta de @ Olli). Digamos que el proceso de transformar un 4to orden en un 12vo orden es perfecto, que hay una manera de especificar los parámetros de diseño para el filtro de 4to orden de tal manera que, después de la transformación, el 12o orden resultante termine Satisfacer esas condiciones. "Pensamiento premeditado", por así decirlo.

La pregunta que surge es esta: ¿cómo se diseñará el filtro de cuarto orden? La respuesta solo puede ser a través de las formas conocidas de diseñarlo. Y, si hay otros métodos, por venir, o aún por inventar, esos tendrían que aplicarse, primero, para diseñar ese filtro de cuarto orden. Solo después se puede calcular el duodécimo orden. Como se asumió desde el principio, incluso con un proceso de transformación impecable, solo significaría que el filtro resultante, el orden 12, hacia el cual todo el diseño intenta converger, necesita dos pasos de diseño: uno, para el cuarto orden, y el segundo , para el duodécimo orden, haciendo que todo el proceso se vea gravado innecesariamente, ya que el filtro de duodécimo orden podría haberse diseñado simplemente, en primer lugar, con el método utilizado para el cuarto orden.

Vayamos un poco más lejos y asumamos un poco más. Los polos resultantes del duodécimo orden estarían en una elipse y los ceros en el eje imaginario. Las distancias entre ellos estarían definidas con precisión por las funciones elípticas subyacentes que gobiernan los filtros elípticos. Suponga que hay una manera de definir esas curvas, como espera @Olli, de tal manera que sea posible diseñar fácilmente un filtro desde el principio, de una sola vez, simplemente usando estas curvas (paramétricas o no) mediante las cuales todos los La colocación del poste está hecha. Hasta aquí todo bien. Pero esas curvas tendrían que calcularse primero, y los parámetros por los que se desenredan son los exactos que se utilizan para el diseño del filtro, los mismos que generarían el filtro a través de otros métodos, conocidos o aún desconocidos. Además, los cálculos aún no se han hecho y, muy probablemente, las definiciones subyacentes para esas curvas paramétricas tendrían que ser elípticas, de una forma u otra, o no saldría ningún filtro elíptico [nota # 1]. Lo que significa que todo el proceso sería simplemente otro método de diseño para los filtros elípticos, ya que los polos del filtro elíptico ya tienen expresiones de forma cerrada.

No me malinterpretes. Si un filtro se puede diseñar de una manera, de la misma manera se puede diseñar de otra. Es solo una de esas formas "aún por conocer". Bravo por el inventor. Pero si este método de diseño implica pasos adicionales para converger a los mismos resultados que tomaría para un método diferente, entonces no parece un enfoque factible. Y tenga en cuenta: no estoy usando nombres o etiquetas descriptivas cuando estoy hablando de los diseños de filtros, solo nombres genéricos, porque realmente no importa qué método esté usando siempre que los resultados sean correctos y el método no sea t gravando para el proceso de diseño.

[nota # 1]: Simplemente seguir una curva genérica para colocar los polos no es suficiente, y daré dos ejemplos, relacionados con los filtros de Butterworth, que tienen los polos colocados en un círculo con ángulos equidistantes. Los filtros Chebyshev tipo I tienen los polos colocados en una elipse, con los ángulos de Butterworth, pero proyectados en el eje imaginario hasta que interceptan la elipse. La modificación de la distancia entre los polos dará como resultado un comportamiento no equiripple, lo que hará que el filtro sea de un tipo que no sea Chebyshev. Del mismo modo, los polos del filtro elíptico Q mínimo están dispuestos en un círculo subyacente, pero eso no significa que sea un Butterworth (incluso si la ondulación es el mínimo posible para un filtro elíptico), porque tiene distancias desiguales entre los ángulos . Para el último, aquí '

Butterworth vs min-Q elliptic

En general, a pesar del interés genuino que trae la pregunta, me temo que no tiene más que un valor teórico, en el mejor de los casos, educativo, ya que no logra adaptarse a la parte que se ocupa del diseño del filtro. Por supuesto, si se demuestra que tiene un valor real, me alegraría que me demuestren lo contrario, ya que significaría que hay un nuevo método de diseño de filtros, posiblemente mejor que los ya existentes.


@OlliNiemitalo Sí, es la versión no cuadrada. Haz lo que el sacerdote dice, no lo que hace. :-) Apes la atenuación / ondulación de la banda de paso, en dB, pero también puede ser para la banda de detención, en el caso de Cauer / Elliptic, Chebyshev inverso o Pascal inverso. Veo que hay otros errores menores, los editaré.
un ciudadano preocupado

1
Olli, hay buenas expresiones de forma cerrada tanto para Tchebyshevs como para Butterworth. pero no tanto para el filtro elíptico / Cauer. obtener un alg bien definido para eso (los loci de los polos y ceros) es (¿cómo podemos decir?) una hembra canina copulante .
Robert Bristow-Johnson

1
@ robertbristow-johnson A pesar del sinónimo científico exacto, hay al menos 3 formas de representar los polos para Cauer. Una es la aproximación (Antoniou ?, Dimopoulos ?, no estoy seguro), que creo que es la más utilizada. Entonces hay manera de Burrus que sigue con precisión las funciones elípticas, es decir, los ceros son ±j/(ksn(iK/N,k)),i=1,2,..(diferente impar / par), pero eso requiere el uso de funciones theta y demás, lo que se vuelve muy "esponjoso" en términos de CPU. Luego está Lutovac, quien, incluso si no puede usar números primos, los simplifica enormemente, pero se hacen más grandes a medida que aumenta el orden.
un ciudadano preocupado

1
@ robertbristow-johnson Yo tampoco, como se menciona al final de la edición original, y en uno de los comentarios, pero parece que fue editado en el camino, lo corregiré. En cuanto a las funciones elípticas, Burrus y otro (¿olvidó el nombre, Paarman?) Usan la versión , pero s n ( K + x ) = c d ( x ) , la desplazó a Jacobi sine, un hecho observado por Lutovac. Entonces, para evitar la necesidad de calcular una integral elíptica extra completa, se puede escribir c d ( )sn(K+sn1())sn(K+x)=cd(x)cd()No hay diferencia. Una gráfica simple puede mostrarlo ( ). k1=ϵp/ϵs,k=fp/fs,K1=K(k1),K=K(k)
un ciudadano preocupado

1
@ robertbristow-johnson Te perdiste la parte donde digo que todas las expresiones usan como variable, porque reflejan la función matemática que describe la respuesta del filtro, ya que está relacionada con el enfoque matemático de Olli's. Al trazar todas las funciones con x en cualquier software matemático obtendrá la magnitud, sin entrar en el dominio de la frecuencia. Dejé afuera reemplazando x = j ω , haciendo H ( s ) H ( - s ) , y seleccionando solo los polos / ceros de criterio de Hurwitz, eso es para el diseño del filtro. Además, también puedes obtener los polos sin eso (ver el enlace en el comentario # 2).xxx=jωH(s)H(s)
un ciudadano preocupado

2

Aunque intuitivamente siento que entiendo lo que se requiere, lucho por expresarlo. No estoy seguro si esto se debe a mis propias limitaciones o si el problema es difícil o está mal planteado. Tengo la sensación de que está mal planteado. Entonces, aquí está mi intento:

  1. El objetivo es construir un filtro. Es decir, calcular un conjunto de coeficientes de alguna forma racional:

H(s)=B(s)A(s)=m=0MbmsmsN+n=0N1ansn

(Tenga en cuenta que no tiene que estar sobre el plano s, podría estar sobre el plano z también. Y también, se podrían considerar formas más simples (por ejemplo, para tener solo polos). corre con el plano s por el momento y mantengamos al nominador también).H(s)

  1. Los filtros digitales se caracterizan por sus respuestas de frecuencia y de fase, ambos de los cuales pueden ser completamente determinado por los valores (o, posiciones en el plano s) de su coeficientes. La discusión hasta ahora parece centrarse en la respuesta de frecuencia, así que consideremos esa por el momento.an,bm

  2. Dado un conjunto de algunos algún punto σ + j ω en el plano s, la forma geométrica de derivar la respuesta de frecuencia en ese punto es formar "vectores cero" (desde las ubicaciones de los ceros, hacia el punto específico) y los "vectores polares" (de manera similar para los polos), suman sus magnitudes y forman la relación como en la ecuación anterior.an,bmσ+jω

  3. Preguntar "¿Qué tipos de [...] filtro definidos por algún criterio de optimización tienen subconjuntos infinitos definidos por curvas [...] paramétricas" es preguntar "¿Cuál es el par de algunas curvas paramétricas cuyas ubicaciones también dan como resultado una curva de respuesta de magnitud con características específicas deseadas sobre ΘA(s,Θ),B(s,Θ)Θ (por ejemplo, pendiente, ondulación, otras). Donde es el parámetro (s) del ... paramétrico.Θ

  4. Una nota, en este punto: por un lado, estamos buscando que satisfagan dos restricciones. En primer lugar, tienen que satisfacer las restricciones de lo paramétrico (fácil) y, en segundo lugar, deben cumplir las restricciones especificadas por la característica de respuesta de magnitud (difícil).A(s),B(s)

  5. Creo que el problema, en su forma actual, está mal planteado porque no hay una forma analítica de conectar las restricciones de respuesta de frecuencia con los parámetros ( , excepto la evaluación directa del mismo.A(s,Θ),B(s,Θ) . En otras palabras, es imposible en este momento especificar algunas restricciones en la curva de respuesta de frecuencia y, a través de eso, trabajar hacia atrás y encontrar aquellos parámetros que satisfagan estas restricciones. Podemos ir al revés, pero no al revés.

  6. Por lo tanto, lo que (creo que) de manera realista se puede hacer, en este momento, es aceptar de alguna forma específica y luego, comprobar cómo les va como filtros O , mueva iterativamente sus coeficientes tanto como lo permitan sus parámetros, para exprimir el mejor rendimiento que pueden ofrecer fuera de un rango particular de su Θ . sin embargoA(s,Θ),B(s,Θ)Θ, podríamos encontrar que dadas las características resueltas de las elípticas (por ejemplo), un esquema iterativo dado en un parámetro puede elegir "doblar" los coeficientes lo más cerca posible de alguna característica de la región "elíptica". Es por eso que antes mencioné que podríamos encontrar que un parámetro paramétrico complejo podría descomponerse en una "suma de elípticas" o una "suma de curvas con características conocidas". Quizás se requiera una tercera restricción aquí, que lea "Manténgase alejado de las configuraciones conocidas de ", en otras palabras, penalice las soluciones que comienzan a parecer elípticas (pero aún en un esquema iterativo).A(s),B(s)

Finalmente, si este camino no está demasiado equivocado hasta ahora, entonces estamos cerca de algo así como Algoritmos genéticos para el diseño de filtros , o alguna otra técnica informada de "disparar en la oscuridad" por la cual los coeficientes de un filtro que satisfacen criterios específicos podrían derivarse con . Lo anterior es solo un ejemplo, hay más publicaciones en este sentido.

Espero que esto ayude.


+1 Me gusta tu programa. Para su punto # 4 y otros, el objetivo de optimización podría establecerse en términos de o generalmente su valor absoluto. Por otra parte, significaría que ya estamos confiando en la viabilidad del enfoque, que está en cuestión. Por lo tanto, sería necesario verificar también con algunos filtros de N finitos . En el punto 7, no creo que la "repulsión de las elípticas" ayudaría, ya que daría filtros sublípticos subóptimos. Más bien, el objetivo de optimización debería cambiarse. limN(H(iω))1/N,N
Olli Niemitalo

1
Gracias. Estoy de acuerdo en que el objetivo de optimización es crucial aquí. "Repulsión de los elípticos" debería usarse con más frecuencia ... :)
A_A

2

No creo que sea particularmente notable que los filtros de Butterworth, definidos como filtros de todos los polos que son máximamente planos en (para el prototipo LPF, lo que significa que la mayoría de las derivadas posibles de | H ( j ω ) | son cero en ω = 0 ), tienen polos en el plano s que se encuentran igualmente espaciados en el semicírculo izquierdo de radio ω 0 .ω=0|H(jω)|ω=0ω0

del "máximo plano" y "sin ceros", puede derivar

|H(jω)|2=11+(ωω0)2N

para la th-orden Butterworth.N

entonces

|H(s)|2=11+(sjω0)2N

es un polo cuando el denominador es cero.s=pn

1+(pnjω0)2N=0

o

(pnjω0)2N=1

pn2N=(jω0)2N

|pn|=ω0

2Narg{pn}=π+2Nπ2+2πn

arg{pn}=π2+πN(n12)

para º orden Tchebyshev (tipo 1, que es de todos los polos), es la siguiente:N

|H(jω)|2=11+ϵ2TN2(ωωc)

donde

TN(x){cos(Narccos(x)),if |x|1cosh(Narccosh(x)),if x1(1)Ncosh(Narccosh(x)),if x1

N

T0(x)=1T1(x)=xTn+1(x)=2xTn(x)Tn1(x)nZ1

and ωc is the "passband cutoff" frequency and not to be confused with the -3 dB frequency ω0. (but the two are related.)

the passband ripple parameter is ϵ=10dBripple101

analytic extension again:

|H(s)|2=11+ϵ2TN2(sjωc)

and again s=pn is a pole when the denominator is zero.

1+ϵ2TN2(pnjωc)=0

or

TN(pnjωc)=±jϵ

(because cos(θ)=cosh(jθ) we can use either cos() or cosh() expression for TN()

cosh(Narccosh(pnjωc))=±jϵ

Narccosh(pnjωc)=arccosh(±jϵ)

since

y=cosh(x)=12(ex+ex)
and
x=arccosh(y)=log(y±y21)

then

Nlog(pnjωc±(pnjωc)21)=log(±jϵ±(±jϵ)21)

Nlog((pn)+j(pn)jωc±((pn)+j(pn)jωc)21)=log(±j(1ϵ±1ϵ2+1))

Nlog(j(pn)+(pn)ωc±(j(pn)+(pn)ωc)21)=log(±j(1ϵ±1ϵ2+1))

oh dear i might not get this blasted out in 12 hours

i've decided that i am too lazy to grok through this. if anyone wants to pick it up, feel free to. lotsa conversion between rectangular and polar notation of complex values. remember when

w=± z 
then
|w|=+|z|
and
arg{w}=12arg{z}+arg{±1}=12arg{z}+π2(1±1)

and remember

log(z)=log|z|+jarg{z}+j2πnnZ

you may add any integer multiple of 2π (say "2πn") to any arg{} (choose the right-hand log() which is how you can get different poles for pn).

if you like mathematical masturbation with complex variables, knock yourself out.


+1 para la observación interesante, pero dado que esto no responde a las preguntas, espero que haya otros candidatos para la recompensa.
Olli Niemitalo

Entonces, Olli, ¿pueden ver cómo se realiza la derivación de los polos para Tchebyshev 1 y los polos / ceros para Tchebyshev 2?
Robert Bristow-Johnson

El Jabobi Elliptical es una perra. No sé cómo evaluarlo sin buscarlo en Antonio. y no va a estar cerrado de forma.
robert bristow-johnson

Sí, los ceros de Tchebyshev 2 se distribuyen uniformemente en la curva paramétrica F(α)=j/ /cos(πα) para corte 1.
Olli Niemitalo

and how do you get that result and the loci of the poles for either Tchebyshev 1 or 2?
Robert Bristow-Johnson

0

12th order elliptic to 4th order elliptic

(I'm not eligible to the bounty.) I tried to produce a counterexample to question 3 in Octave but was pleasantly surprised that I couldn't. If the answer to the question 3 is yes, then according to Fig 5. of the question, specific poles and zeros should be shared between an elliptic filter of order 4 and an elliptic filter of order 12, here shown explicitly: Shared poles and zeros
Figure 1. Poles and zeros potentially shared between elliptic filters of order N=12 and N=4, in blue and numbered in order of ascending parameter α of a parametric curve f(α).

Let's design an order 12 elliptic filter with some arbitrary parameters: 1 dB pass band ripple, -90 dB stop band ripple, cutoff frequency 0.1234, s-plane rather than z-plane:

pkg load signal;
[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
freqs(b12, a12, [0:10000]/10000);

12th order filter magnitude frequency response
Figure 2. The magnitude frequency response of the 12th order elliptic filter designed using ellip.

scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)));

Poles and zeros, filter order 12
Figure 3. Poles (red) and zeros (blue) of order 12 elliptic filter designed using ellip. Horizontal axis: real part, vertical axis: imaginary part.

Let's construct an order 4 filter by reusing select poles and zeros of the order 12 filter, per Fig. 1. In the particular case, ordering the poles and zeros by the imaginary part is sufficient:

[~, ira12] = sort(imag(ra12));
[~, irb12] = sort(imag(rb12));
ra4 = [ra12(ira12)(2), ra12(ira12)(5), ra12(ira12)(8), ra12(ira12)(11)];
rb4 = [rb12(irb12)(2), rb12(irb12)(5), rb12(irb12)(8), rb12(irb12)(11)];
freqs(poly(rb4), poly(ra4), [0:10000]/10000);

Fourth order filter magnitude frequency response
Figure 4. Magnitude frequency response of the 4th order filter that has all poles and zeros identical to certain ones of those of the 12th order filter, per Fig. 1. Zooming in gives a characterization of the filter: 3.14 dB pass band equiripple, -27.69 dB stop band equiripple, cutoff frequency 0.1234.

It is my understanding that an equiripple pass band and an equiripple stop band with as many ripples as the number of poles and zeros allows is a sufficient condition to say that the filter is elliptic. But let's try if this is confirmed by designing an order 4 elliptic filter by ellip with the characterization obtained from Fig 3 and by comparing the poles and zeros between the two order 4 filters:

[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
scatter(vertcat(real(ra4), real(rb4)), vertcat(imag(ra4), imag(rb4)));

That against:

scatter(vertcat(real(ra4el), real(rb4el)), vertcat(imag(ra4el), imag(rb4el)), "blue", "x");

4th order filter pole/zero comparison
Figure 5. Comparison of pole (red) and zero (blue) locations between an ellip-designed 4th order filter (crosses) and a 4th order filter (circles) that shares certain pole and zero locations with the 12th order filter. Horizontal axis: real part, vertical axis: imaginary part.

The poles and zeros coincide between the two filters to three decimal places, which was the precision of the characterization of the filter derived from the order 12 filter. The conclusion is that at least in this particular case both the poles and zeros of the order 4 elliptic filter and those of the order 12 elliptic filter could have been obtained, at least up to a precision, by uniformly distributing them on the same parametric curves. The filters were not Butterworth or Chebyshev I or II type filters as both the pass band and the stop band had ripples.

4th order elliptic to 12th order elliptic

Conversely, can the poles and zeros of the 12th order filter be approximated from a pair of continuous functions fitted to the poles and zeros of the 4th order ellip filter?

If we duplicate the four poles (Fig. 5) and flip the sign of the real parts of the duplicates, we get an oval of sorts. As we go round and round the oval, the pole locations that we pass give a periodic discrete sequence. It is a good candidate for periodic band-limited interpolation by zero-padding its discrete Fourier transform (DFT). Of the resulting 24 poles the ones with a positive real part are discarded, halving the number of poles to 12. Instead of the zeros, their reciprocals are interpolated, but otherwise the interpolation is done the same way as with the poles. We start with the same ellip-designed 4th order filter as earlier (approximately identical to Fig. 4):

pkg load signal;
[b4el, a4el] = ellip (4, 3.14, 27.69, 0.1234, "s");
rb4el = roots(b4el);
ra4el = roots(a4el);
rb4eli = 1./rb4el;
[~, ira4el] = sort(imag(ra4el));
[~, irb4eli] = sort(imag(rb4eli));
ra4eld = vertcat(ra4el(ira4el), -ra4el(ira4el));
rb4elid = vertcat(rb4eli(irb4eli), -rb4eli(irb4eli));
ra12syn = -interpft(ra4eld, 24)(12:23);
rb12syn = -1./interpft(rb4elid, 24)(12:23);
freqs(poly(rb12syn), poly(ra12syn), [0:10000]/10000);

Magnitude frequency response of the 4->12th order interpolated filter
Figure 6. Magnitude frequency response of a 12th order filter with the poles and zeros sampled from curves matched to those of the 4th order filter.

It is not an accurate enough of a mockup of the Fig. 2 response to be useful. The stop band fares pretty well but the pass band is tilted. The band edge frequencies are approximately correct. Still, this shows potential considering the parametric curves were only described by 4 degrees of freedom each.

Let's have a look at how the poles and zeros match those of the N=12 ellip-generated filter:

[b12, a12] = ellip (12, 0.1, 90, 0.1234, "s");
ra12 = roots(a12);
rb12 = roots(b12);
scatter(vertcat(real(ra12), real(rb12)), vertcat(imag(ra12), imag(rb12)), "blue", "x");
scatter(vertcat(real(ra12syn), real(rb12syn)), vertcat(imag(ra12syn), imag(rb12syn)));

Comparison of poles and zeros for N=12
Figure 7. Comparison of pole (red) and zero (blue) locations between an ellip-designed 12th order filter (crosses) and a 12th order filter (circles) that was derived from the 4th order filter. Horizontal axis: real part, vertical axis: imaginary part.

The interpolated poles are quite a bit off, but zeros are matched relatively well. A larger N as the starting point should be investigated.

6th order elliptic to 18th order elliptic

Doing the same as above but starting at 6th order and interpolating to 18th order shows a seemingly well-behaved magnitude frequency response, but still has trouble in the pass band when examined closely:

[b6el, a6el] = ellip (6, 0.03, 30, 0.1234, "s");
rb6el = roots(b6el);
ra6el = roots(a6el);
rb6eli = 1./rb6el;
[~, ira6el] = sort(imag(ra6el));
[~, irb6eli] = sort(imag(rb6eli));
ra6eld = vertcat(ra6el(ira6el), -ra6el(ira6el));
rb6elid = vertcat(rb6eli(irb6eli), -rb6eli(irb6eli));
ra18syn = -interpft(ra6eld, 36)(18:35);
rb18syn = -1./interpft(rb6elid, 36)(18:35);
freqs(poly(rb18syn), poly(ra18syn), [0:10000]/10000);

6th order <code>ellip</code>-generated filter
18th order filter derived from the
Figure 8. Top) 6th order ellip-generated filter, Bottom) 18th order filter derived from the 6th order filter. Zoomed in, the pass band has only two maxima and about 1 dB of ripple. The stop band is nearly equiripple with 2.5 dB of variation.

My guess about the trouble at the pass band is that the band-limited interpolation isn't working well enough with the (real parts of the) poles.

Exact curves for elliptic filters

It turns out that elliptic filters for which NNz=NNp=N provide positive examples to questions 1 and 2. C. Sidney Burrus, Digital Signal Processing and Digital Filter Design (Draft). OpenStax CNX. Nov 18, 2012 gives the zeros and poles of the transfer function of a sufficiently general NNz=NNp=N elliptic filter in terms of the Jacobi elliptic sine sn(t,k). Noting that sn(t,k)=sn(t,k), Burrus Eq. 3.136 can be rewritten for zeros szi, i=1N as:

(1)szi=jksn(K+K(2i+1)/N,k),

where K is a quarter period of sn(t,k) for real t, and 0k1 can be seen as a degree of freedom in the parameterization of the filter. It controls the transition band width relative to pass band width. Recognizing (2i+1)/N=2α (see Eq. 2 of the question) where α is the parameter of the parametric curve:

(2)fz(α)=jksn(K+2Kα,k),

Burrus Eq. 3.146 gives the upper-left quarter-plane poles including a real pole for odd N. It can be rewritten for all poles spi, i=1N with any N as:

(3)spi=cn(K+K(2i+1)/N,k)dn(K+K(2i+1)/N,k)sn(ν0,1k2)×cn(ν0,1k2)+jsn(K+K(2i+1)/N,k)dn(ν0,1k2)1dn2(K+K(2i+1)/N,k)sn2(ν0,1k2),

where dn(t,k)=1k2sn2(t,k) is one of the Jacobi elliptic functions. Some sources have k2 as the second argument for all of these functions and call it the modulus. We have k and call it the modulus. The variable 0<ν0<K´ can be thought of as one of the two degrees of freedom (k,ν0) of the sufficiently general parametric curves, and one of the three degrees of freedom (k,ν0,N) of a sufficiently general elliptic filter. At ν0=0 the pass band ripple would be infinite and at ν0=K´ where K´ is the quarter period of Jacobi elliptic functions with modulus 1k2, poles would equal zeros. By sufficiently general I mean that there is just one remaining degree of freedom that controls the pass band edge frequency and which will manifest itself as uniform scaling of both parametric curve functions by the same factor. The subset of elliptic filters that share fp(α), fz(α), and an irreducible fraction Nz/Pz=1, are transformed to another subset of infinite size in dimension N upon change of the trivial degree of freedom.

By the same substitution as with the zeros, the parametric curve for the poles can be written as:

(4)fp(α)=cn(K+2Kα,k)dn(K+2Kα,k)sn(ν0,1k2)×cn(ν0,1k2)+jsn(K+2Kα,k)dn(ν0,1k2)1dn2(K+2Kα,k)sn2(ν0,1k2).

Let's plot the functions and the curves in Octave, for values of k and ν0 (v0in the code) copied from Burrus Example 3.4:

k = 0.769231; 
v0 = 0.6059485; #Maximum is ellipke(1-k^2)
K = 1024; #Resolution of plots
[snv0, cnv0, dnv0] = ellipj(v0, 1-k^2);
dnv0=sqrt(1-(1-k^2)*snv0.^2); # Fix for Octave bug #43344
[sn, cn, dn] = ellipj([0:4*K-1]*ellipke(k^2)/K, k^2);
dn=sqrt(1-k^2*sn.^2); # Fix for Octave bug #43344
a2K = [0:4*K-1];
a2KpK = mod(K + a2K - 1, 4*K)+1;
fza = i./(k*sn(a2KpK));
fpa = (cn(a2KpK).*dn(a2KpK)*snv0*cnv0 + i*sn(a2KpK)*dnv0)./(1-dn(a2KpK).^2*snv0.^2);
plot(a2K/K/2, real(fza), a2K/K/2, imag(fza), a2K/K/2, real(fpa), a2K/K/2, imag(fpa));
ylim([-2,2]);
a = [1/6, 3/6, 5/6];
ai = round(a*2*K)+1;
scatter(vertcat(a, a), vertcat(real(fza(ai)), imag(fza(ai)))); ylim([-2,2]); xlim([0, 2]);
scatter(vertcat(a, a), vertcat(real(fpa(ai)), imag(fpa(ai))), "red", "x"); ylim([-2,2]); xlim([0, 2]);

Analytic extensions of parametric curve functions for Burrus Example 3.4
Figure 9. fz(α) and fp(α) for Burrus Example 3.4, analytically extended to period α=02. The three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) of the example are sampled uniformly with respect to α at α=1/6, α=3/6, and α=5/6, from these functions, per Eq. 2 of the question. With the extension, the reciprocal of Im(fz(α)) (not shown) oscillates very gently, making it easy to approximate by a truncated Fourier series as in the previous sections. The other periodic extended functions are also smooth, but not so easy to approximate that way.

plot(real(fpa)([1:2*K+1]), imag(fpa)([1:2*K+1]), real(fza)([1:2*K+1]), imag(fza)([1:2*K+1]));
xlim([-2, 2]);
ylim([-2, 2]);
scatter(real(fza(ai)), imag(fza(ai))); ylim([-2,2]); xlim([-2, 2]);
scatter(real(fpa(ai)), imag(fpa(ai)), "red", "x"); ylim([-2,2]); xlim([-2, 2]);

Parametric curves for Burrus Example 3.4
Figure 10. Parametric curves for Burrus Example 3.4. Horizontal axis: real part, vertical axis: imaginary part. This view does not show the speed of the parametric curve so the three poles (red crosses) and the three zeros (blue circles, one infinite and not shown) do not appear to be uniformly distributed on the curves, even as they are, with respect to the parameter α of the parametric curves.

Elliptic filter design by the exact pole and zero formulas given by Burrus is fully equivalent to sampling from the exact fp(α) and fz(α), so methods are equivalent and available. Question 1 remains open-ended. It may be that other types of filters have infinite subsets defined by fp(α) and fz(α) and Nz/Np. Of methods of approximating the elliptic parametric curves, those that do not depend on the exact functional form may be transferable to other filter types, I think most likely to those that generalize elliptic filters, such as some subset of general equiripple filters. For them, exact formulas for poles and zeros may be unknown or intractable.

Going back to Eq. 2, for odd N, we have for one of the zeros α=0.5, which sends it to infinity by sn(2K,k)=0. No such thing takes place with the poles (Eq. 4). I have updated the question to have such zeros (and poles, in case) included in the count NNz (or NNp). At k=0, all zeros go to infinity according to fz(α), which looks to give type I Chebyshev filters.

I think question 3 just got resolved and the answer is "yes". That, as it appears that we can cover all cases of elliptic filter without being in conflict with NNz=NNp, with the new definition of those.


Olli, you can't give yourself the bounty anyway. your 500 points are gone forever. just don't waste them like i did accidentally once at the EE.SE page.
robert bristow-johnson el

Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
jojek

1
Sí, todavía lo son, ese es el caso especial para pedidos impares, cuando hay un polo adicional, único y real, rmi/ /(s+rmi), a la función de transferencia. En cuanto a la función racional a partir de ceros, solo tiene:
R(X)=yonorte/ /2X2-zmiroyo2jnorte/ /2X2-k/ /zmiroj2
, dónde k=Fs/ /Fpag. Para pedidos impares,R(X)=R(X)X. Esto hará que el filtro tenga una ganancia no normalizada, por lo que debe ser escalado porR(0 0). Los polos provienen de la expansión1+ϵ2R2(X) y encontrar las raíces del denominador, luego seleccionar el lado izquierdo y formar la función de transferencia.
un ciudadano preocupado el

No estaba seguro si dije esto. Para que la transferencia funcione, no es realmente necesario seguir el libro haciendoH(s)H(-s), luego los polos del lado izquierdo, luego la función de transferencia racional de acuerdo con la fórmula de @ A_A. Matemáticamente, y el resultado práctico, es que después de encontrar las raíces de1+ϵ2R2(X) (Nota: Xno jωo s), simplemente seleccione las raíces con las partes reales positivas y las partes positivas o negativas (no ambas). Es decir paranorte=4 4, habría 4 pares / 8 polos; Después de la selección tiene 2 polos diferentes. Entonces simplemente:
norte(s)=yonorte/ /2El |pagyoEl |2
...
un ciudadano preocupado

(for all-pole filters), where p=σ+jω, and
N(s)=iN/2s2+|zi|2
, where z=jμ (for pole-zero filters), while the denominator:
D(s)=jN/2s2+2Re(pj)s+|pj|2
and
H(s)=N(s)D(s)
. This would be the lowpass prototype.
un ciudadano preocupado

0

¡Parece que la mayoría de los participantes en esta discusión no conocen un tipo de filtro que pueda ser su solución real! A saber, los filtros Paynter desarrollados por Henry M.Paynter, que era profesor en el MIT y socio de Philbrick Reseach. Son el mejor enfoque para "ejecutar" el filtrado promedio y el tratamiento de señales de entrada no deterministas, mucho mejor que Bessel-Thomson. Los usé para aplicaciones fisiológicas, médicas y de sonar. Sus teorías están en las ediciones de enero-julio y julio-octubre del "Lightning Empiricist" bajo el título general: "Nuevos enfoques para el diseño de filtros de paso bajo activo" de Peter D. Hansen. Las tablas se dan para los polos del segundo , Filtros de 4to y 6to orden. Calculé lo mismo para el octavo orden.


Y parece que se perdió el punto de OP: encontrar el Santo Grial de las fórmulas matemáticas que se pueden usar para calcular cualquier tipo de filtro (o similar). :-)
un ciudadano preocupado

0

I'll add here some notes that may be useful if someone wants to calculate the limit N of the Nth root of magnitude of a transfer function with a multiple of N poles and zeros distributed on arbitrary parametric curves. One could approximate that by using a large N and by distributing the poles and zeros uniformly over the parameter of the parametric curve. Unfortunately the approximation always has infinite error on dB scale at the locations of the poles and zeros of the realizable transfer function. In that sense a better building block is a line segment with uniform pole or zero distribution along its length. Considering just N zeros, distributed on a line segment with start point x0+y0i and end point x1+y1i:

limN|H(0)|1/N=01|(x0+y0i)(1α)+(x1+y1i)α|dα=01((x0(1α)+x1x)2+(y0(1α)+y1α)2)dα=e01log((x0(1α)+x1α)2+(y0(1α)+y1α)2)dα=e((x0y1x1y0)atan2(x0y1x1y0,x0x1+y0y1)(x0x1)2+(y0y1)21)×(x02+y02)(x1(x0x1)+y0(y0y1)+(x0x1)22((x0x1)2+(y0y1)2))×(x12+y12)(x0(x1x0)+y1(y1y0)+(x1x0)22((x1x0)2+(y1y0)2))

Some special cases need to be handled separately. If x0=0 and y0=0 we must use the limit:

=e1x12+y12

Or conversely if x1=0 and y1=0:

=e1x02+y02

Or if the line segment has zero length, x0=x1 and y0=y1, we have just a regular zero:

=x02+y02

To do the evaluation at different argument values of H(z) or H(s), simply subtract that value from the line start and end points.

What this looks like on the complex plane: Magnitude of the transfer function with a single zero
Figure 1. Magnitude of the transfer function with a single zero. 1 dB steps are indicated in turquoise and 10 dB steps in yellow.

The limit N->inf of the Nth root of magnitude of a transfer function with N zeros uniformly distributed on a line segment
Figure 2. The limit N of the Nth root of magnitude of a transfer function with N zeros uniformly distributed on a line segment. There is a crease at the line segment, but the value never goes to zero like with a regular, realizable zero. At sufficient distance this would look like a regular zero. The color code is the same as in Fig. 1.

enter image description here
Figure 3. An approximation of Fig. 2 using discrete zeros: 5th root of the magnitude of a polynomial with 5 zeros distributed uniformly on the line segment. At the location of each zero, the value is zero, because 01/5=0.

Figs. 1 and 2 were generated using this Processing sketch, with source code:

float[] dragPoints;
int dragPoint;
float dragPointBackup0, dragPointBackup1;
boolean dragging, activated;
PFont fnt;
PImage bg;
float pi = 2*acos(0.0);
int appW, appH;
float originX, originY, scale;

int numDragPoints = 2;

void setup() {
  appW = 600;
  appH = 400;
  originX = appW/2;
  originY = appH/2;
  scale = appH*7/16;
  size(600, 400);
  bg = createImage(appW, appH, RGB);
  dragging = false;
  dragPoint = -666;
  dragPoints = new float[numDragPoints*2]; 
  dragPoints[0] = originX-appW*0.125;
  dragPoints[1] = originY+appH*0.125;
  dragPoints[2] = originX+appW*0.125;
  dragPoints[3] = originY-appH*0.125;
  fnt = createFont("Arial",16,true);
  ellipseMode(RADIUS);
  activated = false;
}

void findDragPoint() {
  int cutoff = 49;
  int oldDragPoint = dragPoint;
  float dragPointD = 666666666;
  dragPoint = -666;
  for (int t = 0; t < numDragPoints; t++) {
    float d2 = (mouseX-dragPoints[t*2])*(mouseX-dragPoints[t*2]) + (mouseY-dragPoints[t*2+1])*(mouseY-dragPoints[t*2+1]);
    if (d2 <= dragPointD) {
       dragPointD = d2;
       if (dragPointD < cutoff) {
         dragPoint = t;
       }
    }
  }
  if (dragPoint != oldDragPoint) {
    loop();
  }
}

void mouseMoved() {
  if (activated) {
    if (!dragging) {
      findDragPoint();
      loop();
    }
  }
}

void mouseClicked() {
  if (dragPoint < 0) {
    activated = !activated;
    if (activated) {
      findDragPoint();      
    }
  }
  loop();
}

void mousePressed() {  
  if (dragPoint >= 0) {
    dragging = true;
    dragPointBackup0 = dragPoints[dragPoint*2];
    dragPointBackup1 = dragPoints[dragPoint*2+1];
  } else {
    dragging = false; // Not needed?
  }
  loop();
}

void mouseDragged() {
  if (!activated) {
    dragPoint = -666;
    activated = true;
    findDragPoint();
  }
  if (dragging) {
    int x = mouseX;
    int y = mouseY;
    if (x < 5) {
      x = 5;
    } else if (x >= appW - 5) {
      x = appW - 6;
    }
    if (y < 5) {
      y = 5;
    } else if (y >= appH - 5) {
      y = appH - 6;
    }
    dragPoints[dragPoint*2] = x;
    dragPoints[dragPoint*2+1] = y;
    loop();
  }  
}

void mouseReleased() {
  if (activated && dragging) {
    dragging = false;
    loop();
  }
}

float sign(float value) {
  if (value > 0) {
    return 1.0;
  } else if (value < 0) {
    return -1.0;
  } else {
    return 0;
  }
}

void draw() {
  for(int y = 0; y < appH; y++) {
    for(int x = 0; x < appW; x++) {
      float x0 = (dragPoints[0]-x)/scale;
      float y0 = (dragPoints[1]-y)/scale;
      float x1 = (dragPoints[2]-x)/scale;
      float y1 = (dragPoints[3]-y)/scale;
      float gain;
      if (x0 == x1 && y0 == y1) {
        gain = sqrt(x0*x0 + y0*y0);
      } else if (x0 == 0 && y0 == 0) {
        gain = exp(-1)*sqrt(x1*x1 + y1*y1);
      } else if (x1 == 0 && y1 == 0) {
        gain = exp(-1)*sqrt(x0*x0 + y0*y0);
      } else {
        gain = exp((x0*y1 - x1*y0)*atan2(x0*y1 - x1*y0, x0*x1 + y0*y1)/(sq(x0 - x1) + sq(y0 - y1)) - 1)*pow(x0*x0 + y0*y0, (x1*(x0 - x1) + y0*(y0 - y1) + sq(x0 - x1))/(2*(sq(x0 - x1) + sq(y0 - y1))))*pow(x1*x1 + y1*y1, (x0*(x1 - x0) + y1*(y1 - y0) + sq(x1 - x0))/(2*(sq(x1 - x0) + sq(y1 - y0))));
      }
      int intensity10 = round(log(gain)/log(10)*0x200)&0xff;
      int intensity1 = round(log(gain)/log(10)*(0x200*10))&0xff;
      bg.pixels[y*appW + x] = color(intensity10, 0xff, intensity1);
    }
  }
  image(bg, 0, 0);
  noFill();
  stroke(0, 0, 255);
  strokeWeight(1);
  line(dragPoints[0], dragPoints[1], dragPoints[2], dragPoints[3]);  

  //ellipse(originX, originY, scale, scale);  
  if (!activated) {
    textFont(fnt,16);
    fill(0, 0, 0);
    text("Click to activate",10,20);
    for (int x = 0; x < appW; x++) {
      color c = color(110*x/appW+128, 110*x/appW+128, 110*x/appW+128);
      set(x, 0, c);  
    }
    for (int y = 0; y < appH; y++) {
      color c = color(110*y/appH+128, 110*y/appH+128, 110*y/appH+128);
      set(0, y, c);  
    }
  }

  for (int u = 0; u < numDragPoints; u++) {
    stroke(0, 0, 255);
    if (dragPoint == u) {
      if (dragging) {
        fill(0, 0, 255);
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 5, 5);
      } else {
        noFill();
        strokeWeight(3);
        ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
      }
    } else {
      //noFill();
      //strokeWeight(1);
      //ellipse(dragPoints[u*2], dragPoints[u*2+1], 6, 6);
    }
  }
  noLoop();
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.