Pytanie matematyczne wynikające z zastosowania transformacji dwuliniowej


10

Jest to związane z książką kucharską i próbowałem rozwiązać ją może dwie dekady temu, poddałem się i przypomniałem sobie o nierozwiązanym problemie. Ale to jest cholernie proste, ale wciąż jestem zalany w błocie.

Jest to prosty filtr pasmowy (BPF) o częstotliwości rezonansowej Ω0 i rezonans Q:

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

Przy częstotliwości rezonansowej

|H.(jotΩ)|H.(jotΩ0)=1

a górne i dolne pasy są zdefiniowane w ten sposób

|H.(jotΩU)|2)=|H.(jotΩ02)bW./2))|2)=12)

|H.(jotΩL.)|2)=|H.(jotΩ02)-bW./2))|2)=12)

Nazywamy to „bandażami połowy mocy” . Ponieważ jesteśmy audio, określamy szerokość pasma w oktawach, aw świecie analogowym to pasmo w oktawach,bW., odnosi się do Q tak jak:

1Q=2)bW.-12)bW.=2)sinh(ln(2))2)bW.)

Używamy transformacji dwuliniowej (z wstępnie wypaczoną częstotliwością rezonansową), która odwzorowuje:

sΩ01dębnik(ω0/2))1-z-11+z-1jotΩΩ0jotdębnik(ω/2))dębnik(ω0/2))

najmu z=mijotω i s=jotΩ.

Rezonansowa częstotliwość kątowa filtra analogowego wynosiΩ0, oraz z kompensacją dopasowania częstotliwości do częstotliwości rezonansowej w zrealizowanym filtrze cyfrowym, kiedy ω=ω0 (częstotliwość rezonansowa zdefiniowana przez użytkownika) Ω=Ω0.

Więc jeśli analogowa częstotliwość kątowa jest

ΩΩ0=dębnik(ω/2))dębnik(ω0/2))

następnie jest mapowany na cyfrową częstotliwość kątową jako

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

Teraz górne i dolne pasma w świecie analogowym są

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

i w dziedzinie częstotliwości cyfrowych są

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

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

Zatem rzeczywista różnica w częstotliwości rejestrowania pasm (która jest faktyczną przepustowością w filtrze cyfrowym) wynosi:

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

lub

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

Ma to funkcjonalną formę

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

gdzie f(x)ln(2)bw, xln(2)2BW i αtan(ω0/2)

Chcę tylko odwrócić f(x)(ale wiem, że nie mogę tego zrobić z ładną, zamkniętą postacią). Dokonałem już przybliżenia pierwszego rzędu i chcę podnieść go do przybliżenia trzeciego rzędu. I stało się to rodzajem kopulującego samica psa, mimo że powinno być proste.

Teraz ma to coś wspólnego z formułą inwersji Lagrange'a i chcę przejść na jeszcze jeden termin.

Wiemy to z góry f(x) jest funkcją nieparzystej symetrii:

f(x)=f(x)

To znaczy f(0)=0 a wszystkie warunki parzystej kolejności serii Maclaurin będą wynosić zero:

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

Funkcja odwrotna jest również nieparzystą symetrią, przechodzi przez zero i może być wyrażona jako szereg Maclaurin

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

a jeśli wiemy co a1 i a3 są z f(x), to mamy dobry pomysł co b1 i b3 musi być:

b1=1a1b3=a3a14

Teraz jestem w stanie obliczyć pochodną f(x) i oceniam to na zero i dostaję

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

Ale mam dziwkę czasu a3 i dlatego b3. Czy ktoś może to zrobić? Zadowoliłbym się nawet solidnym wyrazem trzeciej pochodnejf(x) oceniono na x=0.


2
Wyjaśnij: Twoim celem jest odwrócenie
f(x)=ln(arctan(αex))ln(arctan(αex))
, czyli dla danego f(x), chcesz znaleźć x? W szczególności chcesz to zrobić przez ekspansję wielomianową i szukasz trzeciego współczynnika (ponieważ drugi to zero, to dziwność funkcji). Dobrze?
Maximilian Matthé,

2
Więc chcesz wiedzieć BW dany bw, tzn. chcesz wiedzieć, jaką szerokość pasma filtra analogowego musisz wybrać, aby uzyskać pożądaną szerokość pasma filtra cyfrowego, prawda?
Matt L.

2
tak, tak i tak.
Robert Bristol-Johnnson

1
@ robertbristow-johnson Nie przeczytałem pytania zbyt uważnie, ale zauważyłem, że jesteś zainteresowany f(x) w x=0. Czy można obliczyć to za pomocą Mathematica lub Wolfram Alpha? Otrzymuję całkiem czysty wynik:4(8π2)α3π3). wolframalpha.com/input/… A jeśli usuniesz część „ocena przy x = 0”, Wolfram wypluwa łączącą się psią samicę w pełnej krasie.
Atul Ingle

1
Literówka w moim f(x)tam. „Czysty” wynik to w rzeczywistości:(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) wolframalpha.com/input/…
Atul Ingle

Odpowiedzi:


4

Uzupełnienie mojej części do tego pytania: Oto nieco krótka odpowiedź oparta na ręcznym rozszerzeniu funkcji nieparzystej f(x)

f(x)=ln(arctan(αex))ln(arctan(αex))(1)=f1x+f3x3+O(x5)
w serię do trzeciego rzędu. Więcej szczegółów można znaleźć na stronie mathSE .

Na początku skupiamy się na lewostronnym okresie

ln(arctan(αex))
z f(x) i zacznij od

Rozszerzenie serii arctan:

Otrzymujemy

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

Teraz wywodzimy z (2) współczynników do x3. Korzystanie ze współczynnika operatora[xk] oznaczać współczynnik xk w serii, którą otrzymujemy

[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

Wnioskujemy

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

Moce w szeregach logarytmicznych:

W celu uzyskania współczynników szeregu logarytmicznego

ln(arctan(αex))=n=1(1)n+1n(arctan(αex)1)n
piszemy wyrażenie (3) jako
arctan(αex)=a0+a1x+a2x2+a3x3+O(x4)
i rozważamy
(4)ln(arctan(αex))=n=1(1)n+1n((a01)+a1x+a2x2+a3x3)n+O(x4)

Teraz ustawiamy A(x)=(a01)+a1x+a2x2+a3x3 i wyodrębnij współczynniki x0 do x3 od

(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

Uzyskujemy od (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

Rozszerzanie szeregowe logarytmu:

Obliczamy przy użyciu (6) współczynników ln(arctan(αex)) pod względem 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

Rozszerzenie serii f(x):

Teraz nadszedł czas na żniwa. W końcu uzyskujemy z (3) i (7) szanując tof(x) to jest dziwne

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, podczas gdy masz rację O(x4), ponieważ wiemy fa(x) ma dziwną symetrię, a warunki parzystego rzędu wynoszą zero, myślę, że można powiedzieć, że to rozszerzenie jest dobre O(x5).
Robert Bristol-Johnnson

@ robertbristow-johnson: Tak, oczywiście. Zaktualizowano odpowiednio. :-)
Markus Scheuer

Wielki wysiłek! Próbując przeczytać tę szczegółową i długą odpowiedź, nie mogłem zobaczyć, jak możesz się odizolowaćO(x4), w równaniu (4), poza logarytmem? Nieskończona seria zawiera już każdą mocx, więc co izolowane O(x4)termin znaczy tam?
Fat32

Oczywiście mam wrażenie, co chcesz tam rozumieć, ale właściwy zapis może być mniej więcej taki:
ln(arctan(αex)) = n=1(1)n+1n((a01)+a1x+a2x2+a3x3+O1(x4))n = T0+T1x+T2x2+T3x3+O2(x4)
gdzie użyłem Taby trzymać się z dala od wszystkich innych notacji. I zauważ, że użyłemO1 i O2)rozróżnić te dwa zestawy współczynników. Więc teraz twoje równanie (4) i powyższa linia nie są dokładnie takie same. Nie sądzę jednak, by wpłynęło to na dalszy rozwój.
Fat32

@ Fat32: Warto przyjrzeć się notacji Big-O
Markus Scheuer,

3

(Konwertowanie komentarza na odpowiedź).

Używając Wolfram Alpha, f(x) w x=0 ocenia:

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) )) +) + w + x% 3D0

Możemy również dwukrotnie sprawdzić, czy odpowiada to odpowiedzi Markusa tutaj .

Jego współczynnik x3 wydaje się być

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

Jeśli pomnożymy to przez 6 i przestawimy niektóre czynniki, otrzymamy:

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

który pasuje!


Atul, wydaje się, że twoja uproszczona odpowiedź nie jest zgodna z odpowiedzią Markusa z matematyki SE. tak powinno być
f(x)|x0 = 3!a3=6a3
nie sądzę, aby każdy termin w twoim f (0) był zgodny z Markusem. może być tak, że Markus się myli.
Robert Bristol-Johnnson

2
@ robertbristow-johnson Myślę, że pasują do siebie.
Atul Ingle

robią teraz. myślę, że Markus musiał mieć błąd. uczynił jego odpowiedź staromodny dobrą drogę.
Robert Bristol-Johnson

Atul, dostaniesz nagrodę. ale zbadałem zasady dotyczące nagrody i nie pozwalają mi jej dzielić, ale pozwalają mi nagradzać je dwa razy, ale pojedynczo. dlatego, że Markus ma mniej przedstawicieli niż ty tutaj na dsp.se, a ponieważ udzielił odpowiedzi bez pomocy komputera, najpierw nagradzam go nagrodą. wtedy dodam kolejną nagrodę za to pytanie, a następnie przyznam ci je. mówi, że muszę czekać 23 godziny. nie wiem, kto dostanie jeszcze mój „znacznik wyboru”.
Robert Bristol-Johnnson

1
@ robertbristow-johnson przepraszam za spóźnioną odpowiedź. Współczynniki wynoszą2/3,2/15,16/945,2/945 dla ω02,ω04,ω06,ω08odpowiednio. wolframalpha.com/input/…
Atul Ingle

3

Problem postawiony w pytaniu wydaje się nie mieć rozwiązania w formie zamkniętej. Jak wspomniano w pytaniu i pokazano w innych odpowiedziach, wynik można przekształcić w serię, którą można osiągnąć za pomocą dowolnego symbolicznego narzędzia matematycznego, takiego jak Mathematica. Jednak warunki stają się dość skomplikowane i brzydkie i nie jest jasne, jak dobre jest to przybliżenie, jeśli uwzględniamy warunki do trzeciego rzędu. Ponieważ nie możemy uzyskać dokładnej formuły, może być lepiej obliczyć rozwiązanie numerycznie, co w przeciwieństwie do przybliżenia da (prawie) dokładny wynik.

Jednak nie o to chodzi w mojej odpowiedzi. Proponuję inną drogę, która daje dokładne rozwiązanie, zmieniając sformułowanie problemu. Po zastanowieniu się przez chwilę okazuje się, że jest to specyfikacja częstotliwości środkowejω0oraz określenie szerokości pasma jako stosunku (lub równoważnie w oktawach), co powoduje matematyczną trudność. Istnieją dwa sposoby wyjścia z dylematu:

  1. określić szerokość pasma filtra czasu dyskretnego jako różnicę częstotliwościΔω=ω2ω1, gdzie ω1 i ω2 są odpowiednio dolną i górną krawędzią pasmową filtra czasu dyskretnego.
  2. przepisz stosunek ω2/ω1i zamiast ω0 określ jedną z dwóch częstotliwości krawędziowych ω1 lub ω2.

W obu przypadkach możliwe jest proste rozwiązanie analityczne. Ponieważ pożądane jest określenie szerokości pasma filtra czasu dyskretnego jako stosunku (lub, równoważnie, w oktawach), opiszę drugie podejście.

Zdefiniujmy częstotliwości brzegowe Ω1 i Ω2 filtra czasu ciągłego według

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

z Ω2>Ω1, gdzie H(s) jest funkcją przesyłania filtra pasmowego drugiego rzędu:

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

z ΔΩ=Ω2Ω1, i Ω02=Ω1Ω2. Zauważ, żeH(jΩ0)=1, i |H(jΩ)|<1 dla ΩΩ0.

Używamy transformacji dwuliniowej do mapowania częstotliwości krawędzi ω1 i ω2 filtra czasu dyskretnego na częstotliwości brzegowe Ω1 i Ω2filtra czasu ciągłego. Bez utraty ogólności możemy wybraćΩ1=1. Dla naszych celów transformacja dwuliniowa przyjmuje wówczas postać

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

odpowiadające następującej zależności między częstotliwościami w czasie ciągłym a częstotliwościami w czasie dyskretnym:

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

Od (4) otrzymujemy Ω2 przez ustawienie ω=ω2. ZΩ1=1 i Ω2 obliczone z (4), otrzymujemy funkcję przesyłania analogowego filtra prototypowego od (2). Zastosowanie transformacji dwuliniowej(3), otrzymujemy funkcję transferu filtru pasmowego z czasem dyskretnym:

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

z

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

Podsumowanie:

Szerokość pasma filtru z czasem dyskretnym można określić w oktawach (lub ogólnie jako stosunek), a parametry analogowego filtra prototypowego można dokładnie obliczyć, tak aby osiągnąć określoną szerokość pasma. Zamiast częstotliwości środkowejω0, określamy krawędzie pasma ω1 i ω2. Częstotliwość środkowa zdefiniowana przez|Hd(ejω0)|=1 jest wynikiem projektu.

Niezbędne kroki są następujące:

  1. Określ pożądany stosunek krawędzi pasma ω2/ω1i jedną z krawędzi pasma (co oczywiście jest równoznaczne z prostym określeniem) ω1 i ω2).
  2. Wybierać Ω1=1 i ustal Ω2 od (4). ObliczaćΔΩ=Ω2Ω1 i Ω02=Ω1Ω2 analogowego filtra prototypowego (2).
  3. Oceń stałe (6) aby uzyskać funkcję przenoszenia w czasie dyskretnym (5).

Zauważ, że przy bardziej powszechnym podejściu gdzie ω0 i Δω=ω2ω1 są określone, rzeczywiste krawędzie pasma ω1 i ω2są wynikiem procesu projektowania. W proponowanym rozwiązaniu można określić krawędzie pasma iω0jest wynikiem procesu projektowania. Zaletą tego drugiego podejścia jest to, że szerokość pasma można określić w oktawach, a rozwiązanie jest dokładne, tzn. Wynikowy filtr ma dokładnie określoną szerokość pasma w oktawach.

Przykład:

Określmy szerokość pasma jednej oktawy i wybieramy dolną krawędź pasma jako ω1=0.2π. Daje to górną krawędź pasmaω2=2ω1=0.4π. Krawędzie pasma analogowego filtra prototypowego toΩ1=1 i od (4) (z ω=ω2) Ω2=2.2361. To dajeΔΩ=Ω2Ω1=1.2361 i Ω02=Ω1Ω2=2.2361. Z(6) dostajemy za funkcję transferu w czasie dyskretnym (5)

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

która osiąga dokładnie szerokość pasma 1 oktawę i określone krawędzie pasma, jak pokazano na poniższym rysunku:

wprowadź opis zdjęcia tutaj

Numeryczne rozwiązanie pierwotnego problemu:

Z komentarzy rozumiem, że ważne jest, aby móc dokładnie określić częstotliwość środkową ω0 dla którego |Hd(ejω0)|=1jest spełniony. Jak wspomniano wcześniej, nie jest możliwe uzyskanie dokładnego rozwiązania w formie zamkniętej, a rozwój serii daje dość niewygodne wyrażenia.

Dla jasności chciałbym podsumować możliwe opcje z ich zaletami i wadami:

  1. podaj pożądaną szerokość pasma jako różnicę częstotliwości Δω=ω2ω1i określ ω0; w tym przypadku możliwe jest proste rozwiązanie w formie zamkniętej.
  2. określ krawędzie pasma ω1 i ω2(lub równoważnie szerokość pasma w oktawach i jedna z krawędzi pasma); prowadzi to również do prostego rozwiązania w formie zamkniętej, jak wyjaśniono powyżej, ale częstotliwości środkowejω0 jest wynikiem projektu i nie można go określić.
  3. podaj żądaną szerokość pasma w oktawach i częstotliwość środkową ω0 (as asked in the question); no closed form solution is possible, nor is there (for the time being) any simple approximation. For this reason I think it's desirable to have a simple and efficient method for obtaining a numerical solution. This is what is explained below.

When ω0 is specified we use a form of the bilinear transform with a normalization constant that is different from the one used in (3) and (4):

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

We define Ω0=1. Denote the specified ratio of band edges of the discrete-time filter as

(8)r=ω2ω1

With c=tan(ω0/2) we get from (7) and (8)

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

With Ω1Ω2=Ω02=1, (9) can be rewritten in the following form:

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

For a given value of r this equation can be solved for Ω1 with a few Newton iterations. For this we need the derivative of 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:

wprowadź opis zdjęcia tutaj

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:

Dodaję kolejny przykład, aby pokazać, że ta metoda może również poradzić sobie ze specyfikacjami, w przypadku których większość przybliżeń da niesensowne wyniki. Często dzieje się tak, gdy pożądana szerokość pasma i częstotliwość rezonansowa są duże. Zaprojektujmy filtr zω0=0,95π i bw=4oktawy. Cztery iteracje metody Newtona z wstępnym odgadnięciemΩ1(0)=0,1 dają końcową wartość Ω1=0,00775, tj. w paśmie analogowego prototypu log2)(Ω2)/Ω1)=log2)(1/Ω12))14oktawy. Odpowiedni filtr czasu dyskretnego ma następujące współczynniki, a jego odpowiedź częstotliwościowa pokazano na wykresie poniżej:

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

wprowadź opis zdjęcia tutaj

Wynikowe krawędzie połowy mocy są ω1=0,062476π i ω2)=0,999612π, które są rzeczywiście dokładnie 4 oktawy (tj. współczynnik wynoszący 16) osobno.


dwa wstępne komentarze (jeszcze tego nie przeczytałem, Matt): po pierwsze, interesuje mnie bardziej częstotliwość logów niż częstotliwość liniowa. dla analogowego BPF (lub cyfrowego BPF o częstotliwości rezonansowej znacznie niższej niż Nyquist) istnieje idealna symetria częstotliwości rezonansowej.
Robert Bristol-Johnson

a drugi komentarz jest taki, a ja dziękuję, że najwyraźniej trzymasz się notacji s=jotΩ i z=mijotω, chciałbym, abyście trzymali się notacji, że analogowe i cyfrowe częstotliwości rezonansowe są Ω0 i ω0odpowiednio, a analogowe górne i dolne pasy są ΩU i ΩL. odpowiednio i podobnie w przypadku pasm cyfrowych: ωU i ω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

gdy czytam to więcej, ważne jest dla mnie, aby częstotliwość rezonansowa została dokładnie odwzorowana przez transformację dwuliniową. więc rozumiem to podejście, Matt, ale chcę trzymać się dokładnego mapowaniaω0 a następnie dostosuj bW. aż do bw jest to, co jest określone.
Robert Bristol-Johnnson

@ robertbristow-johnson: OK, wystarczy, chcesz dokładną specyfikację ω0. Jest to możliwe, jeśli określiszΔωjako różnicę liniową (której nie chcę, rozumiem). Zgrabne rozwiązanie nie jest możliwe z określonymω0 ORAZ szerokość pasma w oktawach.
Matt L.

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

3

okej, obiecałem wystawić nagrodę i dotrzymam obietnicy. ale muszę wyznać, że mógłbym się trochę oderwać od zadowolenia z trzeciej pochodnejfa(x). tak naprawdę chcę dwa współczynnikisol(y).

więc nie zdawałem sobie sprawy z tego, że istnieje ten język Wolfram jako alternatywa dla matematyki lub Derive, i nie zdawałem sobie sprawy, że może tak łatwo obliczyć trzecią pochodną i uprościć wyrażenie.

a ten facet Markus z matematyki SE opublikował tę odpowiedź (która, jak sądzę, będzie musiała być ilością grunge, która moim zdaniem będzie potrzebna).

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 a3SA stałe. Zastanawiam się, czy ktoś mógłby to wyjaśnić w odpowiedzi, która mogłaby dostać nagrodę.
Robert Bristol-Johnnson

Dowiedziałem się także o notatniku chmurowym Wolfram, który jest podobny do Mathematica w twoim przeglądarce. Wejdź na sandbox.open.wolframcloud.com/app i wpisz 6*SeriesCoefficient[ Series[Log[ArcTan[a E^x]] - Log[ArcTan[a/E^x]],{x,0,5}],3]
Atul Ingle

@AtulIngle, włączyłem poprawki Markusa do funkcji odwrotnej. czy mógłbyś sprawdzić wynik dlasol(y)?
Robert Bristol-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)co spowoduje zupełnie inne uproszczenie i formę. ale trochę się wstrzymam, na wypadek, gdyby ktoś powiedział mi, że moje powyższe uproszczenia są błędne.
Robert Bristol-Johnnson

1
@ robert bistow-johnson Sprawdziłem twoje ostateczne wyrażenie dla g (y) za pomocą Mathematica, wygląda dobrze.
Atul Ingle

2

oto kilka wyników ilościowych. zaplanowałem określoną przepustowośćbwdla filtra cyfrowego na osi x i wynikowej cyfrowej przepustowości na osi y. jest pięć wykresów od zielonego do czerwonego reprezentujących częstotliwość rezonansowąω0 znormalizowany przez Nyquist:

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

więc częstotliwość rezonansowa przechodzi od prawie stałego prądu stałego do prawie Nyquista.

tutaj nie ma żadnej rekompensaty (lub wstępnego wypaczenia) za przepustowość: wprowadź opis zdjęcia tutaj

oto prosta rekompensata za pierwsze zamówienie, którą książka kucharska zrobiła przez cały czas: wprowadź opis zdjęcia tutaj

oto odszkodowanie trzeciego rzędu, które właśnie rozwiązaliśmy tutaj: wprowadź opis zdjęcia tutaj

chcemy, aby wszystkie linie leżały bezpośrednio na głównej przekątnej.

I nie pomylił się w przypadku trzeciego rzędu i skorygować go w tej wersji. to ma wyglądać zbliżenia do trzeciego rzędusol(y) jest nieco lepszy niż przybliżenie pierwszego rzędu dla małych bw.

więc podważyłem współczynnik terminu trzeciego rzędu (chcę pozostawić ten sam termin pierwszego rzędu), zmniejszając jego efekt. wynika to z pomnożenia tylko terminu trzeciego rzędu przez 50%:

wprowadź opis zdjęcia tutaj

zmniejsza to do 33%:

wprowadź opis zdjęcia tutaj

a to zmniejsza termin trzeciego rzędu do 25%:

wprowadź opis zdjęcia tutaj

ponieważ celem funkcji odwrotnej jest cofnięcie określonej funkcji, celem tego wszystkiego jest doprowadzenie krzywych funkcji złożonej do położenia jak najbliżej głównej przekątnej. nie jest tak źle nawet do 75% Nyquista dla częstotliwości rezonansowejω0 i przepustowość 3 oktaw bw. ale nie o wiele lepiej, aby naprawdę warto było to zrobić w kodzie „Współczynnik gotowania”, który jest wykonywany za każdym razem, gdy użytkownik obraca pokrętło lub przesuwa suwak.


Jak przepustowość może stać się ujemna na drugim i trzecim wykresie?
Matt L.

nie może, dlatego do tej pory nie jestem pod wrażeniem tego przybliżenia trzeciego rzędu do rzeczywistości x=sol(y) która jest funkcją odwrotną do
fa(x)=ln(arctan(αmix)arctan(αmi-x))
nie sądzę, że przybliżenie trzeciego rzędu jest poprawą w stosunku do przybliżenia pierwszego rzędu, które istnieje od kilku dekad. więc to, co jest narysowane
fa(sol^(y))
gdzie sol^(y) jest przybliżeniem do prawdziwej odwrotności sol(y) gdzie
y=fa(sol(y))
ponieważ fa(x) jest dwubiegunowy (chociaż ujemna przepustowość jest nonsensowna) fa(sol^(y))może pójść negatywnie.
Robert Bristol-Johnson

och, @MattL. fakt, żefa(x)przechodzi przez pochodzenie nie powinno cię zaskoczyć, nawet jeśli przepustowość nigdy nie jest tak naprawdę ujemna. ta funkcja mapowania pasma to dziwna symetria, więc pierwszy i drugi wykres wcale mnie nie zaskakują. ale trzecia fabuła jest rozczarowująca.
Robert Bristol-Johnnson

Zastanawiałem się tylko, dlaczego narysowałeś krzywe dla ujemnych przepustowości. Ale w każdym razie, jeśli się nie mylę, to seria, której używasz, jest rodzajem rozszerzenia serii Taylorabw=0, dobrze? Dlaczego więc miałbyś oczekiwać, że będzie dobrze przybliżać rzeczywiste zachowanie przy większych przepustowościach, jeśli użyjesz tylko dwóch terminów?
Matt L.

Chciałem tylko upewnić się, że funkcje są nieparzystej symetrii i naprawdę dobrze przejść przez pochodzenie. tak, to wszystko dotyczy serii Taylor (a ściślej Maclaurin). zauważysz, @MattL., że myślę, że jeden termin pasuje raczej do wszystkich częstotliwości rezonansowych, które nie są zbyt blisko Nyquista. pozostawiając termin liniowy bez zmian, trochę drażniłem z terminem trzeciego rzędu (bądź na bieżąco, pokażę wyniki) i robi to całkiem nieźle. ale nie tyle lepiej od pierwszego zamówienia, że ​​myślę, że powinienem zawracać sobie głowę zmienianiem go w książce kucharskiej.
Robert Bristol-Johnnson
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.