Mathematische Frage, die sich aus der Verwendung der bilinearen Transformation ergibt


10

Das hängt also mit dem Kochbuch zusammen, und ich habe vor vielleicht zwei Jahrzehnten versucht, es zu lösen, habe aufgegeben und wurde an das ungelöste Problem erinnert. Aber es ist verdammt einfach, aber ich bin immer noch in den Dreck geraten.

Dies ist ein einfaches Bandpassfilter (BPF) mit Resonanzfrequenz und Resonanz :Ω0Q

H(s)=1QsΩ0(sΩ0)2+1QsΩ0+1

Bei der Resonanzfrequenz

|H(jΩ)|H(jΩ0)=1

und die oberen und unteren Streifen sind so definiert, dass

|H(jΩU)|2=|H(jΩ02BW/2)|2=12

|H(jΩL)|2=|H(jΩ02BW/2)|2=12

Wir nennen dies die "Half-Power-Bandedges" . Da wir Audio sind, definieren wir die Bandbreite in Oktaven, und in der analogen Welt hängt diese Bandbreite in Oktaven, , mit als:BWQ

1Q=2BW12BW=2sinh(ln(2)2BW)

Wir verwenden eine bilineare Transformation (mit vorverzogener Resonanzfrequenz), die Folgendes abbildet:

sΩ01tan(ω0/2)1z11+z1jΩΩ0jtan(ω/2)tan(ω0/2)

Lassen Sie und .z=ejωs=jΩ

Die Resonanzwinkelfrequenz des analogen Filters ist und mit Kompensationsfrequenz Verziehen auf die Resonanzfrequenz in dem realisierten Digitalfilters durchgeführt wird , wenn (die benutzerdefinierte Resonanzfrequenz) ist , dann . ω = ω 0 Ω = Ω 0Ω0ω=ω0Ω=Ω0

Also wenn analoge Winkelfrequenz ist

ΩΩ0=tan(ω/2)tan(ω0/2)

dann wird es auf die digitale Winkelfrequenz als abgebildet

ω=2arctan(ΩΩ0tan(ω0/2))

Nun sind die oberen und unteren Bänder in der analogen Welt

Ω L = Ω 0 2 - B W / 2

ΩU=Ω02BW/2
ΩL=Ω02BW/2

und im digitalen Frequenzbereich sind

ωU=2arctan(ΩUΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

ωL=2arctan(ΩLΩ0tan(ω0/2))=2arctan(2BW/2tan(ω0/2))

Dann beträgt der tatsächliche Unterschied in der logarithmischen Frequenz der Bandeges (der tatsächlichen Bandbreite im digitalen Filter):

bw=log2(ωU)log2(ωL)=log2(2arctan(2BW/2tan(ω0/2)))log2(2arctan(2BW/2tan(ω0/2))) 

oder

ln(2)bw=ln(arctan(eln(2)BW/2tan(ω0/2)))ln(arctan(eln(2)BW/2tan(ω0/2)))

Dies hat eine funktionale Form von

f(x)=ln(arctan(αex))ln(arctan(αex))

wobei , undx ln ( 2 )f(x)ln(2)bw& agr;tan(ω0/2)xln(2)2BWαtan(ω0/2)

Ich möchte invertieren (aber ich weiß, dass ich es mit einer schönen geschlossenen Form nicht genau machen kann). Ich habe bereits eine Näherung erster Ordnung durchgeführt und möchte sie auf eine Näherung dritter Ordnung bringen. Und dies ist zu einer Art kopulierendem weiblichen Hund geworden, obwohl es einfach sein sollte.f(x)

Das hat etwas mit der Lagrange-Inversionsformel zu tun, und ich möchte nur einen Begriff mehr als ich verwenden.

Wir wissen von oben, dass eine ungerade Symmetriefunktion ist:f(x)

f(x)=f(x)

Dies bedeutet, dass und alle Terme gerader Ordnung der Maclaurin-Reihe Null sind:f(0)=0

y=f(x)=a1x+a3x3+...

Die Umkehrfunktion ist auch eine ungerade Symmetrie, geht durch Null und kann als Maclaurin-Reihe ausgedrückt werden

x=g(y)=b1y+b3y3+...

und wenn wir wissen, was und von , dann haben wir eine gute Idee, was und müssen:a 3 f ( x ) b 1 b 3a1a3f(x)b1b3

b1=1a1b3=a3a14

Jetzt kann ich die Ableitung von berechnen und bei Null auswerten und ich bekommef(x)

a1=2α(1+α2)arctan(α)=sin(ω0)ω0/2
b1=(1+α2)arctan(α)2α=ω0/2sin(ω0)

Aber ich habe eine Hündin Zeit, und damit . Kann das jemand machen? Ich würde mich sogar mit einem festen Ausdruck für die dritte Ableitung von zufrieden geben, die bei bewertet wird .b 3 f ( x ) x = 0a3b3f(x)x=0


2
Nur zur Verdeutlichung: Ihr Ziel ist es, zu invertieren , dh für ein gegebenes möchten Sie das ? Insbesondere möchten Sie dies durch Polynomexpansion tun und suchen nach dem 3. Koeffizienten (da der 2. Null ist, tun Sie dies für die Ungerade der Funktion). Richtig? f(x)x
f(x)=ln(arctan(αex))ln(arctan(αex))
f(x)x
Maximilian Matthé

2
So Sie wissen wollen gegeben , das heißt, Sie wollen wissen , was die Bandbreite des analogen Filters müssen Sie eine gewünschte Bandbreite des digitalen Filters zu erhalten wählen, nicht wahr? BWbw
Matt L.

2
ja, ja und ja.
Robert Bristow-Johnson

1
@ robertbristow-johnson Ich habe die Frage nicht allzu sorgfältig gelesen, aber ich habe bemerkt, dass Sie an bei interessiert sind . Ist es in Ordnung, Mathematica oder Wolfram Alpha zu verwenden, um das zu berechnen? Ich erhalte ein ziemlich sauberes Ergebnis: . wolframalpha.com/input/… Und wenn Sie den Teil "Auswerten bei x = 0" entfernen, spuckt Wolfram den koppelnden weiblichen Eckzahn in seiner vollen Pracht aus. x = 0 4 ( 8 - π 2 ) α 3f(x)x=04(8π2)α3π3
Atul Ingle

1
Tippfehler in meinem dort. Das "saubere" Ergebnis ist tatsächlich: wolframalpha.com/input/…- ( 6 a 2 ) / ( ( a 2 + 1 ) 2 a t a n ( a ) 2 ) + ( 2 a ) / ( ( a 2 + 1 ) a t a n ( a ) ) + ( 16 a 5 ) / ( ( a 2 +)f(x)(6a2)/((a2+1)2atan(a)2)+(2a)/((a2+1)atan(a))+(16a5)/((a2+1)3atan(a))+(12a4)/((a2+1)3atan(a)2)(16a3)/((a2+1)2atan(a))+(4a3)/((a2+1)3atan(1)(a)3)
Atul Ingle

Antworten:


4

Um meinen Teil zu dieser Frage zu ergänzen: Hier ist eine etwas kurze Antwort, die auf einer manuellen Erweiterung der ungeraden Funktion basiert in einer Reihe bis zur dritten Ordnung. Weitere Details finden Sie unter mathSE .f ( x )f(x)

f(x)=ln(arctan(αex))ln(arctan(αex))(1)=f1x+f3x3+O(x5)

Zuerst konzentrieren wir uns auf den linken Term von und beginnen mit f ( x )

ln(arctan(αex))
f(x)

Serienerweiterung von :arctan

Wir erhalten

arctan(αex)=n=0(1)n2n+1α2n+1e(2n+1)x=(2)=j=01j!n=0(1)n(2n+1)j1α2n+1xj

Wir leiten nun aus (2) die Koeffizienten bis zu . Unter Verwendung des Koeffizienten Operators den Koeffizienten zu bezeichnen in einer Reihe erhalten wir [ x k ] x k [ x 0 ] Arctan ( α e x )x3[xk]xk

[x0]arctan(αex)=n=0(1)n2n+1α2n+1=arctanα[x1]arctan(αex)=n=0(1)nα2n+1=α1+α2[x2]arctan(αex)=12n=0(1)n(2n+1)α2n+1==α2ddα(α1+α2)=α(1α2)2(1+α2)2[x3]arctan(αex)=16n=0(1)n(2n+1)2α2n+1=α26n=0(1)n(2n+1)(2n)α2n1+α6n=0(1)n(2n+1)α2n==(α26d2dα2+α6ddα)(α1+α2)==α56α3+α6(1+α2)3

Wir schließen daraus, dass

arctan(αex)=arctan(α)+α1+α2x+α(1α2)2(1+α2)2x2(3)+α56α3+α6(1+α2)3x3+O(x4)

Potenzen in logarithmischen Reihen:

Um die Koeffizienten der logarithmischen Reihe abzuleiten, Wir schreiben den Ausdruck (3) als und wir betrachten Arctan(αex)

ln(arctan(αex))=n=1(1)n+1n(arctan(αex)1)n
ln ( Arctan ( α e x ) )
arctan(αex)=a0+a1x+a2x2+a3x3+O(x4)
(4)ln(arctan(αex))=n=1(1)n+1n((a01)+a1x+a2x2+a3x3)n+O(x4)

Wir setzen nun und extrahieren die Koeffizienten von bis aus x 0 x 3 ( A ( x ) ) nA(x)=(a01)+a1x+a2x2+a3x3x0x3

(A(x))n=((a01)+a1x+a2x2+a3x3)n=j=0n(nj)(a01)j(a1x+a2x2+a3x3)nj(5)=j=0n(nj)(a01)jk=0nj(njk)a1kxk(a2x2+a3x3)njk

Wir erhalten aus (5)

[x0](A(x))n==(a01)n[x1](A(x))n==a1n(a01)n1[x2](A(x))n==a2n(a01)n1+12n(n1)a12(a01)n2[x3](A(x))n==na3(a01)n1+a1a2n(n1)(a01)n2(6)+16n(n1)(n2)a13(a01)n3

Reihenerweiterung des Logarithmus:

Wir berechnen unter Verwendung von (6) die Koeffizienten von in Form vona j ist 0 j 3ln(arctan(αex))aj,0j3

[x0]ln(arctan(αex))=n=1(1)n+1n[x0]A(x)=n=1(1)n+1n[x0](a01)n=ln(a01)[x1]ln(arctan(αex))=n=1(1)n+1n[x1]A(x)=n=1(1)n+1n[x0]a1n(a01)n1=a1n=0(1)n(a01)n=a1a0[x2]ln(arctan(αex))=n=1(1)n+1n[x2]A(x)=n=1(1)n+1n(a2n(a01)n1+12n(n1)a12(a01)n2)==(a2+a122dda0)(1a0)=a2a0a122a02[x3]ln(arctan(αex))=n=1(1)n+1n[x3]A(x)=n=1(1)n+1n(na3(a01)n1+a1a2n(n1)(a01)n2+16n(n1)(n2)a13(a01)n3)==(a3+a1a2dda0+a136d2da02)(1a0)(7)=a3a0a1a2a02+a133a03

Reihenerweiterung von :f(x)

Jetzt ist es Zeit zu ernten. Wir erhalten schließlich mit (3) und (7), dass ungerade istf(x)

f(x)=ln(arctan(αex))ln(arctan(αex))==2a1a0x+2(a3a0a1a2a02+a133a03)x3+O(x5)=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3+O(x5)

Markus, während Sie in Bezug auf richtig sind , da wir wissen, dass eine ungerade Symmetrie hat und die Terme gerader Ordnung Null sind, können Sie sagen, dass diese Erweiterung gut für . O(x4)f(x)O(x5)
Robert Bristow-Johnson

@ robertbristow-johnson: Ja natürlich. Entsprechend aktualisiert. :-)
Markus Scheuer

Große Anstrengung! Beim Versuch , diese detaillierte und langwierige Antwort zu lesen, konnte ich nicht sehen, wie Sie in der Gleichung (4) außerhalb des Logarithmus isolieren können . Die unendliche Reihe enthält bereits jede Potenz von . Was bedeutet der isolierte -Term dort? O(x4)xO(x4)
Fat32

Natürlich habe ich das Gefühl, was Sie dort bedeuten wollen, aber dann könnte die richtige Notation ungefähr so ​​lauten: wobei ich , um mich von all Ihren anderen Notationen fernzuhalten. Und beachten Sie, dass ich und , um zwischen diesen beiden Koeffizientensätzen zu unterscheiden. Nun sind Ihre Gleichung (4) und diese obige Zeile nicht genau gleich. Ich denke jedoch nicht, dass dies Ihren weiteren Fortschritt beeinflussen wird.
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
TO1O2
Fat32

@ Fat32: Vielleicht möchten Sie sich die Big-O-Notation
Markus Scheuer

3

(Kommentar in Antwort umwandeln.)

Unter Verwendung von Wolfram Alpha ergibt bei Folgendes: f(x)x=0

f(0)=6α2(α2+1)2(arctan(α))2 + 2α(α2+1)arctan(α)+16α5(α2+1)3arctan(α) + 12α4(α2+1)3(arctan(α))216α3(α2+1)2arctan(α) + 4α3(α2+1)3(arctan(α))3=2(α46α2+1)α(α2+1)3arctan(α)+6(α21)α2(α2+1)3(arctan(α))2+4α3(α2+1)3(arctan(α))3

http://www.wolframalpha.com/input/?i=evaluate+d3%2Fdx3++(+ln+(arctan+(a+exp(+x)))+-+ln+(arctan(a+exp(-+x) )) +) + bei + x% 3D0

Wir können auch überprüfen, ob dies mit Markus 'Antwort hier übereinstimmt .

Sein Koeffizient von ergibt sichx3

α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2).

Wenn wir das mit 6 multiplizieren und einige Faktoren neu ordnen, erhalten wir:

2α(α46α2+1)(1+α2)3arctan(α)6α2(1α2)(1+α2)3(arctan(α))2+4α3(1+α2)3(arctan(α))3

was passt!


Atul, es scheint, dass Ihre vereinfachte Antwort nicht mit Markus 'Antwort bei der Math SE übereinstimmt. es sollte der Fall sein, dass Ich glaube nicht, dass jeder Term in deinem f '' '(0) mit Markus übereinstimmt. könnte sein, dass Markus falsch liegt.
f(x)|x0 = 3!a3=6a3
Robert Bristow-Johnson

2
@ robertbristow-johnson Ich denke, sie passen zusammen.
Atul Ingle

sie tun es jetzt. Ich denke, Markus muss einen Fehler gehabt haben. er hat seine Antwort die gute altmodische Art und Weise.
Robert Bristow-Johnson

Atul, du wirst dein Kopfgeld bekommen. Aber ich habe die Regeln für Kopfgelder untersucht und sie haben mich nicht aufteilen lassen, aber sie haben mich zweimal vergeben lassen, aber einzeln. Da Markus hier bei dsp.se weniger Repräsentanten hat als Sie und er ohne die Hilfe eines Computers eine Antwort herausgeschmissen hat, vergebe ich zuerst sein Kopfgeld. dann werde ich ein weiteres Kopfgeld auf diese Frage setzen und es dann an dich vergeben. Es heißt, ich muss 23 Stunden warten. Keine Ahnung, wer noch mein "Häkchen" bekommt.
Robert Bristow-Johnson

1
@ Robertbristow-Johnson Entschuldigung für die späte Antwort. Die Koeffizienten sind für . wolframalpha.com/input/…2/3,2/15,16/945,2/945ω02,ω04,ω06,ω08
Atul Ingle

3

Das in der Frage gestellte Problem scheint keine geschlossene Lösung zu haben. Wie in der Frage erwähnt und in anderen Antworten gezeigt, kann das Ergebnis zu einer Reihe entwickelt werden, die mit jedem symbolischen mathematischen Werkzeug wie Mathematica erreicht werden kann. Die Begriffe werden jedoch ziemlich kompliziert und hässlich, und es ist unklar, wie gut die Annäherung ist, wenn wir Begriffe bis zur dritten Ordnung einbeziehen. Da wir keine genaue Formel erhalten können, ist es möglicherweise besser, die Lösung numerisch zu berechnen, was im Gegensatz zur Näherung ein (fast) genaues Ergebnis liefert.

Darum geht es in meiner Antwort jedoch nicht. Ich schlage einen anderen Weg vor, der eine genaue Lösung ergibt, indem die Problemformulierung geändert wird. Nach einer Weile des Nachdenkens stellt sich heraus, dass es die Angabe der Mittenfrequenz und die Angabe der Bandbreite als Verhältnis (oder gleichwertig in Oktaven) ist, die die mathematische Unlösbarkeit verursacht. Es gibt zwei Wege aus dem Dilemma heraus:ω0

  1. Geben Sie die Bandbreite des zeitdiskreten Filters als Differenz der Frequenzen , wobei und die unteren bzw. oberen Bandkanten des zeitdiskreten Filters sind.ω 1 ω 2Δω=ω2ω1ω1ω2
  2. das Verhältnis an und anstelle von eine der beiden oder .ω 0 ω 1 ω 2ω2/ω1ω0ω1ω2

In beiden Fällen ist eine einfache analytische Lösung möglich. Da es wünschenswert ist, die Bandbreite des zeitdiskreten Filters als Verhältnis (oder äquivalent in Oktaven) vorzuschreiben, werde ich den zweiten Ansatz beschreiben.

Definieren wir die Kantenfrequenzen und des zeitkontinuierlichen Filters durchΩ 2Ω1Ω2

(1)|H(jΩ1)|2=|H(jΩ2)|2=12

mit , wobei die Übertragungsfunktion eines Bandpassfilters zweiter Ordnung ist:Ω2>Ω1H(s)

(2)H(s)=ΔΩss2+ΔΩs+Ω02

mit und . Beachten Sie, dass und für .ΔΩ=Ω2Ω1Ω02=Ω1Ω2H(jΩ0)=1|H(jΩ)|<1ΩΩ0

Wir verwenden die bilineare Transformation, um die und des zeitdiskreten Filters auf die und des zeitkontinuierlichen Filters . Ohne Verlust der Allgemeinheit können wir wählen . Für unsere Zwecke nimmt die bilineare Transformation dann die Form anω1ω2Ω1Ω2Ω1=1

(3)s=1tan(ω12)z1z+1

entsprechend der folgenden Beziehung zwischen zeitkontinuierlichen und zeitdiskreten Frequenzen:

(4)Ω=tan(ω2)tan(ω12)

Aus wir durch Setzen von . Mit und berechnet aus , erhalten wir die Übertragungsfunktion des analogen Prototypfilters aus . Durch Anwenden der bilinearen Transformation wir die Übertragungsfunktion des zeitdiskreten Bandpassfilters:(4)Ω2ω=ω2Ω1=1Ω2(4)(2)(3)

(5)Hd(z)=gz21z2+az+b

mit

(6)g=ΔΩc1+ΔΩc+Ω02c2a=2(Ω02c21)1+ΔΩc+Ω02c2b=1ΔΩc+Ω02c21+ΔΩc+Ω02c2c=tan(ω12)

Zusammenfassung:

Die Bandbreite des zeitdiskreten Filters kann in Oktaven (oder im Allgemeinen als Verhältnis) angegeben werden, und die Parameter des analogen Prototypfilters können genau berechnet werden, so dass die angegebene Bandbreite erreicht wird. Anstelle der Mittenfrequenz wir die Bandkanten und . Die durch definierte Mittenfrequenz ist ein Ergebnis des Entwurfs.ω0ω1ω2|Hd(ejω0)|=1

Die notwendigen Schritte sind wie folgt:

  1. Geben Sie das gewünschte Verhältnis der Bandkanten und einer der Bandkanten an (was natürlich der einfachen Angabe von und ).ω2/ω1ω1ω2
  2. Wählen Sie und bestimmen Sie aus . Berechnen Sie und des analogen Prototypfilters .Ω1=1Ω2(4)ΔΩ=Ω2Ω1Ω02=Ω1Ω2(2)
  3. Bewerten Sie die Konstanten , um die zeitdiskrete Übertragungsfunktion .(6)(5)

Beachten Sie, dass bei dem allgemeineren Ansatz, bei dem und angegeben werden, die tatsächlichen Bandkanten und ein Ergebnis des Entwurfsprozesses sind. In der vorgeschlagenen Lösung können die Bandkanten angegeben werden und ist ein Ergebnis des Entwurfsprozesses. Der Vorteil des letzteren Ansatzes besteht darin, dass die Bandbreite in Oktaven angegeben werden kann und die Lösung genau ist, dh der resultierende Filter hat genau die angegebene Bandbreite in Oktaven.ω0Δω=ω2ω1ω1ω2ω0

Beispiel:

eine Bandbreite von einer Oktave an und wählen Sie die untere Bandkante als . Dies ergibt eine obere Bandkante . Die Bandkanten des analogen Prototypfilters sind und von (mit ) . Dies ergibt und . Mit wir für die zeitdiskrete Übertragungsfunktionω1=0.2πω2=2ω1=0.4πΩ1=1(4)ω=ω2Ω2=2.2361ΔΩ=Ω2Ω1=1.2361Ω02=Ω1Ω2=2.2361(6)(5)

Hd(z)=0.24524z21z20.93294z+0.50953

Dies erreicht genau eine Bandbreite von 1 Oktave und die angegebenen Bandkanten, wie in der folgenden Abbildung gezeigt:

Geben Sie hier die Bildbeschreibung ein

Numerische Lösung des ursprünglichen Problems:

Aus den Kommentaren geht hervor, dass es wichtig ist, die Mittenfrequenz genau angeben zu können, für die erfüllt ist. Wie bereits erwähnt, ist es nicht möglich, eine exakte Lösung in geschlossener Form zu erhalten, und eine Serienentwicklung erzeugt ziemlich unhandliche Ausdrücke.ω0|Hd(ejω0)|=1

Der Klarheit halber möchte ich die möglichen Optionen mit ihren Vor- und Nachteilen zusammenfassen:

  1. geben Sie die gewünschte Bandbreite als Frequenzdifferenz und geben ; In diesem Fall ist eine einfache Lösung in geschlossener Form möglich.Δω=ω2ω1ω0
  2. die Bandkanten und (oder gleichwertig die Bandbreite in Oktaven und eine der Bandkanten) an. Dies führt auch zu einer einfachen Lösung in geschlossener Form, wie oben erläutert, aber die Mittenfrequenz ist ein Ergebnis des Entwurfs und kann nicht angegeben werden.ω1ω2ω0
  3. Geben Sie die gewünschte Bandbreite in Oktaven und die Mittenfrequenz (wie in der Frage gestellt). Es ist weder eine Lösung in geschlossener Form möglich, noch gibt es (vorerst) eine einfache Annäherung. Aus diesem Grund halte ich es für wünschenswert, eine einfache und effiziente Methode zu haben, um eine numerische Lösung zu erhalten. Dies wird unten erklärt.ω0

Wenn angegeben wird, verwenden wir eine Form der bilinearen Transformation mit einer Normalisierungskonstante, die sich von der in und :ω0(3)(4)

(7)Ω=tan(ω2)tan(ω02)

Wir definieren . Bezeichnen Sie das angegebene Verhältnis der Bandkanten des zeitdiskreten Filters alsΩ0=1

(8)r=ω2ω1

Mit wir von undc=tan(ω0/2)(7)(8)

(9)r=arctan(cΩ2)arctan(cΩ1)

Mit kann in folgender Form umgeschrieben werden:Ω1Ω2=Ω02=1(9)

(10)f(Ω1)=rarctan(cΩ1)arctan(cΩ1)=0

Für einen gegebenen Wert von diese Gleichung mit einigen Newton-Iterationen für gelöst werden . Dazu benötigen wir die Ableitung von :rΩ1f(Ω1)

(11)f(Ω1)=c(r1+c2Ω12+1c2+Ω12)

Mit wissen wir, dass im Intervall . Obwohl es möglich ist, intelligentere Anfangslösungen zu entwickeln, stellt sich heraus, dass die anfängliche Schätzung für die meisten Spezifikationen gut funktioniert und nach nur Iterationen der Newtonschen Methode zu sehr genauen Lösungen führt :Ω0=1Ω1(0,1)Ω1(0)=0.14

(12)Ω1(n+1)=Ω1(n)f(Ω1(n))f(Ω1(n))

Mit das mit einigen Iterationen von , können wir und , und wir verwenden und , um die Koeffizienten von zu berechnen das zeitdiskrete Filter. Beachten Sie, dass die Konstante jetzt durch .Ω1(12)Ω2=1/Ω1ΔΩ=Ω2Ω1(5)(6)cc=tan(ω0/2)

Beispiel 1:

wir und eine Bandbreite von Oktaven an. Dies entspricht einem Verhältnis . Mit einer anfänglichen Schätzung von führten Iterationen der Newtonschen Methode zu einer Lösung , aus der die Koeffizienten der zeitdiskreten Zeit wie oben erläutert berechnet werden können. Die folgende Abbildung zeigt das Ergebnis:ω0=0.6π0.5r=ω2/ω1=20.5=2=1.4142Ω1=0.14Ω1=0.71

Geben Sie hier die Bildbeschreibung ein

Der Filter wurde mit diesem Matlab / Octave-Skript berechnet:

% Spezifikationen
bw = 0,5; % gewünschte Bandbreite in Oktaven
w0 = 0,6 * pi; % Resonanzfrequenz

r = 2 ^ (bw); % Verhältnis der Bandkanten
W1 = 0,1; % anfängliche Vermutung (funktioniert für die meisten Spezifikationen)
Nit = 4; % # Newton-Iterationen
c = tan (w0 / 2);

% Newton
für i = 1: Nit,
    f = r * atan (c * W1) - atan (c / W1);
    fp = c * (r / (1 + c ^ 2 * W1 ^ 2) + 1 / (c ^ 2 + W1 ^ 2));
    W1 = W1 - f / fp
Ende

W1 = abs (W1);
wenn (W1> = 1), Fehler ('Konvergenz fehlgeschlagen. Wert der anfänglichen Vermutung reduzieren.'); Ende

W2 = 1 / W1;
dW = W2 - W1;

% zeitdiskreter Filter
Skala = 1 + dW * c + W1 * W2 * c ^ 2;
b = (dW * c / Skala) * [1,0, -1];
a = [1, 2 * (W1 * W2 * c ^ 2-1) / Skala, (1-dW * c + W1 * W2 * c ^ 2) / Skala];

Beispiel 2:

Ich füge ein weiteres Beispiel hinzu, um zu zeigen, dass diese Methode auch Spezifikationen behandeln kann, für die die meisten Näherungen unsinnige Ergebnisse liefern. Dies ist häufig der Fall, wenn sowohl die gewünschte Bandbreite als auch die Resonanzfrequenz groß sind. Entwerfen wir einen Filter mit und Oktaven. Vier Iterationen der Newtonschen Methode mit einer anfänglichen Schätzung ergeben einen Endwert von , dh eine Bandbreite des analogen Prototyps von Oktaven. Das entsprechende zeitdiskrete Filter hat die folgenden Koeffizienten und sein Frequenzgang ist in der folgenden Darstellung dargestellt:ω0=0.95πbw=4Ω1(0)=0.1Ω1=0.00775log2(Ω2/Ω1)=log2(1/Ω12)14

b = 0,90986 * [1,0, -1];
a = [1,00000 0,17806 -0,81972];

Geben Sie hier die Bildbeschreibung ein

Die resultierenden halben Leistungsbandkanten sind und , die tatsächlich genau Oktaven (dh ein Faktor von ) voneinander entfernt sind.ω1=0.062476πω2=0.999612π416


Zwei erste Kommentare (ich habe dies noch nicht durchgelesen, Matt): Erstens interessiert mich die logarithmische Frequenz mehr als die lineare Frequenz. Für den analogen BPF (oder den digitalen BPF mit einer Resonanzfrequenz, die viel niedriger als Nyquist ist) besteht eine perfekte Symmetrie um die Resonanzfrequenz.
Robert Bristow-Johnson

und der zweite Kommentar ist folgender: Ich danke Ihnen, dass Sie anscheinend an der Notation von und festhalten. Ich wünschte, Sie würden sich an die Notation halten, dass die analogen und digitalen Resonanzfrequenzen sind bzw. und die analogen oberen und unteren Bänder sind bzw. und ebenso für die digitalen Bänder: und . Wir wissen, dass in der Protokollfrequenz die Hälfte der Bandbreite über und die Hälfte darunter liegt. Aufgrund von Verzerrungen gilt dies jedoch nicht genau für den digitalen BPF-Filter. s=jΩz=ejωΩ0ω0ΩUΩLωUωLΩ0
Robert Bristow-Johnson

Wenn ich dies weiter lese, ist es mir wichtig, dass die Resonanzfrequenz genau durch die bilineare Transformation abgebildet wird. Ich verstehe diesen Ansatz, Matt, aber ich möchte mich an die genaue Zuordnung von und dann das optimieren, bis angegeben ist. ω0BWbw
Robert Bristow-Johnson

@ robertbristow-johnson: OK, fair genug, Sie möchten eine genaue Spezifikation von . Das ist möglich, wenn Sie als linearen Unterschied angeben (was Sie, wie ich verstehe, nicht wollen). Eine saubere Lösung ist mit angegebenem UND einer Bandbreite in Oktaven nicht möglich . ω0Δωω0
Matt L.

1
@ robertbristow-johnson: Ich habe meiner Antwort eine sehr einfache numerische Lösung hinzugefügt (4 Newton-Iterationen).
Matt L.

3

Okay, ich habe versprochen, Kopfgeld zu zahlen, und ich werde mein Versprechen halten. aber ich muss gestehen, dass ich ein wenig darauf verzichten könnte, nur mit der dritten Ableitung von zufrieden zu sein . Was ich wirklich will, sind die beiden Koeffizienten für .f(x)g(y)

Daher wusste ich nicht, dass es diese Wolfram- Sprache als Alternative zu Mathematica oder Derive gibt, und ich wusste nicht, dass sie die dritte Ableitung so einfach berechnen und den Ausdruck vereinfachen kann.

und dieser Markus-Typ von der Math SE hat diese Antwort gepostet (von der ich dachte, dass sie die Menge an Grunge sein muss, von der ich dachte, dass sie benötigt wird).

y=f(x)=ln(arctan(αex))ln(arctan(αex))a1x + a3x3=2α(1+α2)arctan(α)x+α3(1+α2)3arctan(α)(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)x3

Also habe ich die Annäherung dritter Ordnung an die Umkehrung zusammengestellt:

x=g(y)b1y + b3y3=1a1y  a3a14y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α3(α46α2+13α(1α2)arctan(α)+2α2(arctan(α))2)y3=(1+α2)arctan(α)2αy(1+α2)(arctan(α))348α(α26+α23(1α2)αarctan(α)+2(arctan(α))2)y3=y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)

Ich hatte gehofft, jemand anderes würde das tun. erinnere an , undy=f(x)ln(2)bwg(y)=xln(2)2BWαtan(ω0/2)

x=g(y)y(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)y24)ln(2)2BW(ln(2)bw)(arctan(α)α+α12)(1 +((arctan(α))2(1α2+α26)arctan(α)αα1213)(ln(2)bw)24)

Ich habe drei bequeme Triggeridentitäten:

12(α+α1)=12(tan(ω0/2)+1tan(ω0/2))=1sin(ω0)

12(αα1)=12(tan(ω0/2)1tan(ω0/2))=1tan(ω0)

12(α2+α2)=12(tan2(ω0/2)+1tan2(ω0/2))=1sin2(ω0)+1tan2(ω0)=2sin2(ω0)1

"endlich" haben wir:

BWbwω0sin(ω0)(1 + (ln(2))224(2(ω021)(ω0sin(ω0))2+3ω0tan(ω0))(bw)2)

das ist nicht so schlimm passt auf eine einzelne Zeile. Wenn jemand einen Fehler oder einen guten Weg zur weiteren Vereinfachung sieht, lass es mich wissen.

mit der Potenzreihenannäherung aus dem obigen Kommentar,

BWbwω0sin(ω0)(1 + (ln(2))2(136ω021180ω0422835ω06)(bw)2)

Ich bin mir auch nicht sicher, ob Atuls Antwort für und Markus' Antwort für konsistent sind. Ich frage mich, ob jemand in der Lage sein könnte, dies in einer Antwort zu klären, die sich auf das Kopfgeld auswirken könnte. f(0)a3
Robert Bristow-Johnson

Ich habe auch von Wolframs Cloud-Notizbuch erfahren, das Mathematica in Ihrem Webbrowser ähnelt. Gehen Sie zu sandbox.open.wolframcloud.com/app und geben Sie 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle

@AtulIngle, ich habe die Korrekturen des Markus in die Umkehrfunktion integriert. Würde es Ihnen etwas ausmachen, das Ergebnis auf überprüfen ? g(y)
Robert Bristow-Johnson

Ich würde es begrüßen, wenn jemand meine Substitution auf zurückführen würde , insbesondere auf den Faktor, der multipliziert . Sehr bald werde ich zurück zu zurückbringen, was eine ganz andere Vereinfachung und Form bewirken wird. aber ich werde mich ein wenig zurückhalten, falls mir jemand sagt, dass meine obigen Vereinfachungen falsch sind. g(y)y2αtan(ω0/2)
Robert Bristow-Johnson

1
@ robert bistow-johnson Ich habe deinen endgültigen Ausdruck mit Mathematica auf g (y) überprüft, er sieht richtig aus.
Atul Ingle

2

Hier sind einige quantitative Ergebnisse. Ich habe die spezifizierte Bandbreite für den digitalen Filter auf der x-Achse und die resultierende digitale Bandbreite auf der y-Achse aufgetragen. Es gibt fünf Diagramme von grün nach rot, die die von Nyquist normalisierte Resonanzfrequenz :bwω0

ω0π= [0,0002 0,2441 0,4880 0,7320 0,9759]

Die Resonanzfrequenz geht also von nahezu Gleichstrom bis fast Nyquist.

Hier gibt es überhaupt keine Kompensation (oder Vorverzerrung) für die Bandbreite: Geben Sie hier die Bildbeschreibung ein

Hier ist die einfache Entschädigung erster Ordnung, die das Kochbuch die ganze Zeit geleistet hat: Geben Sie hier die Bildbeschreibung ein

Hier ist die Kompensation dritter Ordnung, die wir gerade hier gelöst haben: Geben Sie hier die Bildbeschreibung ein

Wir möchten, dass alle Linien direkt auf der Hauptdiagonale liegen.

Ich hatte im Fall dritter Ordnung einen Fehler gemacht und ihn in dieser Überarbeitung korrigiert. es sieht so aus, als ob die Näherung dritter Ordnung an etwas besser ist als die Näherung erster Ordnung für kleines .g(y)bw

Also habe ich mich mit dem Koeffizienten des Terms 3. Ordnung beschäftigt (ich möchte den Term 1. Ordnung gleich lassen), um seine Wirkung zu verringern. Dies ergibt sich aus der Multiplikation nur des Terms 3. Ordnung mit 50%:

Geben Sie hier die Bildbeschreibung ein

dies reduziert es auf 33%:

Geben Sie hier die Bildbeschreibung ein

und dies reduziert den Term 3. Ordnung auf 25%:

Geben Sie hier die Bildbeschreibung ein

Da das Ziel einer Umkehrfunktion darin besteht, die angegebene Funktion rückgängig zu machen, besteht der Sinn dieser ganzen Sache darin, die Kurven der zusammengesetzten Funktion so nahe wie möglich an der Hauptdiagonale zu liegen. es ist nicht schlecht für bis zu 75% Nyquist für Resonanzfrequenz und 3 Oktaven Bandbreite . aber nicht viel besser, um es wirklich wert zu machen im "Koeffizienten-Kochen" -Code, der ausgeführt wird, wenn der Benutzer einen Knopf dreht oder einen Schieberegler schiebt.ω0bw


Wie kann die Bandbreite im zweiten und dritten Diagramm negativ werden?
Matt L.

es kann nicht, weshalb ich von dieser Annäherung dritter Ordnung an das reelle das die Umkehrfunktion von Ich glaube nicht, dass die Approximation dritter Ordnung eine Verbesserung gegenüber der Approximation erster Ordnung darstellt, die seit einigen Jahrzehnten existiert . Dargestellt ist also wobei die Annäherung an das wahre inverse wobei weil ist bipolar (obwohl negative Bandbreite unsinnig ist) kann negativ werden. x=g(y)f( g (y)) g (y)g(y)y=f(g(y))f(x)f( g (y))
f(x)=ln(arctan(αex)arctan(αex))
f(g^(y))
g^(y)g(y)
y=f(g(y))
f(x)f(g^(y))
Robert Bristow-Johnson

oh, @MattL. Die Tatsache, dass den Ursprung durchläuft, sollte Sie nicht überraschen, auch wenn die Bandbreite nie wirklich negativ ist. Diese Bandbreiten-Mapping-Funktion ist eine seltsame Symmetrie, so dass mich der erste und der zweite Plot überhaupt nicht überraschen. aber die dritte Handlung ist enttäuschend. f(x)
Robert Bristow-Johnson

Ich habe mich nur gefragt, warum Sie die Kurven für negative Bandbreiten aufgezeichnet haben. Aber wenn ich mich nicht irre, dann ist die Serie, die Sie verwenden, eine Art Taylor-Serienerweiterung bei , oder? Warum sollten Sie also überhaupt erwarten, dass sich das tatsächliche Verhalten bei größeren Bandbreiten gut annähert, wenn Sie nur zwei Begriffe verwenden? bw=0
Matt L.

Ich wollte nur sicherstellen, dass die Funktionen ungerade Symmetrie haben und den Ursprung wirklich gut durchlaufen. Ja, hier dreht sich alles um Taylor (oder genauer gesagt Maclaurin). Sie werden feststellen, @MattL., dass ich denke, ein Begriff eignet sich ziemlich gut für alle Resonanzfrequenzen, die Nyquist nicht besonders nahe kommen. Ich habe den linearen Term unverändert gelassen und mich ein wenig mit dem Term dritter Ordnung beschäftigt (bleiben Sie dran, ich werde die Ergebnisse zeigen) und es funktioniert ziemlich gut. aber nicht so viel besser als die erste Ordnung, dass ich denke, ich sollte mich die Mühe machen, es im Kochbuch zu ändern.
Robert Bristow-Johnson
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.