Czy istnieje coś takiego jak zniekształcenie nieliniowe ograniczone przez pasmo?

12

Jeśli więc generujesz falę kwadratową, po prostu przełączając sygnał między dwiema wartościami, na granicach próbki, generuje ona nieskończoną serię harmonicznych, które aliasy i dźwięki poniżej podstawowej, co jest bardzo słyszalne. Rozwiązaniem jest synteza ograniczona przez pasmo , albo za pomocą syntezy addytywnej lub kroków o ograniczonym paśmie, aby uzyskać kształty fal, które są takie same, jakbyś miał idealną matematyczną falę kwadratową o ograniczonym paśmie przed próbkowaniem:

http://flic.kr/p/83JMjT

wprowadź opis zdjęcia tutaj

Ale właśnie zdałem sobie sprawę, że jeśli zastosujesz duże wzmocnienie do cyfrowej fali sinusoidalnej, a następnie przyciniesz ją cyfrowo, powstanie ten sam kwadratowy kształt fali, bez zjawiska falowania Gibbsa. Więc produkuje także aliasy zniekształcające, prawda? Czy jakieś nieliniowe zniekształcenie w dziedzinie cyfrowej, które wytwarza harmoniczne poza granicami Nyquista, spowoduje powstanie produktów aliasu zniekształceń? (Edycja: Przeprowadziłem kilka testów i potwierdziłem, że ta część jest prawdziwa.)

Czy istnieje coś takiego jak zniekształcenie ograniczone w paśmie, aby symulować (w domenie cyfrowej) skutki zniekształcenia (w domenie analogowej) przed ograniczeniem pasma i próbkowaniem? Jeśli tak, jak to zrobić? Jeśli szukam „zniekształceń pasmowych”, znajduję odniesienia do wielomianów Czebiszewa, ale nie wiem, jak ich używać, czy działają one tylko dla fal sinusoidalnych lub co:

Ten instrument nie próbuje generować zniekształceń ograniczonych przez pasmo. Zainteresowani zniekształceniami ograniczonymi przez pasmo powinni zbadać zastosowanie wielomianów Czebyszewa do wygenerowania efektu. Hiperboliczne zniekształcenie styczne

 

„Wielomian Czebyszewa” - funkcje kształtujące z tą ważną właściwością, że są wewnętrznie ograniczone pasmem, tj. Nie wprowadzają fałszywych harmonicznych widmowych z powodu nakładania się itp. Wave Shaper

endolit
źródło
Nie jestem pewien, o co pytasz. Jeśli wykonasz operację, która powoduje generowanie zawartości częstotliwości poza regionem Nyquist, w którym działasz, zobaczysz aliasing, niezależnie od tego, jak wygenerowałeś wspomnianą treść. Jakie zniekształcenia analogowe próbujesz zasymulować? Jednym podejściem może być najpierw próbkowanie sygnału do wystarczająco wysokiej częstotliwości próbkowania, a następnie użycie szerszego regionu Nyquista do wykonania przetwarzania sygnału. Po zakończeniu możesz ponownie obniżyć próbkę do pierwotnej stawki.
Jason R
@JasonR: Tak, do generowania fal kwadratowych możesz albo zastosować metodę naprawdę ograniczoną w zakresie pasma, jak synteza addytywna, lub możesz przybliżać, najpierw próbkując w górę, generując falę kwadratową w sposób naiwny, a następnie próbkując w dół (ale nadal będzie niektóre aliasing, tylko na niższym poziomie). Podobnie, możesz przybliżać zniekształcenie, jak powiedziałeś, najpierw próbkując w górę, ale czy istnieje sposób, aby wygenerować je bezpośrednio, z zerowym aliasingiem, analogicznie do metody syntezy addytywnej dla generowania fali kwadratowej?
endolith
@JasonR: Pytam ogólnie o wszelkie nieliniowe zniekształcenia, ale dobrym przykładem jest coś takiego jak emulacja obwodów zniekształcających wzmacniacza gitarowego. Jeśli dobrze rozumiem, robienie tego naiwnie w domenie cyfrowej spowodowałoby produkty zniekształcania, które nie istnieją, gdy są zniekształcone w domenie analogowej, z których niektóre mogą być wyraźnie słyszalne przy częstotliwościach niższych niż podstawowa itp.
endolith
2
@endolith wielomiany Czebyszewa może być to, co chcesz.
Datageist
@datageist: Czy możesz napisać odpowiedź na temat używania wielomianów Czebeszewa? Nawet krótki.
endolith

Odpowiedzi:

5

Zastosowanie funkcji nieliniowej zawsze wprowadza harmoniczne, a mieszanie funkcji nieliniowych z próbkowanymi wersjami sygnałów ciągłych dodaje zmarszczek, które zauważysz powyżej (gdzie harmoniczne wysokich częstotliwości są aliasowane do niskich częstotliwości).

Mogę wymyślić kilka sposobów postępowania:

  1. Możesz zastosować współczynnik nadpróbkowania wystarczająco wysoki, aby uchwycić dodatkowe harmoniczne (z pewną dowolną precyzją, np. Poziom szumu),
  2. Możesz użyć „bardziej miękkiej” funkcji przycinania (patrz na przykład tutaj ), która ma harmoniczne, które wymierają wcześniej niż twardy strzyżarka. Jest to łatwiejsze do modelowania, ale wprowadza własne zniekształcenie przy niskich częstotliwościach.
  3. Opierając się na podejściu, które zasugerowałeś powyżej, interpoluj próbkowany sygnał (np. Używając interpolatora Lagrange'a lub Czebyszewa), aby zbudować model czasu ciągłego. Następnie zastosuj ostrzy maszynkę do strzyżenia i dolnoprzepustowy w symulowanej dziedzinie czasu ciągłego. Próbkuj wynik.

Możesz łączyć (1) i (2). Trzecie podejście jest złożone, ale daje najlepszą kontrolę nad tym, ile zniekształceń należy przyznać, i prawdopodobnie będzie lepiej skalowane do bardzo wysokich wymagań dotyczących wierności.

W przypadku funkcji nieliniowych, które dopuszczają rozszerzenie serii (np. Taylor / Maclaurin), można uzyskać przyzwoitą intuicję dotyczącą szybkości zanikania harmonicznych. Rozszerzenie Maclaurin funkcji to:fa(x)

fa(x)=n=0[fa(n)(0)n!xn]

W twoim przypadku jest funkcją odcinania. (Nie możesz tego zrobić twardym klipsem, przynajmniej nie naiwnie!) Jeśli weźmiesz pod uwagę podstawienie , gdzie jest sygnałem wejściowym, staje się , co można uznać za zwoje sygnału wejściowego ze sobą razy. Zatem dla sygnałów dolnoprzepustowych ty czas nieskończonego sumowania ma szerokość pasma razy większą niż twój sygnał. Aby ukończyć obraz, musisz dowiedzieć się o amplitudzie związanej z każdym terminem i zdecydować, ile terminów w podsumowaniu jest odpowiednich.x = g ( t ) g ( t ) x n g ( t ) n n n nfa(x)x=sol(t)sol(t)xnsol(t)nnnn

(Przy odrobinie namysłu możesz również użyć tego formularza bezpośrednio do przybliżenia filtrowanej nieliniowości. Wymagałoby to dobrej reprezentacji serii dla maszynki do strzyżenia).

Graeme
źródło
Aby wyjaśnić, # 3 to nie tylko nadpróbkowanie interpolacji, to znalezienie parametrów ciągłego wielomianu Czebyszewa, który pasuje do próbkowanych punktów, a następnie praca z tymi parametrami i modelem wielomianu?
endolith
1
Wyobrażam sobie sekwencję interpolatorów wielomianowych, z których każda jest aktywna dla krótkiego zakresu próbek. Tak więc, gdy nadchodzi partia nowych próbek, konstruujesz interpolator, który jest aktywny tylko w określonym przedziale czasowym. Twoje przybliżenie ciągłego czasu do próbkowanego sygnału składa się z tych wielomianów. (Myślę, że Lagrange, ale Czebyszew to prawdopodobnie to samo. Nie przypominam sobie, by interpolatory Czebeszewa dokładnie pasowały do ​​punktów próbnych. Jeśli nie, to pojawiałyby się nieciągłości przy przełączaniu między interpolatorami.)
Graeme
4

Kilka podejść do zniekształceń nieliniowych wolnych od aliasów (w kolejności rosnącej trudności):

  1. fas2)N.fafaN.+1

  2. N.2)N.

  3. fa:RRfa:RN.RM.N.M.>N.. Dzięki takiemu zrozumieniu można użyć lokalnego skończonego przybliżenia sygnału wejściowego w odniesieniu do szeregu mocy i odwzorować go na przybliżenie szeregu mocy wyjścia. Następnie możesz analitycznie zintegrować serię wyjściową, aby utworzyć filtr antyaliasingu skrzynkowego, aby uzyskać wyjściową wartość próbki. Wszystkie te obliczenia można wykonać symbolicznie, a ponieważ musisz uwzględnić lokalne cechy sygnału wejściowego, w końcu otrzymasz filtr nieliniowy, który używa przeszłych wartości sygnału wejściowego do wygenerowania prądu wyjściowego.

  4. Projektowanie algebraiczne oparte na wiązaniu : W poprzednim punkcie zauważyłeś, że antyaliasing nieliniowych zniekształceń prowadzi do filtrów nieliniowych. Oczywiście nie wszystkie filtry nieliniowe są wolne od aliasów, ale niektóre mogą być. Oczywistym pytaniem jest więc, czy kryterium powinno być całkowicie wolne od aliasu i jak go zaprojektować. Jak się okazuje, równoważnym stwierdzeniem braku aliasingu jest to, że filtr nieliniowy przechodzi do pracy z tłumaczeniem podpróbek. Musisz więc upewnić się, że nie ma to znaczenia, jeśli najpierw tłumaczysz, a potem filtrujesz, lub filtrujesz najpierw, a potem tłumaczysz. Ten warunek prowadzi do bardzo surowych ograniczeń projektowychdla filtrów nieliniowych, ale zależy od tego, jak zrealizujesz tłumaczenie sygnału. Na przykład idealne tłumaczenie wymagałoby nieskończenie wielu współczynników dla filtra nieliniowego. Musisz więc przybliżać translację sygnału do skończonej kolejności, aby uzyskać skończony filtr nieliniowy. Alias-płynność skaluje się z używanym przybliżeniem, ale masz nad nim bardzo dobrą kontrolę. Po zapoznaniu się z matematyką tego podejścia możesz zaprojektować dowolną (nie tylko gładką) nieliniową funkcję przenoszenia jako prawie idealny model cyfrowy w postaci filtra nieliniowego. Nie mogę tu naszkicować szczegółów, ale może znajdziesz inspirację w tym opisie.

Jazzmaniac
źródło
y[t]=x[t]k
Lub inne (być może powiązane) pytanie - jeśli zastosujesz wspomniane lokalne podejście skończone, otrzymasz mapę od skróconych szeregów mocy do skróconych szeregów mocy. Kiedy następnie próbujesz dolnoprzepustowo obciąć serię mocy, która normalnie byłaby skomplikowana z funkcją sinc, czy dostajesz jakieś proste wyrażenie na wynik? Czy wynik można wyrazić ponownie jako skróconą serię mocy, a jeśli tak, to jak to wygląda?
Mike Battaglia,
1
@MikeBattaglia, być może możesz stworzyć nowe pytanie, abym mógł tam udzielić dokładnej odpowiedzi. Aby odpowiedzieć na drugie pytanie, nie używasz jądra SINC, ale w najprostszym przypadku jądro boxcar. Jądra wyższego rzędu działają, ale aby uzyskać wynik analityczny, musisz ograniczyć się do niektórych jąder.
Jazzmaniac
Dzięki - utworzyłem tutaj nowe pytanie do pytania dotyczącego projektu filtra: dsp.stackexchange.com/q/51533/18276
Mike Battaglia
2

T.n(x)=doos(nzardodoos(x)).

T.n(x)

(1)T.n(doos(kx))=doos(nzardodoos(doos(kx)))=doos(nkx).

Same wielomiany można łatwo wygenerować, stosując następującą relację powtarzalności :

T.0(x)=1T.1(x)=xT.n(x)=2)xT.n-1(x)-T.n-2)(x).

Oto kilka pierwszych:

T.0(x)=1T.1(x)=xT.2)(x)=2)x(x-1)=2)x2)-1T.3)(x)=2)x(2)x2)-1)-x=4x3)-3)xT.4(x)=2)x(4x3)-3)x)-(2)x2)-1)=8x4-8x2)+1

(1)T.2)doos(x)

2)doos2)(x)-1=2)(mijax+mi-jax2))2)-1=2)4(mija2)x+2)mijaxmi-jax+mi-ja2)x)-1=(mija2)x+mi-ja2)x2))+2)2)-1=doos(2)x).

Obliczając serię Czebyszewa

fa(x)=n=0zanT.n(x)

nfa(x)

Datageist
źródło
Dzięki! Co się dzieje w przypadku przebiegów innych niż pojedyncza sinusoida? Intermodulacja pasmowa czy nie?
endolith
1
xn
1

@ robert-bristow-johnson wyjaśnia to bardzo wyraźnie na comp.dsp :

musisz przeskanować w skończonym stopniu. jeśli reprezentujesz (bez pamięci, jak sądzę) nieliniowość jako wielomian skończonego rzędu (który przybliża dowolną krzywą, którą próbujesz zaimplementować), to niezależnie od kolejności wielomianu jest ten sam współczynnik koniecznego nadpróbkowania i nie wystąpią żadne aliasy. następnie filtr dolnoprzepustowy (z tą nadpróbkowaną częstotliwością), aby pozbyć się wszystkich składników częstotliwości wyższych niż oryginalny Nyquist, a następnie próbkowanie w dół i nie będziesz mieć aliasingu.

Innymi słowy, jeśli twoja nieliniowość jest wielomianem, najwyższą częstotliwością, która może być wytworzona przez zniekształcenie, będzie najwyższa częstotliwość w twoim sygnale razy rząd N wielomianu. (Wielomianowa nieliniowość zwielokrotnia sygnał sam w sobie N razy, więc jego widmo splata się z samym sobą i rozkłada o ten sam współczynnik.)

Zatem znasz maksymalną częstotliwość (niezależnie od tego, czy Nyquist lub jakiś dolny limit dla twojej aplikacji) i znasz kolejność wielomianu, dzięki czemu możesz wystarczająco nadpróbkować, aby zapobiec aliasingowi, zrobić zniekształcenie, a następnie filtr dolnoprzepustowy i próbkowanie w dół.

W rzeczywistości można zmniejszyć częstotliwość nadpróbkowania, pozwalając na pewne aliasing, o ile jest on zawarty w paśmie, który zostanie usunięty przed próbkowaniem w dół:

Inną małą sztuczką jest to, że nie musisz się martwić aliasingiem, który składa się do obszaru, z którego wyjdziesz LPF. więc wielomian piątego rzędu musi mieć jedynie współczynnik nadpróbkowania wynoszący 3. te 2 górne harmoniczne mogą mieć alias, ale nie wrócą do pasma podstawowego. podczas próbkowania w dół filtrowane są te aliasy harmoniczne. więc myślę, że twardą i szybką zasadą jest

współczynnik nadpróbkowania = (rząd wielomianowy + 1) / 2

endolit
źródło
2
N.N.+12)fas
@robert Widziałem i dodałem tę część, gdy komentowałeś. Jeśli przepiszesz to jako własną odpowiedź, usunę ją i zaakceptuję twoją
endolith
1
o jej. ubieranie ładnej odpowiedzi wymaga pracy.
Robert Bristol-Johnson
@ robertbristow-johnson Cóż, fikcyjne punkty internetowe są twoje, jeśli chcesz
endolith