7 votos

Regla de diseño gráfico del filtro Bessel-Thomson

Un filtro paso bajo Butterworth puede diseñarse "gráficamente" espaciando sus polos por igual en el círculo unitario y utilizando sólo los polos del semiplano izquierdo.

¿Existe una regla similar para encontrar los polos de un filtro Bessel-Thomson?

1 votos

Están en una elipse que se estira en el eje jw en comparación con el \$\sigma\$ eje y creo que deberías poder calcularlo a partir del polinomio pero nunca lo he hecho. Probablemente lo sabías, un hombre de tu calibre. Los filtros más inclinados también tienen polos en una elipse pero la elipse es más ancha en el \$\sigma\$ eje. Cuando un filtro empinado se transforma en un bessel pasa por el butterworth \$\omega_n\$ círculo.

0 votos

El fotón, ¿es una cuestión puramente teórica? Por supuesto, uno puede preguntarse esas cosas. Mi única pregunta es: ¿con qué fin? Para diseñar filtros Thomson-Bessel, existen otras reglas de diseño más orientadas a la práctica (por ejemplo, la lista de frecuencias de los polos y los valores Q de los polos). Además, en el caso de las aproximaciones de Bessel, no es infrecuente definir las frecuencias de corte en el dominio temporal (propiedades de retardo) en función de los requisitos de la aplicación.

0 votos

@LvW, el motivo de la pregunta es tener una forma más fácil de recordar, y quizás más intuitiva, de construir (o verificar) un filtro B-T.

9voto

dumfries Puntos 1

\$\color{red}{\text{I made a mistake and I need to redo parts of the answer!}}\$ Mis disculpas, sin embargo, el error no es tan grave, ya que no todas las respuestas son erróneas . Me molestaba saber por qué el retardo de grupo no es plano para un orden 13, o por qué la respuesta al impulso no tiene una caída menor (ya que Bessel no es una gaussiana). Me di cuenta de que el error ya se insinuó cuando dije que usé el postes sin clasificar para el Bessel, que causó que la función de transferencia (aunque no por mucho). Esto significa que tengo que rehacer la parte de la respuesta que trata de la comparación entre el método de Bessel y el de colocación de polos; todo lo demás está bien. Una vez más, lo siento por el error. Siéntase libre de downvote, si lo desea.


Similar, aunque no te saldrá sólo con eso, no hay solución de forma cerrada ya que se encuentran sólo en base a los polinomios de Bessel (es decir, root-finding). Los polos se colocan en una elipse, como Andy menciona, pero con un desplazamiento en el lado derecho. Aquí está para N=13 por ejemplo (mitad superior):

bessel


Aún así, como el polinomio generador es fijo, es decir, sólo se necesita escalar la frecuencia, entonces los polos también son fijos y se pueden generar a priori, para una tabla (como solución más fácil).


Para mayor claridad, aquí está el polinomio generador:

$$s^{13}+91*s^{12}+4095*s^{11}+120120*s^{10}+2552550*s^9+41351310*s^8+523783260*s^7+5237832600*s^6+41247931725*s^5+252070693875*s^4+1159525191825*s^3+3794809718700*s^2+7905853580625*s+7905853580625$$

  • \$\color{red}{\text{This is the initial mistake.}}\$ La función de transferencia se basaba en los polos, pero la fase y el retardo de grupo en el polinomio anterior, porque tanto el atan() como el diff() explotaban numéricamente.

y aquí están los polos ( sin clasificar ):

re=[-8.947709674391792,-8.470591771477185,-6.90037282614666,-8.830252084144904,-5.530680983344037,-7.844380277062596,-3.449867220628723];
im=[0.0,-3.483868450660993,-7.070644312152949,-1.736666400307631,-8.972247775155788,-5.254903406611962,-11.0739285522162];

para comparar, los polos de un Chebyshev con 0,01dB de ondulación:

re=[0.035061327,0.10314634,0.16523687,0.21772443,0.25755864,0.28242447,0.29087682];
im=[1.0338525,0.97376873,0.85709308,0.6906063,0.48398399,0.24923429,0.0];

También, para comparar, los polos de Bessel con un círculo y los polos de Chebyshev, ambos escalados para una mejor comparación:

comp

Nótese que la elipse en el caso de Chebyshev está alineada con el eje mayor a lo largo del eje Y, mientras que los polos de Bessel se alinean con el eje menor en el eje Y, aunque también tienen un desplazamiento.


Recuerdo un libro que afirmaba que los polos se encuentran en un círculo, desplazados hacia la derecha, y que comparten los mismos ángulos que el Butterworth, pero proyectados sobre este círculo. He utilizado ahora un N = 35 (impar para el extra, único polo real), con un círculo, con X proporcional y el eje Y, pero todavía a escala para una mejor comparación:

pz

El círculo se escala (tanto en X como en Y) en 37, y se desplaza hacia la derecha en 37-max(realpart(s Bessel )). Como puedes ver, las curvas difieren. Una vez intenté lo que pides ahora, tratando de aproximar con un 90 o curva cosh() rotada -- cerca, pero no puro, como se suele decir. He aquí una comparación:

cosh

Simplemente dimití y, años después, esta pregunta se preguntó en dsp.se (advertencia: post largo). Me temo que, a veces, no existe el santo grial. En este caso, te quedas con la fórmula generadora del polinomio:

$$a_k=\frac{(2N-k)!}{2^{N-k}k!(N-k)!}$$

que puede volverse "esponjoso" para \$k\rightarrow 0\$ por lo que la recursiva puede llevarte un poco más lejos, pero con pequeños problemas de redondeo:

$$\frac{a_{k+1}}{a_k}=\frac{2(N-k)}{(2N-k)(k+1)}$$

A partir de ahí es el algoritmo de búsqueda de raíces de su elección. O, como dije, puedes hacer tablas, por ejemplo aquí están las raíces completas de hasta N=20, en doble precisión. Nota : estos son sin escala es decir, calculado para el retardo, no para la frecuencia:

[0.8660254037844386i-1.5,-0.8660254037844386i-1.5]
[1.754380959783721i-1.838907322686957,-1.754380959783721i-1.838907322686957,-2.322185354626086]
[2.657418041856753i-2.103789397179628,-2.657418041856753i-2.103789397179628,0.8672341289345046i-2.896210602820372,-0.8672341289345046i-2.896210602820372]
[1.742661416183209i-3.351956399153524,-1.742661416183209i-3.351956399153524,3.57102292033797i-2.324674303181644,-3.57102292033797i-2.324674303181644,-3.646738595329665]
[0.8675096732313591i-4.248359395863367,-0.8675096732313591i-4.248359395863367,2.626272311447123i-3.735708356325813,-2.626272311447123i-3.735708356325813,4.492672953653945i-2.51593224781082,-4.492672953653945i-2.51593224781082]
[-4.971786858527892,1.73928606113053i-4.758290528154647,-1.73928606113053i-4.758290528154647,3.51717404770974i-4.070139163638142,-3.51717404770974i-4.070139163638142,5.420694130716758i-2.685676878943265,-5.420694130716758i-2.685676878943265]
[0.8676144453532826i-5.587886043262939,-0.8676144453532826i-5.587886043262939,4.414442500471611i-4.368289217202395,-4.414442500471611i-4.368289217202395,6.353911298604868i-2.838983948897615,-6.353911298604868i-2.838983948897615,2.616175152642267i-5.20484079063705,-2.616175152642267i-5.20484079063705]
[-6.29701918171626,1.737848383480994i-6.129367904273693,-1.737848383480994i-6.129367904273693,5.317271675435797i-4.638439887180668,-5.317271675435797i-4.638439887180668,7.291463688342168i-2.979260798180018,-7.291463688342168i-2.979260798180018,3.498156917885823i-5.604421819507492,-3.498156917885823i-5.604421819507492]
[0.8676651954556653i-6.92204490542646,-0.8676651954556653i-6.92204490542646,4.384947188943571i-5.967528328589314,-4.384947188943571i-5.967528328589314,6.224985482471234i-4.886219566858243,-6.224985482471234i-4.886219566858243,2.611567920796636i-6.61529096547683,-2.611567920796636i-6.61529096547683,8.232699459073597i-3.108916233649153,-8.232699459073597i-3.108916233649153]
[-7.622339845841585,3.489014503562782i-7.057892387669757,-3.489014503562782i-7.057892387669757,5.276191743697423i-6.301337454878748,-5.276191743697423i-6.301337454878748,1.737102820741282i-7.484229860704635,-1.737102820741282i-7.484229860704635,9.17711156870874i-3.229722089920541,-9.17711156870874i-3.229722089920541,7.13702075889222i-5.115648283905527,-7.13702075889222i-5.115648283905527]
[2.609066536949217i-7.997270599615764,-2.609066536949217i-7.997270599615764,0.8676935719771167i-8.253422011415825,-0.8676935719771167i-8.253422011415825,6.171534992991226i-6.61100424994881,-6.171534992991226i-6.61100424994881,8.052906864267905i-5.329708590886263,-8.052906864267905i-5.329708590886263,4.370169593404245i-7.465571240332478,-4.370169593404245i-7.465571240332478,10.12429680724084i-3.343023307800861,-10.12429680724084i-3.343023307800861]
[-8.94770967441898,3.483868450551646i-8.470591771510001,-3.483868450551646i-8.470591771510001,7.070644312151718i-6.900372826158152,-7.070644312151718i-6.900372826158152,1.736666400425321i-8.830252084116237,-1.736666400425321i-8.830252084116237,8.97224777515357i-5.530680983342347,-8.97224777515357i-5.530680983342347,5.254903406650159i-7.844380277035037,-5.254903406650159i-7.844380277035037,11.07392855221658i-3.449867220628742,-11.07392855221658i-3.449867220628742]
[2.607553324780497i-9.363145851070561,-2.607553324780497i-9.363145851070561,0.8677110294763433i-9.583171394019896,-0.8677110294763433i-9.583171394019896,6.143041071762656i-8.198846970087834,-6.143041071762656i-8.198846970087834,7.973217354159308i-7.172395962130479,-7.973217354159308i-7.172395962130479,4.361604177587814i-8.911000555481152,-4.361604177587814i-8.911000555481152,12.02573803225484i-3.551086883381187,-12.02573803225484i-3.551086883381187,9.894707597484578i-5.72035238382889,-9.894707597484578i-5.72035238382889]
[-10.27310955148198,3.480671268214976i-9.859567223419484,-3.480671268214976i-9.859567223419484,7.034393625952233i-8.532459059160995,-7.034393625952233i-8.532459059160995,1.736388856012094i-10.17091406847279,-1.736388856012094i-10.17091406847279,8.878982621996924i-7.429396992165036,-8.878982621996924i-7.429396992165036,5.242258876713885i-9.323599304919446,-5.242258876713885i-9.323599304919446,12.97950107076231i-3.647356862491653,-12.97950107076231i-3.647356862491653,10.81999913763804i-5.900151713629612,-10.81999913763804i-5.900151713629612]
[2.606567011382309i-10.71898582131243,-2.606567011382309i-10.71898582131243,4.356163385056269i-10.32511960145284,-4.356163385056269i-10.32511960145284,6.125760887225088i-9.712326332501009,-6.125760887225088i-9.712326332501009,0.8677225109985072i-10.91188607722687,-0.8677225109985072i-10.91188607722687,9.787697438361704i-7.673240790885078,-9.787697438361704i-7.673240790885078,11.74787493845505i-6.07124138290424,-11.74787493845505i-6.07124138290424,13.93502847581496i-3.739231797160583,-13.93502847581496i-3.739231797160583,7.928772856867366i-8.84796819655695,-7.928772856867366i-8.84796819655695]
[-11.59852952544957,1.736201495207083i-11.50807674884866,-1.736201495207083i-11.50807674884866,5.23407489400232i-10.76413417397734,-5.23407489400232i-10.76413417397734,8.825998303451005i-9.147588677578124,-8.825998303451005i-9.147588677578124,7.012009979228726i-10.08029444442791,-7.012009979228726i-10.08029444442791,10.69914507525592i-7.9054495961617,-10.69914507525592i-7.9054495961617,12.67812022904479i-6.234580978311283,-12.67812022904479i-6.234580978311283,3.478543926896344i-11.23343683286985,-3.478543926896344i-11.23343683286985,14.89215892466672i-3.82717378510033,-14.89215892466672i-3.82717378510033]
[0.8677305796056393i-12.23990211013843,-0.8677305796056393i-12.23990211013843,4.352480023166813i-11.71894899465382,-4.352480023166813i-11.71894899465382,7.9008930883336i-10.43001303090171,-7.9008930883336i-10.43001303090171,6.114394005840858i-11.18003883474541,-6.114394005840858i-11.18003883474541,9.725900329506054i-9.433132214976286,-9.725900329506054i-9.433132214976286,2.605887611187429i-12.06813579593398,-2.605887611187429i-12.06813579593398,13.61054734922753i-6.390972783893709,-13.61054734922753i-6.390972783893709,15.85075359693817i-3.911572291156902,-15.85075359693817i-3.911572291156902,11.61313174828707i-8.127283943599762,-11.61313174828707i-8.127283943599762]
[-12.92396298726643,3.477057739745347i-12.59706211536081,-3.477057739745347i-12.59706211536081,6.997077172796814i-11.57560275196964,-6.997077172796814i-11.57560275196964,10.62832089711397i-9.70610250233404,-10.62832089711397i-9.70610250233404,1.73606799805627i-12.84282859307907,-1.73606799805627i-12.84282859307907,5.228447830672733i-12.17923016627348,-5.228447830672733i-12.17923016627348,12.52948385810331i-8.339800733603411,-12.52948385810331i-8.339800733603411,14.54499130235651i-6.541095058909744,-14.54499130235651i-6.541095058909744,16.81069206004072i-3.992758917950229,-16.81069206004072i-3.992758917950229,8.792293285710413i-10.76353766688636,-8.792293285710413i-10.76353766688636]
[0.8677350518003363i-13.56742501366895,-0.8677350518003363i-13.56742501366895,4.349859625596589i-13.09881927110951,-4.349859625596589i-13.09881927110951,7.882058991191003i-11.95308937929071,-7.882058991191003i-11.95308937929071,9.686092710205683i-11.08258050261995,-9.686092710205683i-11.08258050261995,2.605405205905522i-13.41259743649624,-2.605405205905522i-13.41259743649624,13.44804526520383i-8.543895716554248,-13.44804526520383i-8.543895716554248,11.53311485564302i-9.967762520706822,-11.53311485564302i-9.967762520706822,6.106481551595795i-12.61728471920278,-6.106481551595795i-12.61728471920278,17.77186906891292i-4.071018561839362,-17.77186906891292i-4.071018561839362,15.48130618749379i-6.685526878511447,-15.48130618749379i-6.685526878511447]

Dudo que necesites más, pero, si es así, puedo copiar y pegar. Las tablas son muy útiles cuando te sobra memoria, a diferencia de los ciclos. Todo lo que necesitas a partir de ahora es el escalado de frecuencias, ya que con ellas conseguirás bonitas etapas de 2º orden.


Actualización: El post de Andy me ha recordado que una vez que inventé una fórmula de escalado de frecuencias (a partir del entonces zunzun.com. (ahora desaparecida, por desgracia), pero funciona decentemente. Por ejemplo, para el punto -3dB, un barrido de N=2 a 32 da una diferencia entre la primera y la última traza de ~0,31dB, y ~0,0125dB entre trazas adyacentes. No es perfecto, pero funciona:

$$\omega_{scale}(A_{sc})=8091309.68544832\exp\left[-0.5\left(0.09397449321551755(\ln{N}-8.03901973218457)^2+0.009140987415805315\left(\ln{A_{sc}}-54.61336204495193\right)^2\right)\right]+0.02602784079436049$$

donde A sc es la atenuación, en dB, a f c y N la orden. Como pequeño ejemplo, para el mismo orden 13 y 3dB, el escalado sería |H(j4.13082549938354)|, mientras que la fórmula dice |H(j4.1255648797584)|, lo que da -3,0025dB (0,7077408150981647). No se limita sólo a 3 dB: si quieres 1,57 dB, entonces \$\omega_{scale}\$ debería ser 2,99434327282329, mientras que la fórmula dice \$\omega_{scale}\$ =3,001850652953856, lo que da -1,577946667040319dB (0,8338782890589183). Yo digo que no está mal.


  • \$\color{red}{\text{This part is redone.}}\$ Mantendré los errores y las fotos sólo como enlaces, para avergonzar.

Actualización : Acabo de probar lo que propones, es decir, comparar el Bessel con la colocación del polo en el círculo, como dice el documento de analog.com, y dondequiera que lea. Primero, como ya tengo N=13 arriba, hice el ejemplo para N=13. Segundo, escalé los polos de Bessel para que coincidieran con el eje X.

Dado que la parte imaginaria de los polos está separada por 2/n y colocada en un círculo (no desplazada), todo lo que hay que hacer es generar una lista basada en eso, y la parte real es simplemente \$\Re=\sqrt{1-\Im^2}\$ :

im=[0,0.1538461538461539,0.3076923076923077,0.4615384615384616,0.6153846153846154,0.7692307692307693,0.9230769230769231];
re=[1.0,0.9880948137434714,0.9514859136040755,0.8871201995900613,0.7882269819968921,0.6389710663783135,0.3846153846153845];

Y así es como se ven ambos polos comparados con el círculo unitario. A partir de aquí, Bessel es azul.

poles

A continuación, haz las funciones de transferencia y compáralas. Apliqué escalado de frecuencia a ambas para que tengan -3dB@1Hz: Bessel= 3.277105084487313 , p.p.=0.3193551457708009. Curiosamente, el reverso de cada uno de ellos se aproxima al otro (menos en los órdenes inferiores). Observa que Bessel tiene un rolloff más pronunciado. Además, la magnitud según el polinomio largo anterior también se traza como la línea verde discontinua; como se solapa con la azul, ésta se mantiene como referencia a partir de ahora.

mag

(Mal: https://i.stack.imgur.com/7PtRa.png )

y la diferencia entre ellas (muestra cero hacia el final debido a imprecisiones numéricas, dados los enormes números del polinomio de Bessel original -- ya no es el caso, la función de transferencia está formada por secciones de 2º orden, formadas por solucionado polos):

magdif

(Mal: https://i.stack.imgur.com/VEbgY.png )

Luego, las fases. No es sorprendente que las diferencias debido a la diferente rolloff:

ph

(Mal: https://i.stack.imgur.com/EH5z1.png )

y la diferencia:

phdif

(Mal: https://i.stack.imgur.com/VQIA8.png )

Y lo más importante, el retraso del grupo Bessel se trunca por las mismas razones que antes). Obsérvese que el método p.p. tiene un retardo menor, debido a que el rolloff es más lento, pero también que no es tan plano como el de Bessel:

gd

(Mal: https://i.stack.imgur.com/yWv7g.png )

y la diferencia (ambas normalizadas a 1, para facilitar la comparación):

gddif

(Mal: https://i.stack.imgur.com/lVjQI.png )

Actualización: La planitud del retardo de grupo puede comprobarse con la derivada:

gdflat

Conclusión : la colocación de los polos no es una respuesta de Bessel, sino que viene muy razonablemente cerca, así que si no te importa el menor diferencias, esta es una forma muy conveniente y, quizás lo más importante, barata de generar los polos evitando los costosos algoritmos de búsqueda de raíces. Tenga en cuenta, sin embargo, que sólo he utilizado N = 13 para esto, así que, para un intento de completar, aquí es lo que las diferencias de N = 5 se parecen, en orden: magnitud, fase, retardo de grupo, actualización y la planitud del retardo de grupo:

mag5 ph5 gd5 flat5

(Mal: https://i.stack.imgur.com/YVA1j.png , https://i.stack.imgur.com/gNKCc.png , https://i.stack.imgur.com/gqegm.png )


Como añadido menor, aquí están las respuestas al impulso de los dos de 5º orden, con el mismo Bessel=azul (usando las versiones escaladas en frecuencia -3dB):

(Mal: https://i.stack.imgur.com/BG4MF.png )

[He añadido esta parte al final]

  • \$\color{red}{\text{End of redone, part 1.}}\$

Bueno, has abierto una vieja herida, felicidades. He pensado en modificar los polos de Bessel (azul) proyectándolos sobre el círculo unitario a lo largo del eje X, para que pierdan la curva que normalmente tienen y convertirlos, forzosamente (rojo). Además, por comparación, los cuadrados negros son el método p.p.

polesall

  • \$\color{red}{\text{Redone, part 2.}}\$

y las magnitudes del Bessel (azul) cerca del Bessel convertido ( rojo magenta discontinuo) y p.p. ( negro rojo) -- por alguna razón, el rolloff es más lento para p.p., debo tener algún error tipográfico en alguna parte, no lo encontraré hoy: .

force

(Mal: https://i.stack.imgur.com/vOmao.png )

Todo para N=13, y los resultados son coherentes para 5, 9, 25, y así sucesivamente al parecer. La conclusión sigue siendo: no Bessel, sino maldito cerrar. Elige tu opción.


Esta debería ser la última edición (antes de que traspase el horizonte de sucesos de la madriguera del conejo) para abordar la cuestión del desplazamiento del círculo subyacente. Me han surgido dudas, así que quería aclararlo. Por las imágenes anteriores, está claro que no es un círculo, no es ningún cosh(), sino otra cosa, pero los números son más claros que las imágenes, así que empecé una reductio ad absurdum: ¿y si es un círculo? Entonces habría que escalarlo y desplazarlo. Esta es la idea básica:

geom

El círculo de radio OM (gris, discontinuo) es el círculo unidad, y el azul de radio MQ sería el círculo subyacente. En el punto C hay un polo cuyas coordenadas son conocidas. OM también es conocido, por lo que \$AM=1-\Re(C)\$ amd \$AC=\Im(C)\$ => el ángulo rojo (ignorar la lectura), \$\alpha=\arctan\frac{AM}{AC}\$ mientras que el ángulo verde, \$\beta=\frac{\pi}{2}-\alpha=\arctan\frac{AQ}{AC}\$ => \$MQ=AM+AC\tan\left(\frac{\pi}{2}-\arctan\frac{AM}{AC}\right)\$ siendo el desplazamiento una simple resta.

Pero, para N=13, el cálculo del radio del círculo subyacente debería ser el mismo para todos los polos, y sin embargo no lo es. Aquí están los valores de todos los radios para las partes imaginarias positivas de los polos que no están en el eje X o en el eje Y (5 polos, ver 1ª imagen):

  • \$\color{red}{\text{Redone, part 3.}}\$ Como los polos estaban mezclados, los resultados vinieron mezclados, además, calculé el diámetro. No es gran cosa, ya que el resultado es el mismo: no hay círculo subyacente.

[2.882849152139202,2.896382080602158,2.920436970785266,2.957894588441385,3.014834976457822] [1.448191040223894,1.460218485342188,1.478947294206138,1.507417488214167,1.553654588674449]

Y he aquí una representación gráfica de lo que serían los círculos subyacentes para cada uno de estos polos. Nótese que, no sólo no se superponen, sino que sólo uno de cada polo se encuentra en un círculo a la vez (por supuesto, el que se encuentra después de haber calculado el círculo):

ucb

Esto debería ser la prueba de que, por muy plano que sea el retardo de grupo de la aproximación de colocación de polos, es sólo una aproximación, no un Bessel en el verdadero sentido. IMHO, esto debería haber sido especificado tanto por analog.com como por cualquier otra fuente que lo mencione -- que es una aproximación , a muy bueno buena, pero no Bessel(-Thompson).


Y, como la herida es profunda, aquí hay más. Me parece que, cuanto mayor sea el orden, más el método p.p. converge hacia un filtro gaussiano, y, efectivamente, aquí está un gráfico de una función gaussiana de referencia, \$\exp\left(-\frac{\ln2}{2}x^2\right)\$ (negro), una función de transferencia aproximada "a la Bessel" (azul, necesita escalado de frecuencia) y una versión libre, sin escalado de frecuencia, del método p.p. (rojo):

gaumag

Si no ves ninguna diferencia es por las pequeñas cosas de la vida:

gaulog

¿Significa esto que el método p.p. converge hacia un filtro gaussiano? No. Aquí están los polos de la gaussiana (azul) y el de Bessel (rojo), escalados para compararlos con el círculo unitario:

gaup

Están aún más dispersos. Pero ¿están, al menos, situados en un círculo, desplazados o no? Aquí están los resultados de los radios de los círculos, en un método similar al de Bessel, más arriba:

[2.216482009751927,2.067108140129843,1.988005879596608,1.939764970045811,1.910091446017072]

y la representación gráfica, tras otro intento forzado de proyectarlos sobre el círculo unitario (de nuevo, de la misma forma que Bessel, más arriba):

ucg

Para completar, he aquí la respuesta al impulso de la gaussiana (azul), comparada con la de Bessel (rojo) y el método p.p. (verde):

hgbp

Dada esta prueba final, el método p.p. es incluso mejor en términos de dominio temporal en comparación con el gaussiano, pero eso también significa que, en términos de frecuencia, es un desastre. Sin embargo, estoy pensando en otro pproach, pero eso será para otro día.

3voto

dumfries Puntos 1

Hago esta respuesta por separado, porque se trata de encontrar una aproximación, directamente, a diferencia de la respuesta si es que existe tal cosa.

Antes de continuar, debo mencionar que este ha sido un viejo pensamiento que se dejó de lado, después de probar postes de la forma \$\cosh n+j\sinh n\$ o un Butterworth hiperbólico distorsionado, entre otros. Esta vez, y sobre todo después de este revival, intentaré un enfoque diferente, más (espero) educado.

Como se muestra en la otra respuesta, no hay ningún círculo subyacente, y la curva tampoco es una exótica cosh(). Pero es una curva, y vamos a ver si, tal vez, podemos utilizar las señales visuales para determinar una aproximación. Aquí están los polos del mismo Bessel con N=13, pero esta vez divididos en partes reales (azul) e imaginarias (rojo) (normalizados al círculo unitario):

poles

Los ejes no son proporcionales, de modo que las partes reales se parecen mucho a un círculo, lo que explicaría por qué alguien pensaría que están situadas sobre un círculo subyacente, si no las ha trazado como en la respuesta anterior, comparándolas directamente con uno. Pero, si nos fijamos bien, las partes imaginarias son no lineal se curvan hacia arriba y hacia abajo hacia los extremos, como una tangente. Además, el círculo no es exactamente un círculo (como se verá más adelante), por lo que los errores se suman.

Veamos qué obtenemos si probamos con un círculo, \$\sqrt{1-x^2}\$ y una tangente. ¿Pero con qué valores? Probemos de 1 a -1, para no complicarnos. El paso debería ser 2/N, igual que en la(s) referencia(s), pero también una elección lógica:

try1

El círculo ya parece bastante cercano, pero la tangente es demasiado. Se necesita una curva más suave. Debido a la naturaleza de la función de transferencia de Bessel como aproximación de \$\exp(-s)=\frac{1}{\sinh s+\cosh s}\$ me viene a la mente sinh():

try2

La curva se ve mucho mejor, lo único que hace falta es escalarla, digamos 1,2. Al círculo también le vendría bien un poco de "curvatura", así que probemos a elevar la raíz cuadrada a una potencia fraccionaria, suficientemente pequeña, digamos 1,1:

try3

A sinh() le vendría bien menos curvatura, al círculo le vendría bien menos caída hacia los extremos, pero se ve bien, ciertamente mejor que simplemente proyectar sobre un círculo. Así que vamos a probarlos. Primero con el círculo sin escalar y sinh(), un 5º orden, comparado con un Bessel, ambos escalados para -3dB@1Hz:

test1

Tengo que decir que se ve muy bien para un simple sqrt() y un sinh(), a diferencia de algún gran polinomio hecho de factoriales, resuelto con algoritmos de búsqueda de raíces:

.func real(x) {sqrt(1-((x-evenN/2)*2/N)**2)}
.func imag(x) {sinh((x-evenN/2)*2/N)}

donde evenN es 1 si N es par, y 0 si no (bastante autoexplicativo), y la función de transferencia se utilizó como un Laplace (utilizando LTspice), en .AC como muestra esta fuente (el último es un pedido único para evenN=0 ):

E1 1 0 i 0 Laplace=({real(1)}^2 + {imag(1)}^2)/((s/w)^2 + s/w*2*{real(1)} + {real(1)}^2 + {imag(1)}^2)

Dado que Laplace, en LTspice, puede ser muy poco fiable en .TRAN (por no decir otra cosa), se puede utilizar en su lugar la siguiente etapa de 2º orden. Advertencia: esto es para sólo paso bajo omnipolar es sin búfer y asume una función de transferencia estrictamente correcta.

2nd

Para terminar, un barrido para N de 2 a 8:

sweep

Por alguna razón me parece bonito, comparado con los resultados del método de colocación de postes de la respuesta anterior. Para órdenes inferiores algunos ajustes pueden ser necesarios, por ejemplo, la potencia de la sqrt() y la escala de la sinh(), y tiene que haber alguna escala de frecuencia, aquí la siguiente tabla se ha utilizado:

.func wsc(x) {table(x, 2, 0.806, 3, 0.7367, 4, 0.6783, 5, 0.6259, 6, 0.5803, 7, 0.5416, 8, 0.509)}

No se limita a los órdenes inferiores, así es como se ve para N=13 (escalado de frecuencia 0,42054):

13

¿Y qué hay de la escala para los polos? Aquí hay otro barrido (N=2..8) para 1.1 como potencia a sqrt() y 1.2 escalando para sinh() (también alguna otra tabla de escalado de frecuencia):

sweep2

Curiosamente, a pesar de la visual mayor similitud con los polos originales, los resultados parecen empeorar ligeramente.

Conclusión: Por las razones mencionadas, declaro que este método es una aproximación bastante buena, pero mucho mejor, de un filtro de Bessel. Sin duda alguien puede mejorarlo, manteniendo la simplicidad de las ecuaciones para calcular los polos. Ahora es tarde y me voy a dormir, espero que la herida pueda cerrarse ya.


Sólo una nota final y lo dejaré así. Después de un poco de martilleo menor (no tengo miedo de ensuciarme), volví a mi conjetura original para la parte imaginaria, tan(), y luego ajusté las fórmulas para terminar con:

.func real(x) {sqrt(1-abs((x-evenN/2)*2/N)**2.1)}
.func imag(x) {tan((x-evenN/2)*2/N/2.5)*3.1}

El cambio es abs(x) en lugar de x , para permitir la potencia fraccionaria que cambia la curva de manera diferente que una potencia sobre toda la función, mientras que tan() tiene alguna división extra para entrar en la parte más suave de la curva, luego simplemente se escala hacia arriba. No voy a sobrecargar el hilo con otra imagen para los polos, que son similares a lo que ya se ha publicado, pero la respuesta es ahora cambiado. Aquí hay un barrido para .step param N 2 18 3 para una versión de ambos sin escala de frecuencia (es decir, calculada para el retardo de grupo, no para la frecuencia):

final

Los órdenes más bajos (N=2,3) tienen un poco más de rolloff, lo que resulta en un poco más de retardo de grupo, por lo que la respuesta al impulso es temporalmente un poco borrosa, pero sólo va mejor a partir de entonces. Lo único que tuve que hacer para llegar a esto fue multiplicar \$\omega\$ por un fijo término de escala de frecuencia igual a \$0.69N\$ . Esto significa que la fórmula para el escalado de frecuencia, dada en la respuesta anterior, ¡puede ser válida para el Bessel aproximado! He aquí la fórmula en funcionamiento:

freqsc

Claro que hay pequeñas incoherencias, sobre todo en los niveles inferiores, pero se pueden solucionar fácilmente. En reposo, también he probado la forma de prueba inicial hace años, donde se pensaba que los polos eran del tipo \$(2-\cosh n)+j\sinh n\$ , pero el retardo de grupo es más suave hacia fc, sin embargo, ahora he añadido la potencia y la escala, que parece dar un pequeño control sobre la nitidez, pero no como los anteriores. Y con esto concluyo toda la historia. Ojala.

0 votos

No voy a hacer otra edición, pero hay una versión retocada para las fórmulas: en lugar de 2/N es 2/N/ADJ (para ambos), y en lugar de 0.69*N es 0.69*ADJ donde ADJ=(N*N+1/1.4)/N . Aquí hay un barrido de N=2..18: i.stack.imgur.com/ccUTi.png .

2voto

ianb Puntos 659

Aporto mis dos centavos porque es interesante. No tengo una respuesta, pero sólo una imagen de las posiciones de la pole de 2 º orden a 10 º orden. Creo que es más importante para ver las tendencias entre los diferentes filtros de orden que tienen el mismo punto de 3 dB. Los datos fueron tomados de esta tabla: -

enter image description here

Y, tomando los números y usando excel se puede obtener esta imagen: -

enter image description here

¿Existe una regla similar para encontrar la ubicación de los polos de una Bessel-Thomson?

Probablemente la haya, pero está más allá de mis matemáticas. Esto es lo mejor que se me ocurre.

Sin embargo, MT-204 de Analog devices sugiere una relación entre los polos como esta: -

enter image description here

Reconozco la autoridad de la fuente, pero no parece estar de acuerdo con las tablas que se pueden encontrar habitualmente sobre el tema. También enumera la misma tabla que yo utilicé (más adelante en el documento AD) así que no estoy seguro de cómo se las arreglaron para encajar las cosas alrededor de un círculo cuando claramente no lo son. Pero, si el centro del círculo no está en el origen de sigma y jw, ¿quizá los polos sí estén en un círculo?

1 votos

Encontré ese documento de Analog unos minutos después de publicar la pregunta. Cuando tengo un minuto quiero trazar la aproximación circular frente a los valores de la tabla.

0 votos

Será interesante.

0 votos

¿Podría ser también posible que para crear un filtro de Bessel de orden n-ésimo haya más de una solución válida? Tal vez eso es algo que vale la pena considerar @ThePhoton

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X