Grafikdesignregel für Bessel-Thomson-Filter

7

Ein Butterworth-Tiefpassfilter kann "grafisch" gestaltet werden, indem seine Pole gleichmäßig auf dem Einheitskreis verteilt werden und dann nur die Pole in der linken Halbebene verwendet werden.

Gibt es eine ähnliche Regel, um die Polpositionen für einen Bessel-Thomson-Filter zu ermitteln?

Das Photon
quelle
1
Sie befinden sich auf einer Elipse, die im Vergleich zur Achse in der JW-Achse gestreckt ist, und ich denke, Sie sollten in der Lage sein, sie aus dem Polynom herauszuarbeiten, aber das habe ich nie getan. Das wussten Sie wahrscheinlich, ein Mann Ihres Kalibers. Steilere Filter haben auch Pole auf einer Elipse, aber die Elipse ist in der Achse breiter . Wenn sich ein steiler Filter in ein Gefäß verwandelt, passiert er den butterworth Kreis. σσωn
Andy aka
Das Photon, ist das eine rein theoretische Frage? Natürlich kann man solche Dinge fragen. Mein einziger Punkt ist - zu welchem ​​Zweck? Für den Entwurf von Thomson-Bessel-Filtern gibt es andere und praktischere Entwurfsregeln (z. B. Liste der Polfrequenzen und Pol-Q-Werte). Darüber hinaus ist es für Bessel-Näherungen - im Hinblick auf die Anwendungsanforderungen - nicht ungewöhnlich, die Grenzfrequenzen im Zeitbereich (Verzögerungseigenschaften) zu definieren.
LvW
@LvW, der Grund für die Frage ist, dass es einfacher und vielleicht intuitiver ist, einen BT-Filter zu erstellen (oder zu verifizieren).
Das Photon

Antworten:

9

Ich habe einen Fehler gemacht und muss Teile der Antwort wiederholen! Ich entschuldige jedoch, dass der Fehler nicht so schlimm ist, da nicht alle Antworten falsch sind . Es störte mich, warum die Gruppenverzögerung für eine 13. Ordnung nicht flach ist oder warum die Impulsantwort keinen geringfügigen Abfall aufweist (da Bessel kein Gaußscher ist). Ich erkannte, dass der Fehler bereits angedeutet war, als ich sagte, ich hätte die unsortierten Pole für das Bessel verwendet, was dazu führte, dass die Übertragungsfunktion fehlschlug (wenn auch nicht viel). Dies bedeutet, dass ich den Teil der Antwort wiederholen muss, der sich mit dem Vergleich zwischen dem Bessel und der Polplatzierungsmethode befasst. alles andere ist in Ordnung. Wieder tut mir der Fehler leid. Fühlen Sie sich frei, abzustimmen, wenn Sie so wollen.


Ähnlich, obwohl Sie damit nicht durchkommen, gibt es keine geschlossene Lösung, da sie nur auf der Grundlage der Bessel-Polynome (dh Wurzelfindung) gefunden werden. Die Stangen sind, wie Andy erwähnt, auf einer Elipse platziert, jedoch mit einem Versatz auf der rechten Seite. Hier ist zum Beispiel für N = 13 (obere Hälfte):

bessel


Da das Erzeugungspolynom fest ist, dh nur eine Frequenzskalierung erforderlich ist, sind die Pole ebenfalls fest und können a priori für eine Tabelle erzeugt werden (als einfachere Lösung).


Zur Verdeutlichung hier das generierende Polynom:

s13+91s12+4095s11+120120s10+2552550s9+41351310s8+523783260s7+5237832600s6+41247931725s5+252070693875s4+1159525191825s3+3794809718700s2+7905853580625s+7905853580625
  • Dies ist der erste Fehler. Die Übertragungsfunktion basierte auf den Polen, aber der Phasen- und Gruppenverzögerung auf dem obigen Polynom, da sowohl atan () als auch diff () explodierten numerisch.

und hier sind die Pole ( unsortiert ):

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];

zum Vergleich die Pole eines Chebyshev mit 0,01dB Welligkeit:

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];

Zum Vergleich sind auch die Bessel-Pole mit einem Kreis und die Chebyshev-Pole zum besseren Vergleich skaliert:

comp

Beachten Sie, dass die Ellipse im Fall von Chebyshev entlang der Y-Achse mit der größeren Achse ausgerichtet ist, während sich die Bessel-Pole mit der kleineren Achse auf der Y-Achse ausrichten und gleichzeitig einen Versatz aufweisen.


Ich erinnere mich an ein Buch, in dem behauptet wurde, dass die Pole auf einem nach rechts versetzten Kreis liegen und die gleichen Winkel wie der Butterworth haben, aber auf diesen Kreis projiziert sind. Ich habe jetzt ein N = 35 (ungerade für den zusätzlichen, einzelnen reellen Pol) mit einem Kreis mit proportionaler X- und Y-Achse verwendet, aber zum besseren Vergleich immer noch skaliert:

pz

Der Kreis wird um 37 skaliert (sowohl X als auch Y) und um 37-max nach rechts verschoben (Realpart (s Bessel )). Wie Sie sehen können, unterscheiden sich die Kurven. Einmal habe ich versucht, was Sie jetzt fragen, indem ich versucht habe, mit einer um 90 ° gedrehten cosh () -Kurve zu approximieren - nah, aber keine Zigarre, wie sie sagen. Hier ist ein Vergleich:

cosh

Ich bin einfach zurückgetreten und Jahre später wurde diese Frage auf dsp.se gestellt (Warnung: langer Beitrag). Ich fürchte, manchmal gibt es einfach keinen heiligen Gral. In diesem Fall bleiben Sie bei der Erzeugungsformel für das Polynom:

eink=(2N.- -k)!2N.- -kk!(N.- -k)!

was für "flauschig" werden kann , so dass der rekursive Sie ein bisschen weiter bringen kann, aber mit kleinen Rundungsproblemen:k0

eink+1eink=2(N.- -k)(2N.- -k)(k+1)

Von da an ist es der Root-Finding-Algorithmus Ihrer Wahl. Oder, wie gesagt, Sie können Tabellen mit doppelter Genauigkeit erstellen, zum Beispiel hier die vollständigen Wurzeln von bis zu N = 20. Hinweis : Diese sind nicht skaliert , dh berechnet für Verzögerung, nicht Frequenz (!):

[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]

Ich bezweifle, dass Sie mehr brauchen, aber wenn Sie dies tun, kann ich kopieren und einfügen. Die Tabellen sind sehr nützlich, wenn Sie im Gegensatz zu Zyklen Speicherplatz zur Verfügung haben. Alles, was Sie von nun an benötigen, ist die Frequenzskalierung, da Sie dadurch schöne Stufen 2. Ordnung erhalten.


Update: Andys Beitrag erinnerte mich daran, dass ich einmal eine Frequenzskalierungsformel erfunden hatte (von damals zunzun.com., heute leider nicht mehr), aber sie funktioniert anständig. Beispielsweise ergibt für einen Punkt von -3 dB ein Sweep von N = 2 bis 32 die Differenz zwischen der ersten und der letzten Spur von ~ 0,31 dB und ~ 0,0125 dB zwischen benachbarten Spuren. Es ist nicht perfekt, aber es funktioniert:

ωsceinle(EINsc)=8091309.68544832exp[- -0,5(0,09397449321551755(lnN.- -8.03901973218457)2+0,009140987415805315(lnEINsc- -54.61336204495193)2)]]+0,02602784079436049

wobei A sc die Dämpfung in dB bei f c und N die Reihenfolge ist. Als kleines Beispiel wäre für dieselbe 13. Ordnung und 3dB die Skalierung | H (j4.13082549938354) |, während die Formel | H (j4.125564879197584) | sagt, was -3.0025dB (0.7077408150981647) ergibt. Es ist nicht nur auf 3dB beschränkt: Wenn Sie 1,57 dB möchten, sollte 2,99434327282329 sein, während die Formel = 3,001850652953856 lautet, was zu -1,577946667040319dB (0,8338782890589183) führt. Ich sage es ist nicht schlecht.ωsceinleωsceinle


  • Dieser Teil wurde überarbeitet. Ich werde die Fehler und Bilder nur als Links zum Schämen behalten.

Update : Ich habe gerade versucht, was Sie vorschlagen, das heißt, das Bessel mit der Polplatzierung auf dem Kreis zu vergleichen, wie das Dokument von analog.com und wo immer ich es lese. Erstens habe ich, da ich oben bereits N = 13 habe, das Beispiel für N = 13 gemacht. Zweitens habe ich die Bessel-Pole so skaliert, dass sie mit der X-Achse übereinstimmen.

Da der Imaginärteil der Pole durch 2 / n getrennt und auf einem Kreis platziert ist (nicht verschoben), müssen Sie nur eine darauf basierende Liste erstellen, und der Realteil ist einfach :=1- -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];

Und so sehen beide Pole im Vergleich zum Einheitskreis aus. Von hier an ist Bessel blau.

Stangen

Machen Sie als nächstes die Übertragungsfunktionen und vergleichen Sie sie. Ich habe die Frequenzskalierung auf beide angewendet, sodass sie -3 dB bei 1 Hz haben: Bessel = 3.277105084487313 , pp = 0.3193551457708009. Interessanterweise ist die Umkehrung der beiden nahe beieinander (weniger bei niedrigeren Ordnungen). Beachten Sie, dass Bessel einen steileren Rolloff hat. Zusätzlich ist die Größe gemäß dem obigen langen Polynom auch als gestrichelte grüne Linie aufgetragen; da es sich mit dem blauen überschneidet, wird das blaue von nun an als Referenz beibehalten.

mag

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

und die Differenz zwischen ihnen (sie zeigt gegen Ende Null aufgrund numerischer Ungenauigkeiten angesichts der großen Zahlen im ursprünglichen Bessel-Polynom - nicht mehr der Fall, besteht die Übertragungsfunktion aus Abschnitten 2. Ordnung, die aus aussortierten Polen bestehen .):

magdif

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

Dann die Phasen. Es überrascht nicht, dass Unterschiede aufgrund des unterschiedlichen Rolloffs:

ph

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

und der Unterschied:

phdif

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

Und das Wichtigste ist, dass die Gruppenverzögerung Bessel aus den gleichen Gründen wie oben abgeschnitten wird. Beachten Sie, dass die pp-Methode aufgrund des langsameren Rolloffs eine geringere Verzögerung aufweist, aber auch nicht so flach wie Bessel ist:

gd

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

und die Differenz (beide zum leichteren Vergleich auf 1 normiert):

gddif

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

Update: Die Ebenheit der Gruppenverzögerung kann mit der Ableitung überprüft werden:

gdflat

Fazit : Die Polplatzierung ist keine Bessel-Antwort, kommt aber sehr nahe. Wenn Sie also die kleinen Unterschiede nicht beachten , ist dies eine sehr bequeme und vielleicht am wichtigsten billige Methode, um die Pole zu erzeugen, indem Sie die teuren vermeiden Wurzelfindungsalgorithmen. Beachten Sie jedoch, dass ich hierfür nur N = 13 verwendet habe. Um einen Abschluss zu erreichen, sehen die Unterschiede für N = 5 in der folgenden Reihenfolge aus: Größe, Phase, Gruppenverzögerung, Aktualisierung und Ebenheit der Gruppenverzögerung ::

mag5 ph5 gd5 flat5

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


Als kleine Ergänzung sind hier die Impulsantworten der beiden 5. Ordnung mit demselben Bessel = blau (unter Verwendung der frequenzskalierten Versionen mit -3 dB):

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

[Ich habe diesen Teil am Ende hinzugefügt]

  • Ende der Wiederholung, Teil 1.

Nun, Sie haben eine alte Wunde geöffnet, Glückwunsch. Ich dachte darüber nach, die Bessel-Pole (blau) zu modifizieren, indem ich sie auf den Einheitskreis entlang der X-Achse projiziere, damit sie die Kurve verlieren, die sie normalerweise haben, und sie kraftvoll umwandeln (rot). Im Vergleich dazu sind die schwarzen Quadrate die pp-Methode.

polesall

  • Erneuert, Teil 2.

und die Größen des Bessel (blau) in der Nähe des konvertierten Bessel ( rot gestricheltes Magenta) und pp ( schwarz rot) - aus irgendeinem Grund ist der Rolloff für pp langsamer, ich muss irgendwo einen Tippfehler haben, ich werde ihn nicht finden heute : .

Macht

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

Alle für N = 13, und die Ergebnisse sind konsistent für 5, 9, 25 usw. Die Schlussfolgerung bleibt: nicht Bessel, aber verdammt nah. Wählen Sie Ihre Wahl.


Dies sollte die letzte Änderung sein (bevor ich über den Ereignishorizont des Kaninchenlochs gehe), um das Problem der Verschiebung des zugrunde liegenden Kreises anzugehen. Zweifel schlichen sich ein, also wollte ich das klären. Aus früheren Bildern ist klar, dass es kein Kreis ist, es ist kein cosh (), sondern etwas anderes, aber Zahlen sind klarer als Bilder, also habe ich eine reductio ad absurdum gestartet: Was ist, wenn es ein Kreis ist? Dann sollte es skaliert und verschoben werden. Hier ist die Grundidee:

geom

Der Kreis mit dem Radius OM (grau, gestrichelt) ist der Einheitskreis, und der blaue Kreis mit dem Radius MQ wäre der zugrunde liegende Kreis. Am Punkt C ist ein Pol, dessen Koordinaten bekannt sind. OM ist auch bekannt, alsoEINM.=1- -(C.) amd EINC.=(C.) => der rote Winkel (Messwert ignorieren), α=ArctanEINM.EINC., während der grüne Winkel, β=π2- -α=ArctanEINQ.EINC. => M.Q.=EINM.+EINC.bräunen(π2- -ArctanEINM.EINC.)wobei die Verschiebung eine einfache Subtraktion ist.

Für N = 13 sollte die Berechnung des Radius des zugrunde liegenden Kreises jedoch für alle Pole gleich sein, ist es jedoch nicht. Hier sind die Werte für alle Radien für die positiven Imaginärteile der Pole, die nicht auf der X- oder Y-Achse liegen (5 Pole, siehe 1. Bild):

  • Erneuert, Teil 3.Da die Pole vermischt waren, kamen die Ergebnisse vermischt, und ich berechnete den Durchmesser. Kein Problem, da das Ergebnis dasselbe ist: kein zugrunde liegender Kreis.

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

Und hier ist eine grafische Darstellung der zugrunde liegenden Kreise für jeden dieser Pole. Beachten Sie, dass sie sich nicht nur nicht überlappen, sondern jeweils nur einer von jedem Pol auf einem Kreis liegt (natürlich der nach der Berechnung des Kreises):

ucb

Dies sollte der Beweis sein, dass die Gruppenverzögerung zwar flach von der Polplatzierungsnäherung ist, aber nur eine Näherung ist, kein Bessel im eigentlichen Sinne. IMHO, dies sollte sowohl von analog.com als auch von anderen Quellen angegeben worden sein - dass es sich um eine Annäherung handelt , eine sehr gute , aber nicht um Bessel (-Thompson).


Und da die Wunde tief geht, hier noch etwas mehr. Es fällt mir auf, dass je größer die Ordnung, desto mehr die pp-Methode in Richtung eines Gaußschen Filters konvergiert, und hier ist sicherlich eine Darstellung einer Referenz-Gauß-Funktion:exp(- -ln22x2) (schwarz), eine ungefähre Übertragungsfunktion "a la Bessel" (blau, Frequenzskalierung erforderlich) und eine freie, nicht frequenzskalierte Version der pp-Methode (rot):

Gaumag

Wenn Sie keinen Unterschied sehen können, liegt es an den kleinen Dingen im Leben:

Gaulog

Bedeutet dies, dass die pp-Methode zu einem Gaußschen Filter konvergiert? Nein. Hier sind die Pole des Gaußschen (blau) und des Bessel (rot), die zum Vergleich mit dem Einheitskreis skaliert sind:

gaup

Sie sind noch weiter verteilt. Aber sind sie zumindest auf einem Kreis platziert, versetzt oder nicht? Hier sind die Ergebnisse der Radien der Kreise in einer ähnlichen Methode wie für Bessel oben:

[2.216482009751927,2.067108140129843,1.988005879596608,1.939764970045811,1.910091446017072]

und die grafische Darstellung nach einem weiteren erzwungenen Versuch, sie auf den Einheitskreis zu projizieren (wieder wie oben bei Bessel):

ucg

Der Vollständigkeit halber hier die Impulsantwort des Gaußschen (blau) im Vergleich zum Bessel (rot) und der pp-Methode (grün):

hgbp

Angesichts dieses endgültigen Beweises ist die pp-Methode im Zeitbereich noch besser als die Gaußsche, aber das bedeutet auch, dass es in Bezug auf die Frequenz ein Chaos ist. Ich denke jedoch an einen anderen Ansatz, aber das wird für einen anderen Tag sein.

ein betroffener Bürger
quelle
Ich bin nicht 100%, aber das sieht eher nach einer cheby Platzierung von Stangen aus. Auch hier bin ich mir nicht sicher, aber dies sieht eher nach einer Elipse aus, die eher flacher als höher ist und auf ein steileres Abrollen im Vergleich zu Bessel hinweist. Sie sollten Ihr Diagramm überprüfen.
Andy aka
Welche Richtung die Ellipsen ausgerichtet sind, ist möglicherweise offensichtlicher, wenn Sie dieselbe Skalierung für die x- und y-Achse verwenden. Gibt es eine einfache (ish) Regel für die Parameter der Ellipse?
Das Photon
@ThePhoton Ich habe sowohl für X als auch für Y die gleiche Skalierung verwendet und auch die Antwort aktualisiert. Vielleicht finden Sie sie nützlich.
ein besorgter Bürger
@ThePhoton Ich habe eine Frequenzskalierungsnäherung hinzugefügt, falls Sie interessiert sind.
ein besorgter Bürger
Danke, genau das habe ich gesucht. Speziell für den Fall n = 5, bei dem es sich um einen Filter handelt, der in einer Reihe von Netzwerkstandards verwendet wird.
Das Photon
3

Ich mache diese Antwort getrennt, weil es darum geht, direkt eine Annäherung zu finden, im Gegensatz zur Antwort, wenn es so etwas gibt.

Bevor ich fortfahre, sollte ich erwähnen, dass dies ein alter Gedanke war, der beiseite gelassen wurde, nachdem ich Pole der Form ausprobiert hatte coshn+jsinhnoder ein hyperbolisch verzerrter Butterworth unter anderem. Dieses Mal und insbesondere nach dieser Wiederbelebung werde ich einen anderen, (hoffentlich) besser ausgebildeten Ansatz ausprobieren.

Wie in der anderen Antwort gezeigt, gibt es keinen zugrunde liegenden Kreis, und die Kurve ist auch kein exotischer cosh (). Aber es ist eine Kurve, und wir werden sehen, ob wir vielleicht die visuellen Hinweise verwenden können, um eine Annäherung zu bestimmen. Hier sind die Pole für dasselbe Bessel mit N = 13, diesmal jedoch aufgeteilt in Realteile (blau) und Imaginärteile (rot) (normalisiert auf den Einheitskreis):

Stangen

Die Achsen sind nicht proportional, so dass die Realteile einem Kreis sehr ähnlich sehen, was erklären würde, warum jemand denken würde, dass sie auf einem zugrunde liegenden Kreis platziert sind, wenn er sie nicht wie in der vorherigen Antwort gezeichnet hat, direkt im Vergleich zu einem . Bei genauerem Hinsehen sind die Imaginärteile jedoch nicht linear , sondern krümmen sich wie eine Tangente zu den Enden hin und her. Der Kreis ist auch kein ganzer Kreis (später zu sehen), daher addieren sich die Fehler nur.

Mal sehen, was wir bekommen, wenn wir einen Kreis versuchen. 1- -x2und eine Tangente. Aber mit welchen Werten? Versuchen wir von 1 bis -1, um die Dinge glatt zu halten. Der Schritt sollte 2 / N sein, genau wie in den Referenzen, aber auch eine logische Wahl:

try1

Der Kreis scheint schon nah genug zu sein, aber die Tangente ist zu groß. Eine glattere Kurve ist erforderlich. Aufgrund der Art der Bessel-Transferfunktion als Annäherung anexp(- -s)=1sinhs+coshssinh () fällt mir ein:

try2

Die Kurve sieht viel besser aus. Sie müssen lediglich skalieren, z. B. 1.2. Der Kreis könnte auch etwas "Biegen" gebrauchen. Versuchen wir also, die Quadratwurzel auf eine Bruchkraft anzuheben, die klein genug ist, z. B. 1.1:

try3

Das sinh () könnte weniger gekrümmt sein, der Kreis könnte weniger in Richtung der Enden hängen, aber es sieht gut aus, sicherlich besser als einfach auf einen Kreis zu projizieren. Also lass es uns versuchen. Zuerst mit unskaliertem Kreis und sinh (), einer 5. Ordnung im Vergleich zu einem Bessel, beide skaliert für -3 dB bei 1 Hz:

test1

Ich muss sagen, dass das für ein einfaches sqrt () und ein sinh () sehr gut aussieht, im Gegensatz zu einem großen Polynom aus Fakultäten, das mit Root-Finding-Algorithmen gelöst wurde:

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

wo evenNist 1, wenn N gerade ist, und 0, wenn nicht (ziemlich selbsterklärend), und die Übertragungsfunktion wurde als Laplace (unter Verwendung von LTspice) verwendet .AC, wie diese Quelle zeigt (die letzte ist eine einzelne Bestellung für 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)

Da Laplace in LTspice .TRAN(gelinde gesagt) sehr unzuverlässig sein kann, kann stattdessen die folgende Stufe 2. Ordnung verwendet werden. Achtung: Dies gilt nur für den allpoligen Tiefpass , ist ungepuffert und übernimmt eine streng ordnungsgemäße Übertragungsfunktion!

2 ..

Abschließend ein Sweep für N von 2 auf 8:

fegen

Aus irgendeinem Grund finde ich das schön im Vergleich zu den Ergebnissen der Polplatzierungsmethode in der vorherigen Antwort. Für niedrigere Ordnungen sind möglicherweise einige Optimierungen erforderlich, z. B. die Leistung von sqrt () und die Skalierung von sinh (), und es muss eine Frequenzskalierung durchgeführt werden. Hier wurde die folgende Tabelle verwendet:

.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)}

Es ist nicht auf niedrigere Ordnungen beschränkt. So sieht es für N = 13 aus (Frequenzskalierung 0,42054):

13

Und was ist mit der Skalierung für die Pole? Hier ist ein weiterer Sweep (N = 2..8) für 1.1 als Potenz für sqrt () und 1.2 für sinh () (auch eine andere Frequenzskalierungstabelle):

sweep2

Seltsamerweise scheinen die Ergebnisse trotz der visuell höheren Ähnlichkeit mit den Originalpolen etwas schlechter zu werden.

Schlussfolgerung: Aus den oben genannten Gründen erkläre ich diese Methode für eine ausreichend gute, aber viel bessere Annäherung an einen Bessel-Filter. Zweifellos kann jemand es verbessern, während die Einfachheit der Gleichungen für die Berechnung der Pole beibehalten wird. Jetzt ist es spät und ich gehe schlafen, hoffentlich kann sich die Wunde jetzt schließen.


Nur eine letzte Anmerkung und dann lasse ich es dabei. Nach einigem Hämmern (ich habe keine Angst, schmutzig zu werden) kehrte ich zu meiner ursprünglichen Vermutung für den Imaginärteil tan () zurück und optimierte dann die Formeln, um Folgendes zu erhalten:

.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}

Die Änderung dient abs(x)stattdessen dazu x, eine gebrochene Leistung zuzulassen, die die Kurve anders ändert als eine Leistung über die gesamte Funktion, während tan () eine zusätzliche Unterteilung hat, um in den weicheren Teil der Kurve zu gelangen, und dann einfach nach oben skaliert wird. Ich werde den Thread nicht mit einem anderen Bild für die Pole belasten, sie ähneln dem, was bereits gepostet wurde, aber die Antwort wurde jetzt geändert. Hier ist ein Sweep für .step param N 2 18 3eine nicht frequenzskalierte Version von beiden (dh berechnet für die Gruppenverzögerung, nicht für die Frequenz):

Finale

Die niedrigeren Ordnungen (N = 2,3) haben etwas mehr Rolloff, was zu einer etwas größeren Gruppenverzögerung führt, so dass die Impulsantwort zeitlich etwas verschmiert ist, aber von da an nur noch besser wird. Das einzige, was ich tun muss, um dies zu erreichen, war zu multiplizierenωdurch einen festen Frequenzskalierungsterm gleich0,69N.. Dies bedeutet, dass die in der vorherigen Antwort angegebene Formel für die Frequenzskalierung für das angenäherte Bessel gültig sein kann! Hier ist die Formel bei der Arbeit:

freqsc

Sicher, es gibt geringfügige Inkonsistenzen, insbesondere auf niedrigeren Ebenen, aber diese können leicht behoben werden. In Ruhe habe ich vor Jahren auch die erste Versuchsform ausprobiert, bei der angenommen wurde, dass die Stangen vom Typ sind(2- -coshn)+jsinhn, aber die Gruppenverzögerung ist in Richtung fc weicher, aber ich habe jetzt die Leistung und Skalierung hinzugefügt, die eine kleine Kontrolle über die Schärfe zu geben scheint, aber nicht wie oben. Und damit schließe ich die ganze Geschichte ab. Hoffnungsvoll.

ein betroffener Bürger
quelle
Ich werde keine weitere Bearbeitung vornehmen, aber es gibt eine optimierte Version für die Formeln: Stattdessen 2/Nist es 2/N/ADJ(für beide) und stattdessen ist 0.69*Nes 0.69*ADJwo ADJ=(N*N+1/1.4)/N. Hier ist ein Sweep von N = 2..18: i.stack.imgur.com/ccUTi.png .
Ein besorgter Bürger
2

Ich werfe meine zwei Penneths rein, weil es interessant ist. Ich habe keine Antwort, sondern nur ein Bild der Pole-Positionen für die 2. bis 10. Ordnung. Ich denke, es ist wichtiger, die Trends zwischen Filtern verschiedener Ordnung zu sehen, die den gleichen 3-dB-Punkt haben. Die Daten stammen aus dieser Tabelle: -

Geben Sie hier die Bildbeschreibung ein

Und wenn Sie die Zahlen nehmen und Excel verwenden, erhalten Sie folgendes Bild: -

Geben Sie hier die Bildbeschreibung ein

Gibt es eine ähnliche Regel, um die Polpositionen für einen Bessel-Thomson-Filter zu ermitteln?

Es gibt wahrscheinlich, aber es ist jenseits meiner Mathematik. Dies ist das Beste, was ich mir selbst einfallen lassen kann.

Allerdings MT-204 von Analog Devices schlägt vor , eine Beziehung zwischen den Polen wie folgt aus : -

Geben Sie hier die Bildbeschreibung ein

Ich erkenne die Autorität der Quelle an, aber sie scheint nicht mit den Tabellen übereinzustimmen, die Sie üblicherweise zu diesem Thema finden. Außerdem wird dieselbe Tabelle aufgelistet, die ich verwendet habe (später im AD-Dokument), sodass ich nicht sicher bin, wie sie es geschafft haben, Dinge um einen Kreis herum anzupassen, wenn dies eindeutig nicht der Fall ist. Aber wenn der Kreismittelpunkt nicht am Ursprung von Sigma und JW liegt, liegen die Pole vielleicht auf einem Kreis?

Andy aka
quelle
1
Ich fand das analoge Dokument einige Minuten nach dem Posten der Frage. Wenn ich eine Minute Zeit habe, möchte ich die zirkuläre Näherung gegen die Tabellenwerte zeichnen.
Das Photon
Sollte interessant sein.
Andy aka
Könnte es auch möglich sein, dass es zum Erstellen eines Bessel-Filters n-ter Ordnung mehr als eine gültige Lösung gibt. Vielleicht ist das eine Überlegung wert @ThePhoton
Andy aka
@ThePhoton Das ist eine interessante Einstellung, also dachte ich, ich würde es versuchen. Ich habe meine Antwort mit einigen sehr interessanten Ergebnissen aktualisiert.
ein besorgter Bürger
1
Es gibt eine weitere (kleine) Meinungsverschiedenheit zwischen Zumbahlen 's Mini Tutorial im Vergleich zu theoretischen Analysen. Es ist nicht richtig zu behaupten, dass die Sprungantwort des Bessel-Filters "kein Überschwingen" aufweisen würde. Jeder Filter mit komplexen Polen zeigt ein Überschwingen, da der Pol-Q> 0,5 ist.
LvW