Filterdesign durch Verteilen von Polen und Nullen auf parametrischen Kurven


17

Ein Butterworth-Tiefpassfilter ter Ordnung mit der Grenzfrequenz kann entworfen werden, indem Pole gleichmäßig in Bezug auf Parameter auf einer Parameterkurve , das ist ein Halbkreis:NωcN0<α<1f(α)=ωcei(π/2+πα)

Butterworth-Filter
Abbildung 1. Pole eines Butterworth-Filters 6. Ordnung (CC BY-SA 3.0 Fcorthay)

Es ist bemerkenswert, dass dieselbe Parameterkurve für jeden Filtergrad , der die nicht normalisierte Übertragungsfunktion ergibt:N

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

und dass der resultierende Filter immer ein Butterworth-Filter ist. Das heißt, kein anderes Filter mit der gleichen Anzahl von Polen und Nullen weist eine höhere Anzahl von verschwundenen Ableitungen des Betragsfrequenzgangs bei den Frequenzen und . Die Menge der Butterworth-Filter mit derselben Grenzfrequenz bildet eine Teilmenge der Butterworth-Filter, für die die Parameterkurve eindeutig ist. Die Teilmenge ist unendlich wieω=0ω=ωcf(α)N keine Obergrenze hat.

Allgemeiner gesagt , nicht die Pole und Nullstellen Zählen im Unendlichen , wenn sie nicht von den parametrischen Kurven stammen, jeder Filter mit Polen und mit Nullen, eine ganzen Zahl und eine nicht - negative Fraktion von ganzen Zahlen, hat eine nicht - normierte Übertragungsfunktion der Form:NNpNNzNNz/Np

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

Dabei sind und & parametrische Kurven, die die Verteilung von Polen und Nullen in der Grenze .fp(α)fz(α)N

  • Frage 1: Welche anderen Filtertypen als Butterworth, die durch ein Optimalitätskriterium definiert sind, haben unendliche Teilmengen, die jeweils durch den Bruchteil und das Paar der Parameterkurven und pro Gl. 2, wobei sich die Filter nur durch ? Nz/Npfp(α)fz(α)NChebyshev-Filter Typ I , ja; bei ihnen liegen die Pole auf einer Ellipsenhälfte mit dem parametrischen Winkel . Sowohl Butterworth- als auch Typ I- und Typ II-Chebyshev-Filter sind Spezialfälle von elliptischen Filtern . Um es klar zu sagen, mit "unendlichen Teilmengen" meine ich nicht eine unendliche Anzahl von Teilmengen, sondern Teilmengen von unendlicher Größe.α
  • Frage 2: Haben Nicht-Butterworth-Nicht-Chebyshev-Ellipsenfilter solche unendlichen Teilmengen?
  • Frage 3: Befindet sich jeder Ellipsenfilter in einer so unendlichen Teilmenge?

Wenn die unendliche Menge aller elliptischen Filter eine Vereinigung sich gegenseitig ausschließender und erschöpfender unendlicher Untergruppen von elliptischen Filtern ist, die jeweils durch eine einzige parametrische Kurve für die Platzierung von Polen und eine einzige parametrische Kurve für die Platzierung von Nullen und einen nicht reduzierbaren Bruchteil der Anzahl von definiert sind Nullen zu Polen, dann eine numerische Optimierung, um elliptische Filter zu erhalten, könnte durchgeführt werden, indem die parametrischen Kurven und nicht die Filter für eine bestimmte Reihenfolge optimiert werden. Die optimalen Kurven können für mehrere Filterreihenfolgen wiederverwendet werden, wobei die Optimalität erhalten bleibt. Das obige "Wenn" ist der Grund, warum ich die Fragen 2 und 3 stelle. Bei Frage 1 geht es darum, den Ansatz auf andere Optimalitätskriterien auszudehnen.

Sicherlich sehen Pol-Null-Diagramme von elliptischen Filtern so aus, als gäbe es einige zugrunde liegende Kurven:

Elliptischer Filter
Figure 2. Logarithmische Größe eines elliptischen Tiefpassfilters in der s-Ebene. Weiße Punkte sind Pole und schwarze Punkte sind Nullen.

Eine Ableitung ist die pro Gl. In 1 müssen bestimmte Werte von und damit bestimmte Pol- und Nullpositionen zwischen mehreren Filtern geteilt werden:α

Alpha und Filtergrad
Abbildung 5. Werte durch den Kurvenparameter erzielt für verschiedene Filtergrad . Beachten Sie, wie für mehrere Filterreihenfolgen beispielsweise oder undαNα=0.5α=0.25α=0.75.

Insbesondere für einen Filter mit Polen oder Nullen erscheinen sie alle auch in Filtern mit derselben Zahl, wobei eine positive ganze Zahl ist.N3nNn


Mit extrem trockenem Humor habe ich mir auf Wunsch von Benutzer A_A die Lemniskate von Bernoulli als Beispiel für eine S-Ebenen-Parameterkurve angesehen:

Lemniskate von Bernoulli
Abbildung 4. Lemniskate von Bernoulli

Die folgende Parameterkurve gibt die linke Hälfte der Lemniskate von Bernoulli mit dem Parameter und beginnt und endet bei :0<a<1s=0

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

Mit Hilfe dieser Parameterkurve für die Pole, möchten wir irgendwie zwischen verschiedenen vergleichen die Größe Frequenzgänge über Gl. 1. Eine Möglichkeit besteht darin, die te Wurzel des Betragsfrequenzgangs zu betrachten. Es erlaubt uns auch einen Blick darauf zu werfen, wie die Dinge bei aussehen :NN|H(iω)|1/NN

Nte Wurzel der Frequenzantwort
Figure 3. te Wurzel des Frequenzgangs eines Polfilters, dessen Pole in Bezug auf den Parameter der Kurve gleichmäßig auf der Lemniskate von Bernoulli verteilt sind. Bei höheren Frequenzen als den gezeigten folgen die Kurven einer Steigung von -6 dB / Oktave (-20 dB / Dekade). In der Grenze gibt es eine Diskontinuität in der Ableitung des Diagramms bei da die Lemniskate (zweimal) die imaginäre Achse der S-Ebene an diesem Punkt kreuzt.NNNω=0s=0

Die Grenze der ten Wurzel der Größe der Übertragungsfunktion (Gleichung 1) als wurde berechnet als:NN

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

Dabei steht für ein Produktintegral , das mit dem natürlichen Logarithmus, der Integration und der Exponentialfunktion berechnet werden kann. Wie so oft bei der Integration gab es keinen symbolischen Ausdruck für das Integral, der für die Lemniskate von Bernoulli numerisch ausgewertet werden musste. Alles in allem sehen die resultierenden Frequenzgänge der Größe für diese "zufällig ausgewählte" Parameterkurve ziemlich nutzlos aus.


Der Benutzer Matt L. erwähnte Lerner-Filter. Was ich über sie gefunden habe, mit leichter Interpretation:

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

mit so dass für alle . Sieht so aus, als wären diese Pole, während sie auf einer Linie verteilt sind, nicht die Pole des gesamten Filters, sondern Pole von parallelen Abschnitten. Ich habe nicht bestätigt, wie die Pole des Gesamtsystems sind oder ob die Lerner-Filter in irgendeinem nützlichen Sinne optimal sind. Referenz: CM Rader, B. Gold, Technische Anmerkung 1965-63 des MIT Lincoln Laboratory, Digital Filter Design Techniques , 23. Dezember 1965.a+ibkbmbm1=b2b1=12(bkbk1)3<k<m1


4
Mein Englisch ist heute Morgen wackelig, daher verstehe ich nicht ganz, was Sie sagen wollen. Wenn es jedoch um mehr als eine Methode zur Berechnung eines Ellipsenfilters geht, würde ich vorschlagen, das Buch von Lutovac in der elliptischen Wikipedia zu finden Filternotizen (auch Dimopoulos) sind ein echter Augenöffner: Sie haben sieben Möglichkeiten, einen Ellipsenfilter zu entwerfen. Wenn das nicht so gemeint ist, ignoriere bitte meinen Kommentar.
ein besorgter Bürger

2
Bei Lerner-Filtern liegen alle Pole auf einer Linie parallel zur imaginären Achse. Sie haben den Vorteil einer annähernd linearen Phasenantwort.
Matt L.

2
Den kompletten Filter; aber wenn die Pole aller parallelen Abschnitte auf derselben Linie liegen, hat auch der gesamte Filter alle seine Pole auf dieser Linie. Sie haben Recht mit der Referenz. Es gibt diesen technischen Hinweis von Rader und Gold, auf den ich mich normalerweise beziehe.
Matt L.

1
OK, für welches Tagebuch gehen wir? : D Gibt es dabei ein Leitprinzip? Suchen Sie zum Beispiel nach einer möglichen Parametrik, die in gewisser Hinsicht besser ist als die Eliptik? (zB Übergangsband gegen Welligkeit). Eine andere Familie, die "interessant" sein könnte, sind die * Zykloiden ... Aber ohne ein "Ordnungsprinzip" können wir keine von ihnen als "schlimm, schlecht, gut, am besten" bezeichnen :)
A_A 27.10.16

2
Der Kommentarthread ist zu lang. einfach einen Parameter Standort für Daubechies Wavelet-Filter ams.org/journals/proc/1996-124-12/S0002-9939-96-03557-5/…|4y(1y)|=1
Laurent Duval

Antworten:


6

In der gesamten Antwort verwende ich die mathematischen Notationen, dh das mathematische Äquivalent zum Ausdruck der Größenantwort eines Filters im Frequenzbereich. Aus diesem wird anstelle von , um @ Ollis Frage nach der Ermittlung einer mathematischen Parameterkurve zur Approximation von Filtern besser widerzuspiegeln. Da dies kein Filterdesign ist, wird die Eckfrequenz auf Eins normiert, daher anstelle von .xjωxω/ωp


Ich bin mir nicht sicher, ob dies die Antwort ist, die Sie suchen, aber jeder Filter kann durch die generische Übertragungsfunktion dargestellt werden:

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

wobei und die charakteristische Dämpfungsfunktion ist. ist die Dämpfung / Welligkeit des Durchlassbereichs in dB, kann aber auch im Sperrbereich für Cauer / Elliptic, Inverse Pascal oder Inverse Chebyshev (auch bekannt als "Chebyshev Type II") liegen. Letztere werden ausgedrückt als:ϵp=10Ap/101R(x)Ap

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

Für Butterworth, wie Sie gesehen haben:

R(x)=xN

für Chebyshev ist es oder die Chebyshev-Polynome ( / für und / für ), für Elliptic ist es:R(x)=TN(x)cosacosx1coshacoshx>1

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

In dem Buch von Lutovac gibt es einige äußerst vereinfachte Darstellungen durch exakte äquivalente Funktionen für elliptische Filter. Beispielsweise kann die Übertragungsfunktion 2. Ordnung genau dargestellt werden durch:

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

wobei die einzige Abhängigkeit vom Modul .k

Dies sind die bekannten Typen, für weniger bekannte Typen, zum Beispiel Legendre, , wobei die Legendre-Polynome sind, für Pascal-Filter gibt es die verschobene und normalisierte Version der Pascal-Polynome. welches ist:R(x)=PN(x)PN(x)

(N+12x+N12N)

Die Liste geht weiter. Einige werden unterschiedlich approximiert, zum Beispiel ist Gauß , das mit der MacLaurin-Reihe erweitert wird, ungefähr dasselbe für Bessel, das aus seinem Laplace-Ausdruck erweitert wird in seinen Nenner ausgedrückt als:|H(x)|2=exp(x2)exp(s)

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

Es gibt auch exotischere Methoden, um die Übertragungsfunktion abzuleiten, wie Papoulis (Optimum L) und Halpern, die beide die Legendre-Polynome verwenden, um die Antwort so zu integrieren, dass die Übertragungsfunktion bei hoher Filterselektivität monoton abnimmt. Für Papoulis ist es:

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

wobei IS und werden einige Begriffe geschickt gewählt, abhängig davon , ob oder , beide, odd / even.k(N1)/2aiNk

Wie bereits erwähnt, verwenden all diese nicht den Frequenzbereich für die Darstellung, da in das mathematische , real, nicht imaginär . Das Auflösen der Wurzeln kann entweder durch einfaches Finden der Pole (und Nullen) für die Übertragungsfunktion erfolgen, wenn durch , wodurch und das Hurwitz-Polynom ausgewählt wird, oder durch Finden Sie einfach die Wurzeln des mathematischen Ausdrucks in (siehe den Link im zweiten Kommentar unten). Dadurch werden die Wurzeln um 90 Grad gedreht. Das heißt, Sie müssen nur den Real- und den Imaginärteil untereinander vertauschen und dann die rechte Seite auswählen.xxjωxjωH(s)H(s)x

Entspricht diese Antwort genau dem, wonach Sie gesucht haben?


Ich denke, an diesem Punkt ist es wichtig zu sagen, dass es keine Filter gibt, weil die Leute Pfeile auf eine Karte geworfen haben, um die Pole zu markieren. Sie sind nach sorgfältigen Überlegungen über das angestrebte Ziel entstanden.

Zum Beispiel wurden Butterworth-Filter mit annähernd steigender Qualität entwickelt, weil ein Filter mit einfachem Design und monoton zunehmender Dämpfung benötigt wurde. Linkwitz-Riley sind nichts anderes als Butterworth in einer (cleveren) Verkleidung, so dass das Summieren eines Tiefpasses und eines Hochpasses mit derselben Eckfrequenz zu einer flachen Reaktion führt, die für Audioanwendungen nützlich ist.

Chebyshev (I und II) wurde entwickelt, um eine bessere Dämpfung zu erzielen, auf Kosten von Welligkeiten im Durchlass- oder Sperrbereich. Legendre, Ultraspherical, Pascal (und möglicherweise andere) minimieren die Welligkeit und verbessern so die Gruppenverzögerung auf Kosten leicht reduzierter Dämpfung.

Papoulis und Halpern wurden als eine Mischung aus Durchlassbandwelligkeit und monoton zunehmender Dämpfung entwickelt, während die Dämpfung um die Eckfrequenz auf Kosten einer Absenkung im Durchlassband verbessert wurde.

Cauer / Elliptic-Filter nutzen die Welligkeit sowohl im Durchlassbereich als auch im Sperrbereich, um die erforderliche Reihenfolge für die gleiche oder eine bessere Dämpfung zu minimieren.

All dies liegt im Frequenzbereich, den die meisten Filter haben. Gehen in die andere Richtung, Bessel - Filter kam wegen der Notwendigkeit, eine analoge Verzögerung anzunähern, so dass sie in Richtung zu konvergieren wie die Ordnung erhöht, während Gaussian Filter für die Nullüberschwingen erzeugt wurden, so dass sie sich annähern mit aufsteigender Reihenfolge.exp(jω)exp(x2)

Natürlich können Sie, wie von jemandem vorgeschlagen, auch Stangen besprühen und sehen, was herauskommt, sie möglicherweise als Stern konfigurieren oder ein Wabenmuster, Ihre Lieblingslemniskate auswählen, aber dies ist nicht der Weg, wenn Sie einen Filter wünschen heraus. Sicher, Sie erhalten möglicherweise eine exotische Antwort, die möglicherweise sogar als Einzelfall von einer Million anwendbar ist, aber das ist wirklich nur ein Einzelfall. Der Weg ist, zuerst ein Entwurfsziel aufzustellen und zu sehen, wie dieses Ziel in Form eines physikalisch realisierbaren Filters erreicht werden kann. Auch wenn das bedeutet, einen wer-weiß-wo-zutreffenden Filter zu finden. :-)


Betrachten Sie angesichts der jüngsten Antwort von @Olli den einfachen Fall eines Butterworth-Filters, der beispielsweise für entwickelt wurde 0.9@fp=1, 0.1@fs=5. Die Berechnungen sind ungefähr so:

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

N wird aufgerundet berechnet, also . Dies bedeutet, dass Sie, wenn Sie die Filterantwort auf das Durchlassband abstimmen, eine höhere Dämpfung im Stoppband @fs erhalten. Nach der ersten Formel ist die Dämpfung @ fs:N=2

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

Wenn Sie das Stoppband auf 0.1@fs einstellen müssten, müssten Sie eine Frequenzkorrektur anwenden:

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

So von variieren zu und Sie werden alle die unendlichen Möglichkeiten in zwischen den beiden Extremen zu bekommen. Kannst du es machen? Ja. Lohnt es sich? Auch wenn Sie ein oder zwei Argumente finden, lautet die allgemeine Antwort immer noch nein. Wie war das alles möglich? Da die Anfangsantwort des Butterworth-Filters bereits erhalten wurde, wussten Sie im Voraus, dass Sie einen analytischen Ausdruck für ein Filter mit monoton abnehmender Frequenzdämpfung hatten, der dazu führte, dass aus dem Nenner der Übertragungsfunktion herausgefunden wurde, welche Pole auftreten auf einem Kreis mit gleichen Winkeln liegen.ωscale10.9065


Angesichts der jüngsten Antwort von @Olli gibt es einige Dinge, die präzisiert werden müssen. Bei all dem geht es zunächst um Filterdesign, ganz gleich, wie Sie es betrachten: aus mathematischer Sicht oder aus Sicht der physikalischen Realisierbarkeit.

Wenn es mathematisch ist, dann gibt es einen interessanten Teil der Theorie, nämlich eine andere Reihenfolge von demselben Filter zu erhalten, ohne dass der ursprüngliche Filter neu entworfen werden muss.

Aus Sicht der physischen Realisierbarkeit bedeutet der gesamte Prozess jedoch einige zusätzliche, nicht benötigte Arbeiten, die zum gleichen Ergebnis führen (sollten), und genau das ist der Teil, bei dem es darum geht, die Filterreihenfolge zu vergrößern / zu verkleinern, um eine neue zu erhalten. Meine Argumente sind wie folgt.

Jeder Filter dient im Kern dazu, nicht benötigte Frequenzen herauszufiltern, sei es elektrische oder mechanische oder andere physikalische Größen. Ihr Ziel ist es, ein Spektrum (oder eine Gruppenverzögerung oder eine Zeitantwort) zu modifizieren. Wenn ein solches Gerät benötigt wird, kann dieses Gerät nicht einfach durch Einwerfen eines Filters entwickelt werden. Sein Design ist meist ziemlich kompliziert. Aber all dieser Prozess muss von den Anforderungen ausgehen. Das heißt, zuerst muss es ein bestimmtes Ziel geben: "Lass uns alles über " oder "Lass nur das Infrarotlicht durch" oder ähnliches, was damit beginnt, dass zuerst die Parameter bestimmt werden, mit denen Dieser Filter muss funktionieren.100 Hz

Wenn beispielsweise Frequenzen unterhalb von und oberhalb von werden müssten, würde man nicht einfach irgendeinen Bandpassfilter mit diesen Eckfrequenzen einsetzen, sondern es müssten auch Dämpfungen angegeben werden Ob Welligkeit im Durchlassbereich oder im Sperrbereich oder in beiden Bereichen benötigt oder akzeptiert wird, ob die Phase linear ist oder nicht, wie wirkt sich die Gruppenverzögerung auf all dies aus usw. Zunächst gibt es also spezifische Parameter, mit denen die Filter muss entworfen werden.300 Hz3000 Hz

Wie wird der Filter gestaltet, sobald die Parameter festgelegt sind? Nehmen wir an, dass ein elliptischer Tiefpassfilter 12. Ordnung erforderlich ist und dass die Möglichkeit besteht, einen Filter niedriger Ordnung auf einen Filter hoher Ordnung zu erhöhen (siehe Antwort von @ Olli). Nehmen wir an, die Umwandlung einer 4. Ordnung in eine 12. Ordnung ist fehlerfrei, und es gibt eine Möglichkeit, die Entwurfsparameter für den Filter 4. Ordnung so festzulegen, dass nach der Umwandlung die resultierende 12. Ordnung resultiert diese Bedingungen erfüllen. "Vorsätzliches Denken", wenn Sie so wollen.

Die Frage lautet nun: Wie wird der Filter 4. Ordnung aufgebaut? Die Antwort kann nur durch die bekannten Arten der Gestaltung erfolgen. Und wenn es andere Methoden gibt, die noch zu erfinden sind, müssen diese zuerst angewendet werden, um den Filter 4. Ordnung zu entwerfen. Erst danach kann die 12. Ordnung berechnet werden. Wie von Anfang an angenommen, würde es selbst bei einem fehlerfreien Transformationsprozess nur bedeuten, dass der resultierende Filter, die 12. Ordnung, zu der das gesamte Design zu konvergieren versucht, zwei Designschritte benötigt: einen für die 4. Ordnung und den zweiten für die 12. Ordnung, wodurch der gesamte Prozess unnötig belastet wird, da der Filter der 12. Ordnung in erster Linie einfach mit der für die 4. Ordnung verwendeten Methode entworfen worden sein könnte.

Gehen wir noch ein bisschen weiter und nehmen wir etwas mehr an. Die resultierenden Pole der 12. Ordnung würden auf einer Ellipse und die Nullen auf der imaginären Achse liegen. Die Abstände zwischen ihnen würden durch die zugrunde liegenden elliptischen Funktionen, die die elliptischen Filter steuern, genau definiert. Angenommen, es gibt eine Möglichkeit, diese Kurven wie von @Olli erhofft so zu definieren, dass es möglich ist, einen Filter von Anfang an auf einmal zu entwerfen, indem einfach diese (parametrischen oder nicht) Kurven verwendet werden, mit denen alle Die Platzierung der Stangen ist abgeschlossen. So weit, ist es gut. Aber diese Kurven müssten zuerst berechnet werden, und die Parameter, mit denen sie entwirren, sind die genauen, die für das Filterdesign verwendet werden, die gleichen, die den Filter mit anderen bekannten oder noch unbekannten Methoden erzeugen würden. Was mehr ist, sind die Berechnungen noch zu tun, und, höchstwahrscheinlich müssten die zugrunde liegenden Definitionen für diese parametrischen Kurven auf die eine oder andere Weise elliptisch sein, oder es würde kein elliptischer Filter daraus hervorgehen [Anmerkung 1]. Dies bedeutet, dass der gesamte Prozess lediglich eine weitere Entwurfsmethode für die Ellipsenfilter wäre, da die Pole des Ellipsenfilters bereits geschlossene Formausdrücke haben.

Versteh mich nicht falsch. Wenn ein Filter auf eine Weise entworfen werden kann, kann er auf die gleiche Weise auf eine andere Weise entworfen werden. Es ist nur eine dieser "noch nicht bekannten" Möglichkeiten. Bravo an den Erfinder. Wenn diese Entwurfsmethode jedoch zusätzliche Schritte erfordert, um zu denselben Ergebnissen zu gelangen, die für eine andere Methode erforderlich wären, scheint dies kein praktikabler Ansatz zu sein. Und bitte beachten Sie: Ich verwende keine Namen oder beschreibenden Bezeichnungen, wenn ich über Filterdesigns spreche, sondern nur über generische Namen, da es nicht wirklich wichtig ist, welche Methode Sie verwenden, solange die Ergebnisse korrekt sind und die Methode nicht ' t belastend für den Entwurfsprozess.

[Anmerkung Nr. 1]: Es reicht nicht aus, nur einer allgemeinen Kurve zu folgen, um die Pole zu platzieren, und ich werde zwei Beispiele im Zusammenhang mit den Butterworth-Filtern anführen, bei denen die Pole auf einem Kreis mit äquidistanten Winkeln platziert sind. Chebyshev Typ I-Filter haben die Pole auf einer Ellipse platziert, mit den Winkeln des Butterworth, aber auf der imaginären Achse projiziert, bis sie die Ellipse abfangen. Das Ändern des Abstands zwischen den Polen führt zu einem Verhalten ohne gleichmäßige Welligkeit, wodurch der Filter vom Typ Chebyshev abweicht. In ähnlicher Weise sind die Pole des elliptischen Minimum-Q-Filters auf einem darunter liegenden Kreis angeordnet. Dies bedeutet jedoch nicht, dass es sich um ein Butterworth-Filter handelt (auch wenn die Welligkeit das für ein elliptisches Filter mögliche Minimum ist), da es ungleiche Abstände zwischen den Winkeln aufweist . Für den letzten, hier '

Butterworth vs min-Q elliptisch

Insgesamt, trotz des echten Interesses, das die Frage mit sich bringt, fürchte ich, dass sie nicht mehr als einen theoretischen Wert hat, bestenfalls einen pädagogischen, da sie nicht genau zu dem Teil passt, der sich mit dem Filterdesign befasst. Sollte sich herausstellen, dass es sich um einen tatsächlichen Wert handelt, würde ich mich freuen, wenn sich dies als falsch herausstellen würde, da dies bedeuten würde, dass es eine neue Methode für die Filtergestaltung gibt, die möglicherweise besser ist als die bereits existierenden.


@OlliNiemitalo Ja, es ist die nicht quadratische Version. Tu, was der Priester sagt, nicht was er tut. :-) Apist die Durchlassbanddämpfung / dB-welligkeit, kann aber auch für das Sperrband sein, im Fall von Cauer / Elliptic, inverse Chebyshev oder inverse Pascal. Ich sehe, dass es andere kleinere Fehler gibt, ich werde sie bearbeiten.
ein besorgter Bürger

1
Olli, es gibt schöne geschlossene Ausdrücke sowohl für Tschebyshevs als auch für die Butterworth. aber nicht so sehr für den Ellipsentrainer / Cauer-Filter. Eine genau definierte Alge dafür zu bekommen (die Orte der Pole und Nullen), ist (wie sollen wir sagen?) ein kopulierender weiblicher Eckzahn .
Robert Bristow-Johnson

1
@ robertbristow-johnson Trotz der genauen wissenschaftlichen Synonim gibt es mindestens 3 Möglichkeiten, die Pole für Cauer darzustellen. Eine ist die Annäherung (Antoniou ?, Dimopoulos ?, nicht sicher), die meiner Meinung nach am weitesten verbreitet ist. Dann gibt es Burrus 'Weg, der genau elliptischen Funktionen folgt, dh die Nullen sind (verschiedene ungerade / gerade), aber das erfordert die Verwendung von Theta-Funktionen und so weiter, was in Bezug auf die CPU sehr "flauschig" wird. Dann gibt es noch Lutovac, der, auch wenn er keine Primzahlen verwenden kann, diese stark vereinfacht, aber sie werden mit zunehmender Reihenfolge größer. ±j/(ksn(iK/N,k)),i=1,2,..
ein besorgter Bürger

1
@ robertbristow-johnson Ich auch nicht, wie am Ende der ursprünglichen Bearbeitung und in einem der Kommentare erwähnt, aber es sieht so aus, als ob es auf dem Weg bearbeitet wurde, ich werde es korrigieren. Für die elliptischen Funktionen verwenden Burrus und ein anderer (den Namen vergessen, Paarman?) Die Version , aber , das Verschobene Jacobi Sinus, eine Tatsache, die Lutovac bemerkt hat. Um die Notwendigkeit zu vermeiden, ein zusätzliches vollständiges elliptisches Integral zu berechnen, kann man schreiben , es gibt keinen Unterschied. Ein einfaches Diagramm kann dies zeigen ( ). sn(K+sn1())sn(K+x)=cd(x)cd()k1=ϵp/ϵs,k=fp/fs,K1=K(k1),K=K(k)
ein besorgter Bürger

1
@ robertbristow-johnson Du hast den Teil verpasst, in dem ich sage, dass alle Ausdrücke als Variable verwenden, weil sie die mathematische Funktion widerspiegeln, die die Filterantwort beschreibt, da sie mit dem mathematischen Ansatz von Olli's zusammenhängt. Wenn Sie alle Funktionen mit in einer beliebigen mathematischen Software zeichnen, erhalten Sie die Größe, ohne in den Frequenzbereich zu wechseln. Ich ließ es draußen, um ersetzen , und nur die Hurwitz-Kriteriumspole / -nullen auszuwählen, das ist für das Filterdesign. Außerdem kann man die Stangen auch ohne bekommen (siehe Link in Kommentar 2). xxx=jωH(s)H(s)
ein besorgter Bürger

2

Während ich intuitiv das Gefühl habe, zu verstehen, was erforderlich ist, bemühe ich mich, es auszudrücken. Ich bin mir nicht sicher, ob dies auf meine eigenen Einschränkungen zurückzuführen ist oder ob das Problem tatsächlich schwierig oder schlecht gestellt ist. Ich habe das Gefühl, dass es schlecht gestellt ist. Also, hier ist mein Versuch:

  1. Ziel ist es, einen Filter zu bauen. Das heißt, berechnen Sie eine Reihe von Koeffizienten einer rationalen Form:

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

(Bitte beachten Sie, dass es nicht über der S-Ebene liegen muss, sondern auch über der Z-Ebene. Es können auch einfachere Formen in Betracht gezogen werden (z. B. haben nur Pole) renne für den Moment mit der S-Ebene und lass uns auch den Nominator behalten).H(s)

  1. Digitale Filter zeichnen sich durch ihre Frequenz- und Phasenantworten aus, die beide vollständig durch die Werte (oder Positionen in der S-Ebene) ihrer Koeffizienten werden können. Die bisherige Diskussion scheint sich auf den Frequenzgang zu konzentrieren. Betrachten wir diesen also für den Moment.an,bm

  2. Ausgehend von einer Menge von und einem Punkt in der s-Ebene besteht die geometrische Möglichkeit, den Frequenzgang an diesem Punkt abzuleiten, darin, "Nullvektoren" zu bilden (von den Positionen der Nullen in Richtung der spezifische Punkt) und "Polvektoren" (ähnlich für die Pole) summieren ihre Größen und bilden das Verhältnis wie in der obigen Gleichung.an,bmσ+jω

  3. Die Frage "Welche Filtertypen, die durch ein Optimalitätskriterium definiert sind, haben [...] unendliche Teilmengen, die durch parametrische Kurven definiert sind" lautet: "Was ist das Paar einiger parametrischer Kurven deren Positionen auch zu einer Amplitudenreaktionskurve mit bestimmten gewünschten Eigenschaften überA(s,Θ),B(s,Θ)Θ (z. B. Steigung, Welligkeit usw.) Wobei oder die Parameter der ... -Parameter sind.Θ

  4. Ein Hinweis an dieser Stelle: Einerseits suchen wir nach , die zwei Bedingungen erfüllen . Erstens müssen sie die Randbedingungen des Parameters erfüllen (einfach) und zweitens müssen sie die Randbedingungen erfüllen, die durch die Größenantwortcharakteristik spezifiziert sind (schwierig).A(s),B(s)

  5. Ich denke, dass das Problem in seiner gegenwärtigen Form schlecht gestellt ist, weil es keine analytische Möglichkeit gibt, die Frequenzgangbeschränkungen mit den Parametern , mit Ausnahme der direkten Auswertung davonA(s,Θ),B(s,Θ) . Mit anderen Worten, es ist derzeit unmöglich, einige Einschränkungen für die Frequenzgangkurve festzulegen und dabei rückwärts zu arbeiten und die Parameter zu finden, die diese Einschränkungen erfüllen. Wir können den umgekehrten Weg gehen, aber nicht rückwärts.

  6. Daher kann man (meiner Meinung nach) im Moment realistisch vorgehen, indem man in einer bestimmten Form akzeptiert und dann überprüft, wie sie als Filter wirken ODER bewegen Sie ihre Koeffizienten iterativ so weit, wie es ihre Parameter zulassen, um die bestmögliche Leistung aus einem bestimmten Bereich ihres herauszuholen . jedochA(s,Θ),B(s,Θ)ΘEs könnte sich herausstellen, dass ein gegebenes iteratives Schema auf einer Parametrik angesichts der erarbeiteten Eigenschaften von Ellipsen (zum Beispiel) die Koeffizienten so nahe wie möglich an einer "elliptischen" Bereichscharakteristik "biegen" könnte. Aus diesem Grund erwähne ich weiter oben, dass wir möglicherweise feststellen, dass eine komplexe Parametrik in eine "Summe von Ellipsen" oder eine "Summe von Kurven mit bekannten Eigenschaften" zerlegt werden kann. Möglicherweise ist hier eine dritte Einschränkung erforderlich: "Vermeiden Sie bekannte Konfigurationen von ". Mit anderen Worten: Bestrafen Sie Lösungen, die wie Ellipsen aussehen (aber immer noch in einem iterativen Schema).A(s),B(s)

Wenn dieser Pfad bis jetzt nicht zu falsch ist, sind wir in der Nähe von genetischen Algorithmen für das Filterdesign oder einer anderen informierten "Shoot in the Dark" -Technik, mit der die Koeffizienten eines Filters abgeleitet werden können, der bestimmte Kriterien erfüllt . Das Obige ist nur ein Beispiel, es gibt weitere Veröffentlichungen in dieser Richtung.

Hoffe das hilft.


+1 Ich mag dein Programm. Für Ihren Punkt 4 und andere könnte das Optimierungsziel als oder normalerweise als absoluter Wert angegeben werden . Andererseits würde dies bedeuten, dass wir uns bereits auf die Realisierbarkeit des fraglichen Ansatzes verlassen. Es müsste also auch mit einigen endlichen Filtern geprüft werden. In Punkt 7 denke ich nicht, dass "Abstoßung von Ellipsen" helfen würde, da es suboptimale nahezu elliptische Filter geben würde. Vielmehr sollte das Optimierungsziel geändert werden. limN(H(iω))1/N,N
Olli Niemitalo

1
Vielen Dank. Ich bin damit einverstanden, dass das Optimierungsziel hier entscheidend ist. "Abstoßung der Ellipsentrainer" sollte öfter verwendet werden ... :)
A_A

2

Ich finde es nicht besonders bemerkenswert, dass Butterworth-Filter, definiert als allpolige Filter, die bei maximal flach sind (für LPF-Prototypen bedeutet dies, dass die höchstmöglichen Ableitungen von bei null sind ), haben S-Ebenen-Pole, die gleichmäßig auf dem linken Halbkreis des Radius .ω=0|H(jω)|ω=0ω0

Aus den "maximal flachen" und "keinen Nullen" können Sie ableiten

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

für die te Ordnung Butterworth.N

so

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

s=pn ist ein Pol, wenn der Nenner Null ist.

1+(pnjω0)2N=0

oder

(pnjω0)2N=1

pn2N=(jω0)2N

|pn|=ω0

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

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

für Tchebyshev ter Ordnung (Typ 1, der allpolig ist) ist es wie folgt:N

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

wo

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

sind die Tchebyshev-Polynome ter Ordnung und erfüllen die Rekursion:N

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

und ist die "Passband Cutoff" -Frequenz und nicht zu verwechseln mit der -3 dB-Frequenz . (Aber die beiden sind verwandt.)ωcω0

Der Ripple-Parameter für das Durchlassband istϵ=10dBripple101

Wieder analytische Erweiterung:

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

und wieder ist ein Pol, wenn der Nenner Null ist.s=pn

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

oder

TN(pnjωc)=±jϵ

(Da , können wir entweder oder Ausdruck fürcos(θ)=cosh(jθ)cos()cosh()TN()

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

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

da und

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

dann

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, Liebes, ich werde das in 12 Stunden vielleicht nicht rausbringen

Ich habe beschlossen, dass ich zu faul bin, um das durchzuhalten. Wenn jemand es abholen möchte, zögern Sie nicht. Lotsa Konvertierung zwischen rechteckiger und polarer Notation komplexer Werte. erinnerst du dich als

w=± z 
dann und
|w|=+|z|
arg{w}=12arg{z}+arg{±1}=12arg{z}+π2(1±1)

und erinnere dich an

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

Sie mehrere von beliebigen ganzzahligen kostenlos in (sagen „ “) zu einem (die rechte wählen , das ist , wie Sie unterschiedliche Pole für bekommen ) .2π2πnarg{}log()pn

Wenn Sie mathematische Masturbation mit komplexen Variablen mögen, können Sie sich selbst aus dem Konzept bringen.


+1 für die interessante Beobachtung, aber da dies nicht die Fragen beantwortet, hoffe ich, dass es andere Kandidaten für die Prämie geben wird.
Olli Niemitalo

Also Olli, können Sie sehen, wie die Ableitung der Pole für Tchebyshev 1 und der Pole / Nullen für Tchebyshev 2 in ähnlicher Weise durchgeführt wird?
Robert Bristow-Johnson

Der Jabobi Elliptical ist eine Hündin. Ich weiß nicht, wie ich es beurteilen soll, ohne es in Antonio nachzuschlagen. und es wird nicht geschlossen sein.
Robert Bristow-Johnson

Ja, die Nullen von Tchebyshev 2 sind auf der Parameterkurve für Cutoff gleichmäßig verteilt . f(α)=j/cos(πα)1
Olli Niemitalo

und wie erhält man das ergebnis und die orte der pole für tschebyschew 1 oder 2?
Robert Bristow-Johnson

0

Elliptisch 12. Ordnung bis Elliptisch 4. Ordnung

(Ich bin nicht berechtigt, das Kopfgeld zu erhalten.) Ich habe versucht, ein Gegenbeispiel zu Frage 3 in Octave zu erstellen, war aber angenehm überrascht, dass ich es nicht konnte. Wenn die Antwort auf die Frage 3 Ja lautet, sollten gemäß Fig. 5 der Frage bestimmte Pole und Nullen zwischen einem Ellipsenfilter der Ordnung 4 und einem Ellipsenfilter der Ordnung 12 geteilt werden, hier explizit gezeigt: Fig. 1: Pole und Nullen, die möglicherweise zwischen elliptischen Filtern der Ordnung und , in blau und in der Reihenfolge des aufsteigenden Parameters einer parametrischen Kurve nummeriert .Gemeinsame Pole und Nullen
N=12N=4αf(α)

Entwerfen wir ein elliptisches Filter der Ordnung 12 mit einigen willkürlichen Parametern: 1 dB Durchlassbandwelligkeit, -90 dB Stoppbandwelligkeit, Grenzfrequenz 0,1234, S-Ebene statt Z-Ebene:

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

Frequenzgang der Filtergröße 12. Ordnung
Abbildung 2. Der Frequenzgang der Stärke des elliptischen Filters 12. Ordnung ellip .

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

Pole und Nullen, Filterreihenfolge 12
Abbildung 3. Pole (rot) und Nullen (blau) des elliptischen Filters der Ordnung 12 mit ellip . Horizontale Achse: Realteil, vertikale Achse: Imaginärteil.

Konstruieren wir einen Filter der Ordnung 4, indem wir ausgewählte Pole und Nullen des Filters der Ordnung 12 gemäß Abb. 1 wiederverwenden. Im speziellen Fall ist es ausreichend, die Pole und Nullen nach dem Imaginärteil zu ordnen:

[~, 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);

Frequenzgang der Filtergröße vierter Ordnung
Abbildung 4. Frequenzgang der Stärke des Filters 4. Ordnung, dessen Pole und Nullen mit denen des Filters 12. Ordnung identisch sind (siehe Abb. 1). Durch Einzoomen erhält man eine Beschreibung des Filters: 3,14 dB Durchlassband-Equiripple. 27,69 dB Stopband Equiripple, Grenzfrequenz 0,1234.

Nach meinem Verständnis ist ein Equiripple-Pass-Band und ein Equiripple-Stop-Band mit so vielen Welligkeiten, wie es die Anzahl der Pole und Nullen zulässt, eine ausreichende Bedingung, um zu sagen, dass das Filter elliptisch ist. Aber lassen Sie uns versuchen, dies zu bestätigen, indem wir ein elliptisches Filter der Ordnung 4 ellipmit der aus 3 erhaltenen Charakterisierung entwerfen und die Pole und Nullen zwischen den Filtern der beiden Ordnung 4 vergleichen:

[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)));

Das gegen:

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

Filter Pol / Null Vergleich 4. Ordnung
Abbildung 5. Vergleich der Positionen der Pole (rot) und Null (blau) zwischen einem ellipentworfenen Filter 4. Ordnung (Kreuze) und einem Filter 4. Ordnung (Kreise), der bestimmte Positionen der Pole und Null mit dem Filter 12. Ordnung teilt. Horizontale Achse: Realteil, vertikale Achse: Imaginärteil.

Die Pole und Nullen stimmen zwischen den beiden Filtern mit drei Dezimalstellen überein, was die Genauigkeit der Charakterisierung des vom Filter der Ordnung 12 abgeleiteten Filters war. Die Schlussfolgerung ist, dass zumindest in diesem speziellen Fall sowohl die Pole als auch die Nullstellen des Ellipsenfilters der Ordnung 4 und die des Ellipsenfilters der Ordnung 12 zumindest bis zu einer Genauigkeit erhalten werden könnten, indem sie gleichmäßig auf die gleichen parametrischen Kurven verteilt werden . Die Filter waren keine Filter vom Typ Butterworth oder Chebyshev I oder II, da sowohl das Durchlassband als auch das Sperrband Welligkeiten aufwiesen.

Elliptisch 4. Ordnung bis elliptisch 12. Ordnung

Können umgekehrt die Pole und Nullen des Filters 12. Ordnung aus einem Paar kontinuierlicher Funktionen approximiert werden, die an die Pole und Nullen des ellipFilters 4. Ordnung angepasst sind ?

Wenn wir die vier Pole duplizieren (Abb. 5) und das Vorzeichen der realen Teile der Duplikate umdrehen, erhalten wir eine Art Oval. Während wir das Oval umrunden, ergeben die Polstellen, an denen wir vorbeikommen, eine periodische diskrete Folge. Es ist ein guter Kandidat für die periodische bandbegrenzte Interpolation, indem seine diskrete Fourier-Transformation (DFT) mit Nullen aufgefüllt wird. Von den resultierenden Polen werden diejenigen mit einem positiven Realteil verworfen, was die Anzahl der Pole auf halbiert . Anstelle der Nullen werden deren Kehrwerte interpoliert, ansonsten erfolgt die Interpolation wie bei den Polen. Wir beginnen mit dem gleichen Filter 4. Ordnung wie zuvor (ungefähr identisch mit Abb. 4):2412ellip

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

Größenfrequenzgang des interpolierten Filters 4-> 12. Ordnung
Abbildung 6. Frequenzgang der Stärke eines Filters 12. Ordnung, bei dem die Pole und Nullen von Kurven abgetastet wurden, die mit denen des Filters 4. Ordnung übereinstimmen.

Es ist nicht genau genug, um ein Modell der Antwort von Fig. 2 nützlich zu machen. Das Stopp-Band läuft ziemlich gut, aber das Pass-Band ist gekippt. Die Bandkantenfrequenzen sind ungefähr korrekt. Dies zeigt jedoch Potenzial, wenn man bedenkt, dass die parametrischen Kurven nur mit jeweils 4 Freiheitsgraden beschrieben wurden.

Schauen wir uns an, wie die Pole und Nullen mit denen des generierten Filters übereinstimmen:N=12 ellip

[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)));

Vergleich von Polen und Nullen für N = 12
Abbildung 7. Vergleich der Positionen von Pol (rot) und Null (blau) zwischen einem ellipFilter 12. Ordnung (Kreuze) und einem Filter 12. Ordnung (Kreise), der vom Filter 4. Ordnung abgeleitet wurde. Horizontale Achse: Realteil, vertikale Achse: Imaginärteil.

Die interpolierten Pole sind ziemlich unterschiedlich, aber die Nullen stimmen relativ gut überein. Ein größeres als Ausgangspunkt sollte untersucht werden.N

Elliptisch 6. Ordnung bis elliptisch 18. Ordnung

Wenn Sie das Gleiche wie oben tun, aber bei der 6. Ordnung beginnen und bis zur 18. Ordnung interpolieren, wird ein scheinbar gut verhaltener Frequenzgang angezeigt, bei genauer Betrachtung treten jedoch immer noch Probleme im Durchlassbereich auf:

[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);

<Code> ellip </ code> -generierter Filter 6. Ordnung
Filter 18. Ordnung abgeleitet von der
Abbildung 8. Von oben) elliperzeugter Filter 6. Ordnung , von unten) von dem Filter 6. Ordnung abgeleiteter Filter 18. Ordnung. Das vergrößerte Durchlassband hat nur zwei Maxima und eine Welligkeit von etwa 1 dB. Das Stoppband ist mit 2,5 dB Variation nahezu gleichwellig.

Ich vermute, dass die bandbegrenzte Interpolation bei den (realen) Polen nicht gut genug funktioniert.

Exakte Kurven für elliptische Filter

Es stellt sich heraus, dass elliptische Filter, für die , positive Beispiele für die Fragen 1 und 2 sind. C. Sidney Burrus, Digitale Signalverarbeitung und Digitalfilterdesign (Entwurf). OpenStax CNX. Am 18. November 2012 werden die Nullen und Pole der Übertragungsfunktion eines hinreichend allgemeinen Ellipsenfilters in Bezug auf den Jacobi-EllipsensinusMan beachte, dass Burrus Gl. 3.136 kann für Nullen wie folgt umgeschrieben werden : NNz=NNp=NNNz=NNp=N sn(t,k).sn(t,k)=sn(t,k),szi, i=1N

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

Dabei ist eine Viertelperiode von für real und kann als Freiheitsgrad bei der Parametrisierung des Filters angesehen werden. Hiermit wird die Übergangsbandbreite im Verhältnis zur Durchlassbandbreite gesteuert. Erkennen von (siehe Gleichung 2 der Frage) wobei der Parameter der parametrischen Kurve ist:Ksn(t,k)t0k1(2i+1)/N=2αα

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

Burrus Gl. 3.146 gibt die Pole der oberen linken Viertelebene einschließlich eines echten Pols für ungerades . Es kann für alle Pole mit einem beliebigen wie umgeschrieben werden :Nspi, i=1NN

(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),

Dabei ist eine der elliptischen Jacobi-Funktionen. Einige Quellen haben als zweites Argument für all diese Funktionen und nennen es den Modul. Wir haben und nennen es den Modul. Die Variable kann als einer der beiden Freiheitsgrade der hinreichend allgemeinen parametrischen Kurven und einer der drei Freiheitsgrade eines ausreichend allgemeinen elliptischen Filters. Bei die Durchlassbandwelligkeit unendlich und bei wodn(t,k)=1k2sn2(t,k)k2k0<ν0<K´(k,ν0)(k,ν0,N)ν0=0ν0=K´K´Ist die Viertelperiode der Jacobi-Ellipsenfunktionen mit dem Modul , würden die Pole Nullen entsprechen. Mit ausreichend allgemein meine ich, dass es nur noch einen Freiheitsgrad gibt, der die Frequenz der Durchlassbandkante steuert und der sich als gleichmäßige Skalierung beider parametrischer Kurvenfunktionen um denselben Faktor manifestiert. Die Teilmenge der elliptischen Filter, die und einen nicht reduzierbaren Bruchteil , werden bei Änderung des trivialen Freiheitsgrades in eine andere Teilmenge unendlicher Größe in der Dimension transformiert .1k2fp(α), fz(α),Nz/Pz=1N

Durch die gleiche Substitution wie bei den Nullen kann die Parameterkurve für die Pole wie folgt geschrieben werden:

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

wir die Funktionen und Kurven in Oktave für Werte von und ( im Code), die aus Burrus-Beispiel 3.4 kopiert wurden:kν0v0

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

Analytische Erweiterungen parametrischer Kurvenfunktionen für Burrus Beispiel 3.4
Abbildung 9. und für Burrus Beispiel 3.4, analytisch erweitert auf Periode . Die drei Pole (rote Kreuze) und die drei Nullen (blaue Kreise, einer unendlich und nicht gezeigt) des Beispiels werden in Bezug auf bei und gleichmäßig abgetastet aus diesen Funktionen gemäß Gl. 2 der Frage. Mit der Erweiterung wird der Kehrwert vonfz(α)fp(α)α=02αα=1/6, α=3/6,α=5/6,Im(fz(α))(nicht gezeigt) oszilliert sehr sanft, was es einfach macht, sich durch eine abgeschnittene Fourier-Reihe wie in den vorherigen Abschnitten anzunähern. Die anderen periodisch erweiterten Funktionen sind ebenfalls flüssig, lassen sich aber nicht so einfach annähern.

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

Parametrische Kurven für Burrus Beispiel 3.4
Abbildung 10. Parametrische Kurven für Burrus Beispiel 3.4. Horizontale Achse: Realteil, vertikale Achse: Imaginärteil. Diese Ansicht zeigt nicht die Geschwindigkeit der Parameterkurve, so dass die drei Pole (rote Kreuze) und die drei Nullen (blaue Kreise, einer unendlich und nicht gezeigt) nicht gleichmäßig auf den Kurven verteilt zu sein scheinen, selbst wenn sie mit sind in Bezug auf den Parameter der parametrischen Kurven.α

Das elliptische Filterdesign mit den von Burrus angegebenen exakten und entspricht vollständig der Abtastung mit den exakten und , sodass die Methoden gleichwertig und verfügbar sind. Frage 1 bleibt offen. Es kann sein, dass andere Filtertypen unendlich viele Untergruppen haben, die durch und und . Von den Methoden zur Approximation der elliptischen parametrischen Kurven sind diejenigen, die nicht von der genauen Funktionsform abhängen, möglicherweise auf andere Filtertypen übertragbar. Ich halte dies für die wahrscheinlichsten Methoden, die elliptische Filter verallgemeinern, wie beispielsweise eine Teilmenge von allgemeinen Equiripple-Filtern. Für sie können exakte Formeln für Pole und Nullen unbekannt oder unlösbar sein.fp(α)fz(α)fp(α)fz(α)Nz/Np

Zurück zu Gl. 2, für ungerade haben wir für eine der Nullen , die es durch ins Unendliche sendet . Mit den Polen passiert so etwas nicht (Gl. 4). Ich habe die Frage aktualisiert, damit solche Nullen (und Pole, falls vorhanden) in der Zählung (oder ) enthalten sind. Bei gehen alle Nullen nach ins Unendliche , was Chebyshev-Filter vom Typ I zu ergeben .Nα=0.5sn(2K,k)=0NNzNNpk=0fz(α)

Ich denke, Frage 3 wurde gerade gelöst und die Antwort lautet "Ja". Wie es scheint, können wir alle Fälle von elliptischen Filtern , ohne mit in Konflikt zu , mit der neuen Definition dieser.NNz=NNp


Olli, du kannst dir sowieso kein Kopfgeld geben. Ihre 500 Punkte sind für immer verschwunden. Verschwende sie einfach nicht wie ich es versehentlich einmal auf der EE.SE-Seite getan habe.
Robert Bristow-Johnson

Kommentare sind nicht für eine längere Diskussion gedacht. Diese Unterhaltung wurde in den Chat verschoben .
Jojek

1
Ja, das ist immer noch der Spezialfall für ungerade Bestellungen, wenn es einen zusätzlichen, einzelnen, realen Pol ( für die Übertragungsfunktion gibt. Bezüglich der rationalen Funktion, die mit Nullen beginnt, haben Sie nur: , wobei . Für ungerade Ordnungen gilt . Dies führt dazu, dass der Filter eine unnormierte Verstärkung aufweist. Daher sollte er mit skaliert werden . Pole entstehen, indem man expandiert und die Wurzeln des Nenners findet, dann die linke Seite auswählt und die Übertragungsfunktion bildet. re/(s+re)
R(x)=in/2x2zeroi2jn/2x2k/zeroj2
k=fs/fpR(x)=R(x)xR(0)1+ϵ2R2(x)
ein betroffener Bürger

Ich war mir nicht sicher, ob ich das gesagt habe. Um die Übertragungsfunktion zu erstellen, ist es nicht unbedingt erforderlich, dem Buch zu folgen, indem , dann die linken Pole und dann die rationale Übertragungsfunktion gemäß der Formel von @ A_A erstellt werden. Mathematisch und das praktische Ergebnis ist, dass nach dem Finden der Wurzeln aus (Anmerkung: , nicht oder ) einfach die Wurzeln mit den positiven Realteilen und entweder positiv ausgewählt werden oder negative Imageteile (nicht beide). Dh für gäbe es 4 Paare / 8 Pole; Nach der Auswahl haben Sie 2 verschiedene Pole. Dann einfach: ...H(s)H(s)1+ϵ2R2(x)xjωsN=4
N(s)=iN/2|pi|2
ein besorgter Bürger

(für Filter), wobei und , wobei (für Pol-Null-Filter), während der Nenner ist: und . Dies wäre der Tiefpass-Prototyp. p=σ+jω
N(s)=iN/2s2+|zi|2
z=jμ
D(s)=jN/2s2+2Re(pj)s+|pj|2
H(s)=N(s)D(s)
ein besorgter Bürger

0

Es scheint, dass die meisten Teilnehmer dieser Diskussion keine Art von Filter kennen, die ihre wirkliche Lösung sein könnte! Das sind die Paynter-Filter, die von Henry M. Paynter entwickelt wurden, der Professor am MIT und Partner von Philbrick Reseach war. Sie sind der beste Ansatz zum "Ausführen" einer durchschnittlichen Filterung und zum Behandeln nicht deterministischer Eingangssignale, weitaus besser als Bessel-Thomson. Ich benutzte sie für physiologisch-medizinische und Sonaranwendungen. Ihre Theorien finden sich in den Ausgaben Januar-Juli und Juli-Oktober des "Lightning Empiricist" unter dem allgemeinen Titel: "Neue Ansätze für den Entwurf aktiver Tiefpassfilter" von Peter D. Hansen. Für die Pole des 2. sind Tabellen angegeben Filter 4. und 6. Ordnung. Ich habe dasselbe für die 8. Ordnung berechnet.


Und es scheint, als hätten Sie den Punkt von OP verpasst: den Heiligen Gral der mathematischen Formeln zu finden, mit denen jeder Filtertyp (oder ähnliches) berechnet werden kann. :-)
ein besorgter Bürger

0

Ich füge hier einige Anmerkungen hinzu, die nützlich sein können, wenn jemand die Grenze der ten Größenwurzel einer Übertragungsfunktion mit einem Vielfachen von Polen und Nullen berechnen möchte, die auf willkürlichen parametrischen Kurven verteilt sind. Man könnte dies durch Verwenden eines großen und durch gleichmäßiges Verteilen der Pole und Nullen über den Parameter der Parameterkurve approximieren. Leider hat die Approximation an den Stellen der Pole und Nullen der realisierbaren Übertragungsfunktion auf der dB-Skala immer einen unendlichen Fehler. In diesem Sinne ist ein besserer Baustein ein Liniensegment mit einer gleichmäßigen Pol- oder Nullverteilung entlang seiner Länge. Betrachtet man nur Nullen, verteilt auf ein Liniensegment mit StartpunktNNNNNx0+y0i und Endpunktx1+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))

Einige Sonderfälle müssen separat behandelt werden. Wenn und , müssen wir das Limit verwenden: x0=0y0=0

=e1x12+y12

Oder umgekehrt, wenn und : x1=0y1=0

=e1x02+y02

Oder wenn das Liniensegment die Länge Null hat, und , haben wir nur eine reguläre Null: x0=x1y0=y1

=x02+y02

Um die Auswertung bei verschiedenen Argumentwerten von oder durchzuführen, subtrahieren Sie diesen Wert einfach vom Anfangs- und Endpunkt der Linie.H(z)H(s)

Wie dies auf der komplexen Ebene aussieht: Abbildung 1. Größe der Übertragungsfunktion mit einer einzelnen Null. 1-dB-Schritte werden in Türkis und 10-dB-Schritte in Gelb angezeigt.Größe der Übertragungsfunktion mit einer einzelnen Null

Die Grenze N-> inf der N-ten Größenwurzel einer Übertragungsfunktion mit N gleichmßig auf einem Liniensegment verteilten Nullen
Figure 2. Die Grenze der ten Magnitudenwurzel einer Übertragungsfunktion mit gleichmäßig auf einem Liniensegment verteilten Nullen. Das Liniensegment weist eine Knickspur auf, der Wert geht jedoch nie auf Null, wie dies bei einer regulären realisierbaren Null der Fall ist. Bei ausreichendem Abstand würde dies wie eine reguläre Null aussehen. Der Farbcode ist der gleiche wie in Abb. 1.NNN

Bildbeschreibung hier eingeben
Abbildung 3. Eine Annäherung von Abbildung 2 unter Verwendung diskreter Nullen: 5. Wurzel der Größe eines Polynoms mit 5 gleichmäßig auf dem Liniensegment verteilten Nullen. An der Stelle jeder Null ist der Wert Null, weil01/5=0.

Feigen. 1 und 2 wurden unter Verwendung dieser Verarbeitungsskizze mit dem Quellcode generiert:

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();
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.