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:
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
źródło
Odpowiedzi:
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:
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 )
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 = g( t ) sol( t ) xn sol( t )n n n n
(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).
źródło
Kilka podejść do zniekształceń nieliniowych wolnych od aliasów (w kolejności rosnącej trudności):
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.
źródło
Same wielomiany można łatwo wygenerować, stosując następującą relację powtarzalności :
Oto kilka pierwszych:
Obliczając serię Czebyszewa
źródło
@ robert-bristow-johnson wyjaśnia to bardzo wyraźnie na comp.dsp :
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ół:
źródło