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?
Antworten:
Ä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):
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:
und hier sind die Pole ( unsortiert ):
zum Vergleich die Pole eines Chebyshev mit 0,01dB Welligkeit:
Zum Vergleich sind auch die Bessel-Pole mit einem Kreis und die Chebyshev-Pole zum besseren Vergleich skaliert:
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:
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:
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:
was für "flauschig" werden kann , so dass der rekursive Sie ein bisschen weiter bringen kann, aber mit kleinen Rundungsproblemen:k → 0
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 (!):
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: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.ωs c a l e ωs c a l e
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 :R =1 -ich2- -- -- -- -- -√
Und so sehen beide Pole im Vergleich zum Einheitskreis aus. Von hier an ist Bessel blau.
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.(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 .):
(falsch: https://i.stack.imgur.com/VEbgY.png )
Dann die Phasen. Es überrascht nicht, dass Unterschiede aufgrund des unterschiedlichen Rolloffs:
(falsch: https://i.stack.imgur.com/EH5z1.png )
und der Unterschied:
(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:(falsch: https://i.stack.imgur.com/yWv7g.png )
und die Differenz (beide zum leichteren Vergleich auf 1 normiert):
(falsch: https://i.stack.imgur.com/lVjQI.png )
Update: Die Ebenheit der Gruppenverzögerung kann mit der Ableitung überprüft werden:
Fazit : Die Polplatzierung ist keine Bessel-Antwort, kommt aber
sehrnahe. Wenn Sie also diekleinenUnterschiede 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 ::(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]
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.
und die Größen des Bessel (blau) in der Nähe des konvertierten Bessel (
rotgestricheltes Magenta) und pp (schwarzrot)- aus irgendeinem Grund ist der Rolloff für pp langsamer, ich muss irgendwo einen Tippfehler haben, ich werde ihn nicht finden heute :.(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
verdammtnah. 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:
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, alsoA M.= 1 - R ( C.) amd A C.= I ( C.) => der rote Winkel (Messwert ignorieren), α = ArctanEINM.A C. , während der grüne Winkel, β=π2- α = ArctanA Q.A C. => M.Q = A M.+ A C.bräunen(π2- ArctanA M.A C.) 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):
[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):
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):
Wenn Sie keinen Unterschied sehen können, liegt es an den kleinen Dingen im Leben:
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:
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):
Der Vollständigkeit halber hier die Impulsantwort des Gaußschen (blau) im Vergleich zum Bessel (rot) und der pp-Methode (grün):
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.
quelle
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 hattecoshn + j sinhn oder 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):
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 -x2- -- -- -- -- -√ und 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:
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 + coshs sinh () fällt mir ein:
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:
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:
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:
wo
evenN
ist 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ürevenN=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!Abschließend ein Sweep für N von 2 auf 8:
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):
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):
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:
Die Änderung dient
abs(x)
stattdessen dazux
, 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 3
eine nicht frequenzskalierte Version von beiden (dh berechnet für die Gruppenverzögerung, nicht für die Frequenz):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,69 N. . 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:
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 ) + j sinhn , 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.
quelle
2/N
ist es2/N/ADJ
(für beide) und stattdessen ist0.69*N
es0.69*ADJ
woADJ=(N*N+1/1.4)/N
. Hier ist ein Sweep von N = 2..18: i.stack.imgur.com/ccUTi.png .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: -
Und wenn Sie die Zahlen nehmen und Excel verwenden, erhalten Sie folgendes Bild: -
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 : -
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?
quelle