Bilinear dönüşümünden çıkan matematiksel soru


10

Yani bu Yemek Kitabı ile ilgili ve belki yirmi yıl önce çözmeyi denedim, vazgeçtim ve çözülmemiş sorunu hatırlattı. Ama bu oldukça ileri, ama yine de muck.

Bu rezonans frekansı ve rezonans ile basit bir Bandpass filtresidir (BPF) :Ω0Q

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

Rezonans frekansında

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

ve üst ve alt bantlar,

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

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

Bunlara "yarı güç bantları" diyoruz . Ses olduğumuzdan, bant genişliğini oktavlarda tanımlıyoruz ve analog dünyada oktavlarda ( bu bant genişliği şu şekilde ilişkili :BWQ

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

Şu özellikleri taşıyan bilinear dönüşümü (önceden bükülmüş rezonans frekansı ile) kullanıyoruz:

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

izin ve .z=ejωs=jΩ

Analog filtrenin rezonans açısal frekansı ve (kullanıcı tanımlı rezonant frekansı), daha sonra olduğunda, gerçekleşen dijital filtrede rezonans frekansına frekans çözme telafisi yapılır .Ω0ω=ω0Ω=Ω0

Yani analog açısal frekans

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

dijital açısal frekansa şu şekilde eşlenir:

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

Şimdi, analog dünyadaki üst ve alt bantlar

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

ve dijital frekans alanında

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

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

Ardından, badatların günlük frekansındaki (dijital filtrede gerçek bant genişliği olan) gerçek fark şudur:

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

veya

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

Bunun işlevsel bir biçimi vardır.

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

burada , vef(x)ln(2)bwxln(2)2BWαtan(ω0/2)

Ne yapmak istiyorum ters (ama tam olarak güzel bir kapalı formu ile yapamam biliyorum). Zaten birinci dereceden bir yaklaşım yaptım ve üçüncü dereceden bir yaklaşıma kadar çarpmak istiyorum. Ve bu, düz bir şekilde ileri gitmesine rağmen, dişi köpekleri birleştiren bir sorta haline geldi.f(x)

Şimdi bunun Lagrange İnversiyon Formülü ile bir ilgisi var ve bunu sadece benden daha fazla bir terime götürmek istiyorum.

Yukarıdan biliyoruz ki bir garip simetri fonksiyonudur:f(x)

f(x)=f(x)

Bu, anlamına gelir ve Maclaurin serisinin tüm çift sıralı terimleri sıfır olacaktır:f(0)=0

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

Ters fonksiyon da garip simetri, sıfırdan geçer ve bir Maclaurin serisi olarak ifade edilebilir

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

ne biliyoruz ancak ve ve vardır , o zaman ne iyi fikir sahibi ve olmalıdır:a1a3f(x)b1b3

b1=1a1b3=a3a14

Şimdi, in türevini hesaplayabiliyorum ve sıfırda değerlendirebiliyorum vef(x)

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

Ama ben ve dolayısıyla almak için bir orospu . Birisi bunu yapabilir mi? Hatta değerlendirilen in üçüncü türevi için katı bir ifadeye bile razı olurum .a3b3f(x)x=0


2
Açıklığa kavuşturmak için: Hedefiniz , yani belirli bir için, ? Özellikle, polinom genişlemesi ile yapmak istiyorsunuz ve 3. katsayıyı arıyorsunuz (2. fonksiyonun tuhaflığına sıfır olduğu için). Sağ?
f(x)=ln(arctan(αex))ln(arctan(αex))
f(x)x
Maximilian Matthé

2
Yani verilen bilmek istiyorsunuz , yani dijital filtrenin istenen bant genişliğini elde etmek için hangi analog filtrenin bant genişliğini seçmeniz gerektiğini bilmek istiyorsunuz, değil mi? BWbw
Matt L.

2
evet, evet ve evet.
robert bristow-johnson

1
@ robertbristow-johnson ben de dikkatle soruyu okumadım, ama ilgilenen edilir fark ettiniz en . Bunu hesaplamak için Mathematica veya Wolfram Alpha kullanmak uygun mudur? Oldukça temiz bir sonuç alıyorum: . wolframalpha.com/input/… Ve "x = 0'da değerlendir" bölümünü kaldırırsanız, Wolfram çiftli dişi köpekleri tüm ihtişamıyla tükürür. f(x)x=04(8π2)α3π3
Atul Ingle

1
Orada benim yazım hatası . "Temiz" sonuç aslında: wolframalpha.com/input/…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

Yanıtlar:


4

Bu soruya kendi payımı tamamlamak için: İşte tuhaf fonksiyonunun manuel olarak genişletilmesine dayanan biraz kısa bir cevap. ı üçüncü sıraya kadar bir seriye yerleştirin. Daha fazla bilgi mathSE'de bulunabilir .f(x)

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

İlk başta sol vadede odaklanmak ait ve ile başlar

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

serisinin genişletilmesi :arctan

Biz elde

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

Şimdi (2) 'den kadar olan katsayılardan türetilmiştir . Elde ettiğimiz bir seride katsayısını göstermek için katsayı operatörünü kullanarakx3[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

Sonucuna vardık

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

Logaritmik serideki güçler:

Logaritmik serinin katsayılarını elde etmek için ifadesini olarak yazıyoruz ve

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

Şimdi ve ile arasındaki katsayılarıA(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

(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

Logaritmanın seri genişlemesi:

cinsinden (6) katsayılarını kullanarak hesaplıyoruzln(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

serisinin genişlemesi :f(x)

Şimdi hasat zamanı. Sonunda (3) ve (7) ile in garip olduğunuf(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, hakkında doğru olsanız da , in tek simetriye sahip olduğunu ve çift sıralı terimlerin sıfır olduğunu bildiğimiz için, bu genişlemenin için iyi olduğunu söyleyebilirsiniz. . O(x4)f(x)O(x5)
robert bristow-johnson

@ robertbristow-johnson: Evet, elbette. Buna göre güncellendi. :-)
Markus Scheuer

Büyük çaba! Çalışılıyor okumak için bu ayrıntıları ve uzun cevap Sana izole nasıl göremiyordu , logaritmanın denklemi (4), dış içinde? Sonsuz seriler zaten her gücünü içeriyor , o halde izole edilmiş terimi orada ne anlama geliyor? O(x4)xO(x4)
Fat32

Tabii ki orada ne demek istediğini hissettim ama sonra uygun gösterim böyle bir şey olabilir: burada diğer tüm gösterimlerinizden uzak durmak için kullandım . Ve bu iki birbirinden ayırmak için ve kullandığımı unutmayın . Şimdi denkleminiz (4) ve bu yukarıdaki çizgi tam olarak aynı değil. Ancak bunun ilerlemenizi etkileyeceğini düşünmüyorum.
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
TO1O2
Yağ32


3

(Yorumu cevaba dönüştürme.)

Wolfram Alpha kullanıldığında, 0'daki şu şekilde değerlendirilir: 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) + x% 3D0 de)) *) +

Bu Markus'un bir cevap eşleşirse da çift kontrol can burada .

Onun katsayısı olduğu ortaya geliyorx3

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

Bunu 6 ile çarpar ve bazı faktörleri yeniden düzenlersek:

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

eşleşiyor!


Atul, basitleştirilmiş cevabınızın Markus'un SE dersindeki cevabı ile tutarlı olmadığı anlaşılıyor . o durumda olması gerektiğini her terimin Markus ile tutarlı olduğunu sanmıyorum. Markus yanlış olabilir.
f(x)|x0 = 3!a3=6a3
robert bristow-johnson

2
@ robertbristow-johnson Bence onlar maç.
Atul Ingle

şimdi yapıyorlar. bence Markus bir hata yapmış olmalı. Yaptığı onun cevabı iyi eski yöntemle.
robert bristow-johnson

Atul, ödülünü alacaksın. ama lütuf hakkındaki kuralları araştırdım ve bölmeme izin vermiyorlar, ama iki kez vermeme izin veriyorlar, ama her seferinde bir tane. Markus burada sizden daha az temsilciye sahip olduğundan ve bir bilgisayar yardımı olmadan bir cevap çıkardığı için, önce ödülünü ödüyorum. o zaman bu soruya başka bir ödül vereceğim ve sonra sana vereceğim. 23 saat beklemem gerektiğini söylüyor. henüz benim "onay işareti" alacak kim bilmiyorum.
robert bristow-johnson

1
@ robertbristow-johnson geç cevap verdiğim için üzgünüm. Katsayılar2/3,2/15,16/945,2/945 için ω02,ω04,ω06,ω08sırasıyla. wolframalpha.com/input/…
Atul Ingle

3

Soruda ortaya konan sorunun kapalı formda bir çözümü olmadığı görülmektedir. Soruda belirtildiği ve diğer cevaplarda gösterildiği gibi, sonuç Mathematica gibi herhangi bir sembolik matematik aracı tarafından gerçekleştirilebilen bir seri halinde geliştirilebilir. Bununla birlikte, terimler oldukça karmaşık ve çirkin hale gelir ve üçüncü sıraya kadar terimleri dahil ettiğimizde yaklaşıklığın ne kadar iyi olduğu belirsizdir. Kesin bir formül elde edemediğimizden, çözümü sayısal olarak hesaplamak daha iyi olabilir, bu yaklaşım yaklaşık olarak (neredeyse) kesin bir sonuç verecektir.

Ancak cevabım bununla ilgili değil. Problem formülasyonunu değiştirerek kesin bir çözüm sunan farklı bir rota öneririm. Bir süre düşündükten sonra, bunun merkez frekansının spesifikasyonu olduğu ortaya çıkıyorω0ve bant genişliğinin, matematiksel zorlanmaya neden olan bir oran (ya da eşit olarak, oktav cinsinden) olarak belirtilmesi. İkilemden çıkmanın iki yolu vardır:

  1. ayrık zamanlı filtrenin bant genişliğini frekans farkı olarak belirtinΔω=ω2ω1, nerede ω1 ve ω2 ayrı ayrı zaman filtresinin alt ve üst bant kenarlarıdır.
  2. oranı reçete ω2/ω1ve yerine ω0 iki kenar frekansından birini reçete edin ω1 veya ω2.

Her iki durumda da, basit bir analitik çözüm mümkündür. Ayrık zaman filtresinin bant genişliğini bir oran (veya eşit olarak, oktav olarak) olarak reçete etmek istendiğinden , ikinci yaklaşımı açıklayacağım.

Kenar frekanslarını tanımlayalım Ω1 ve Ω2 tarafından sürekli zaman filtresinin

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

ile Ω2>Ω1, nerede H(s) ikinci dereceden bant geçiren filtrenin transfer fonksiyonudur:

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

ile ΔΩ=Ω2Ω1, ve Ω02=Ω1Ω2. Bunu not etH(jΩ0)=1, ve |H(jΩ)|<1 için ΩΩ0.

Kenar frekanslarını haritalamak için bilinear dönüşümü kullanıyoruz ω1 ve ω2 zaman filtresinin kenar frekanslarına bağlanması Ω1 ve Ω2sürekli zaman filtresinin Genelliği kaybetmeden seçebilirizΩ1=1. Bizim amacımız için bilinear dönüşüm daha sonra

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

sürekli zaman ve ayrık zaman frekansları arasındaki aşağıdaki ilişkiye karşılık gelir:

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

itibaren (4) elde ederiz Ω2 ayarlayarak ω=ω2. İleΩ1=1 ve Ω2 -dan hesaplandı (4), analog prototip filtrenin transfer fonksiyonunu (2). Bilineer dönüşümü uygulama(3), ayrık zamanlı bant geçiren filtrenin transfer fonksiyonunu alıyoruz:

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

ile

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

Özet:

Ayrık zamanlı filtrenin bant genişliği oktav cinsinden (veya genellikle oran olarak) belirtilebilir ve analog prototip filtresinin parametreleri, belirtilen bant genişliği elde edilecek şekilde tam olarak hesaplanabilir. Merkez frekansı yerineω0, bant kenarlarını belirtiyoruz ω1 ve ω2. Tarafından tanımlanan merkez frekansı|Hd(ejω0)|=1 tasarımın bir sonucudur.

Gerekli adımlar aşağıdaki gibidir:

  1. Bant kenarlarının istenen oranını belirtin ω2/ω1ve bant kenarlarından biri (elbette basitçe belirtmeye eşdeğerdir) ω1 ve ω2).
  2. Seç Ω1=1 ve belirle Ω2 itibaren (4). hesaplamakΔΩ=Ω2Ω1 ve Ω02=Ω1Ω2 analog prototip filtresinin (2).
  3. Sabitleri değerlendirin (6) ayrık zamanlı aktarım fonksiyonunun elde edilmesi (5).

Daha yaygın bir yaklaşımla ω0 ve Δω=ω2ω1 belirtilirse, gerçek bant kenarları ω1 ve ω2tasarım sürecinin bir sonucudur. Önerilen çözümde, bant kenarları belirlenebilir veω0tasarım sürecinin bir sonucudur. İkinci yaklaşımın avantajı, bant genişliğinin oktavlarda belirtilebilmesi ve çözeltinin kesin olmasıdır, yani, sonuçta elde edilen filtre, oktavlarda tam olarak belirtilen bant genişliğine sahiptir.

Misal:

Bir oktavın bant genişliğini belirleyelim ve alt bant kenarını şu şekilde seçiyoruz: ω1=0.2π. Bu bir üst bant kenarı verirω2=2ω1=0.4π. Analog prototip filtrenin bant kenarlarıΩ1=1 ve (4) (ile ω=ω2) Ω2=2.2361. Bu verirΔΩ=Ω2Ω1=1.2361 ve Ω02=Ω1Ω2=2.2361. İle(6) ayrık zamanlı aktarım fonksiyonu için (5)

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

aşağıdaki şekilde gösterildiği gibi tam olarak 1 oktav bant genişliğine ve belirtilen bant kenarlarına ulaşır:

enter image description here

Orijinal sorunun sayısal çözümü:

Yorumlardan, merkez frekansını tam olarak belirleyebilmenin önemli olduğunu anlıyorum ω0 hangisi için |Hd(ejω0)|=1memnun. Daha önce de belirtildiği gibi, tam bir kapalı form çözümü elde etmek mümkün değildir ve bir dizi geliştirme oldukça uygunsuz ifadeler üretir.

Anlaşılır olması açısından, olası seçenekleri avantajları ve dezavantajları ile özetlemek istiyorum:

  1. istenen bant genişliğini frekans farkı olarak belirtin Δω=ω2ω1ve belirtin ω0; bu durumda basit bir kapalı-form çözümü mümkündür.
  2. bant kenarlarını belirtin ω1 ve ω2(veya eşdeğer olarak oktavlardaki bant genişliği ve bant kenarlarından biri); bu ayrıca yukarıda açıklandığı gibi basit bir kapalı form çözümüne yol açar, ancak merkez frekansıω0 tasarımın bir sonucudur ve belirtilemez.
  3. oktav cinsinden istenen bant genişliğini ve merkez frekansını belirtin ω0(soruda sorulduğu gibi); kapalı formda bir çözüm mümkün değildir ve (şimdilik) herhangi bir basit yaklaşım yoktur. Bu nedenle sayısal bir çözüm elde etmek için basit ve verimli bir yöntemin olması arzu edilir. Aşağıda açıklanan budur.

Ne zaman ω0 belirtildiği gibi, normalizasyon sabiti ile kullanılandan farklı bir (3) ve (4):

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

Biz tanımlarız Ω0=1. Ayrık zamanlı filtrenin bant kenarlarının belirtilen oranını şu şekilde belirtin:

(8)r=ω2ω1

İle c=tan(ω0/2) bizden alıyoruz (7) ve (8)

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

İle Ω1Ω2=Ω02=1, (9) aşağıdaki biçimde yeniden yazılabilir:

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

Verilen bir değer için r bu denklem şu şekilde çözülebilir Ω1birkaç Newton iterasyonuyla. Bunun için,f(Ω1):

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

With Ω0=1, we know that Ω1 must be in the interval (0,1). Even though it's possible to come up with smarter initial solutions, it turns out that the initial guess Ω1(0)=0.1 works well for most specs, and will result in very accurate solutions after only 4 iterations of Newton's method:

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

With Ω1 obtained with a few iterations of (12) we can determine Ω2=1/Ω1 and ΔΩ=Ω2Ω1, and and we use (5) and (6) to compute the coefficients of the discrete-time filter. Note that the constant c is now given by c=tan(ω0/2).

Example 1:

Let's specify ω0=0.6π and a bandwidth of 0.5 octaves. This corresponds to a ratio r=ω2/ω1=20.5=2=1.4142. With an initial guess of Ω1=0.1, 4 iterations of Newton's method resulted in a solution Ω1=0.71, from which the coefficients of the discrete-time can be computed as explained above. The figure below shows the result:

enter image description here

The filter was calculated with this Matlab/Octave script:

% specifications
bw = 0.5;    % desired bandwidth in octaves
w0 = .6*pi;  % resonant frequency

r = 2^(bw);  % ratio of band edges
W1 = .1;     % initial guess (works for most specs)
Nit = 4;     % # Newton iterations
c = tan(w0/2);

% Newton
for 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
end

W1 = abs(W1);
if (W1 >= 1), error('Failed to converge. Reduce value of initial guess.'); end

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

% discrete-time filter
scale = 1 + dW*c + W1*W2*c^2;
b = ( dW*c/scale) * [1,0,-1];
a = [1, 2*(W1*W2*c^2-1)/scale, (1-dW*c+W1*W2*c^2)/scale ];

Example 2:

I add another example to show that this method can also deal with specifications for which most approximations will give non-sensical results. This is often the case when the desired bandwidth and the resonant frequency are both large. Let's design a filter with ω0=0.95π and bw=4 octaves. Four iterations of Newton's method with an initial guess Ω1(0)=0.1 result in a final value of Ω1=0.00775, i.e., in a bandwidth of the analog prototype of log2(Ω2/Ω1)=log2(1/Ω12)14 octaves. The corresponding discrete-time filter has the following coefficients and its frequency response is shown in the plot below:

b = 0.90986*[1,0,-1];
a = [1.00000   0.17806  -0.81972];

enter image description here

The resulting half power band edges are ω1=0.062476π and ω2=0.999612π, which are indeed exactly 4 octaves (i.e., a factor of 16) apart.


two initial comments (i haven't read this through, yet, Matt): first, i am interested in log frequency more so than linear frequency. for the analog BPF (or the digital BPF with resonant frequency much lower than Nyquist), there is perfect symmetry about the resonant frequency.
robert bristow-johnson

and the second comment is this, while i thank you for apparently sticking with the notation of s=jΩ and z=ejω, i wish you would stick to the notation that the analog and digital resonant frequencies are Ω0 and ω0, respectively, and the analog upper and lower bandedges are ΩU and ΩL respectively and likewise for the digital bandedges: ωU and ωL. we know that, in log frequency, half of the bandwidth is above Ω0 and half is below. but, due to warping, that is not exactly true for the digital BPF filter.
robert bristow-johnson

as i read this more, it is important to me that the resonant frequency gets mapped through the bilinear transform exactly. so i understand this approach, Matt, but i want to stick with exact mapping of ω0 and then tweak the BW until bw is what is specified.
robert bristow-johnson

@robertbristow-johnson: OK, fair enough, you want an exact specification of ω0. That's possible if you specify Δω as a linear difference (which you don't want, I understand). A neat solution is not possible with specified ω0 AND a bandwidth in octaves.
Matt L.

1
@robertbristow-johnson: I've added a very simple numerical solution to my answer (4 Newton iterations).
Matt L.

3

okay, i promised to put up bounty and i will keep my promise. but i have to confess that i might renege a little bit on being satisfied with just the third derivative of f(x). what i really want are the two coefficients for g(y).

so i didn't realize that there was this Wolfram language as an alternative to mathematica or Derive and i didn't realize it could so easily compute the third derivative and simplify the expression.

and this Markus guy at the math SE posted this answer (which i thought was gonna have to be the amount of grunge i thought would be needed).

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

so i put together the third-order approximation to the inverse:

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)

i was kinda hoping someone else would do this. recall y=f(x)ln(2)bw, g(y)=xln(2)2BW and α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)

i have three convenient trig identities:

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

"finally" we got:

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

this ain't so bad. fits on a single line. if someone sees an error or a good way to simplify further, please lemme know.

with the power series approximation from the comment above,

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

also, i am not sure that Atul's answer for f(0) and Markus's answer for a3 are consistent. i wonder if someone might be able to straight that out in an answer that could get in on the bounty.
robert bristow-johnson

I also found out about Wolfram's cloud notebook which is like Mathematica in your webbrowser. Go to sandbox.open.wolframcloud.com/app and type in 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle

@AtulIngle, i incorporated the Markus's corrections into the inverse function. would you mind checking the result for g(y)?
robert bristow-johnson

i would appreciate it if someone would check my substitution back to g(y), particularly the factor that multiplies y2. very soon i will return α back to tan(ω0/2) which will cause a whole other simplification and form. but i will hold off a little in case someone tells me my simplifications above are wrong.
robert bristow-johnson

1
@ robert bistow-johnson I checked your final expression for g(y) using Mathematica, it looks right.
Atul Ingle

2

so here are some quantitative results. i plotted spec'd bandwidth bw for the digital filter on the x-axis and the resulting digital bandwidth on the y-axis. there are five plots from green to red representing the resonant frequency ω0 normalized by Nyquist:

ω0π= [0.0002 0.2441 0.4880 0.7320 0.9759]

so the resonant frequency goes from nearly DC to nearly Nyquist.

here is no compensation (or pre-warping) at all for bandwidth: enter image description here

here is the simple first-order compensation that the Cookbook has done all along: enter image description here

here is the third-order compensation that we just solved here: enter image description here

what we want is for all of the lines to lie directly on the main diagonal.

i had made a mistake in the third-order case and corrected it in this revision. it does look like the third-order approximation to g(y) is a bit better than the first-order approximation for small bw.

so i diddled with the coefficient of the 3rd-order term (i wanna leave the 1st-order term the same), lessening it's effect. this is from multiplying just the 3rd-order term by 50%:

enter image description here

this is reducing it to 33%:

enter image description here

and this is reducing the 3rd-order term to 25%:

enter image description here

since the object of an inverse function is to undo the specified function, the point of this whole thing is to get the curves of the composite function to lie as close to the main diagonal as possible. it's not too bad for up to 75% Nyquist for resonant frequency ω0 and 3 octaves bandwidth bw. but not so much better to really make it worth it in the "coefficient cooking" code that is executed whenever the user turns a knob or slides a slider.


How can the bandwidth become negative in the second and third plot??
Matt L.

it can't, which is why i am so far unimpressed with this third-order approximation to the real x=g(y) which is the inverse function of
f(x)=ln(arctan(αex)arctan(αex))
i don't think that third-order approximation is an improvement over the first-order approximation that has existed for a couple decades. so what is plotted is
f(g^(y))
where g^(y) is the approximation to the true inverse g(y) where
y=f(g(y))
because f(x) is bipolar (even though negative bandwidth is nonsensical) f(g^(y)) can go negative.
robert bristow-johnson

oh, @MattL. the fact that f(x) passes through the origin should not surprize you even if bandwidth is never really negative. that bandwidth mapping function is odd symmetry, so the first and second plot do not surprize me at all. but the third plot is disappointing.
robert bristow-johnson

I was just wondering why you plotted the curves for negative bandwidths. But anyway, if I'm not mistaken then the series you use is a kind of Taylor series expansion at bw=0, right? So why would you even expect it to approximate the real behavior well at larger bandwidths if you only use two terms?
Matt L.

i just wanted to make sure the functions are odd-symmetry and go through the origin real nicely. yes, this is all about Taylor (or more specificly, Maclaurin) series. you will notice, @MattL., that i think one term does rather nicely for all of the resonant frequencies that ain't terribly close to Nyquist. leaving the linear term unchanged, i diddled a little with the third-order term a little (stay tuned, i'll show the results) and it does pretty well. but not so much better than the first-order that i think i should bother changing it in the Cookbook.
robert bristow-johnson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.