Jakie są względne zalety różnych schematów upsamplingu?

12

Ostatnio spotkałem system DSP, który dokonał wewnętrznego upsamplingu za pomocą zerowania. Spodziewając się utrzymania zerowego rzędu byłem zaskoczony, gdy stwierdziłem, że sygnał prądu stałego nie wytwarza wyjścia prądu stałego; wiele harmonicznych wewnętrznej (dolnej) częstotliwości próbkowania było również obecnych na wyjściu.

To prowadzi do mojego pytania: jakie techniki upsamplingu są powszechnie stosowane i jakie są ich względne zalety? Dlaczego miałbym wybrać dopełnianie zerowe, wstrzymanie zerowego rzędu lub wstrzymanie pierwszego rzędu i jakie inne techniki są dostępne?

Kilka wyjaśnień:

  • System działa w czasie rzeczywistym, więc schemat próbkowania musi być przyczynowy.
  • Po upsamplerze następuje filtr antyaliasingu, który można również określić.
nibot
źródło

Odpowiedzi:

11

Na potrzeby tej odpowiedzi wykorzystam terminologię Matlaba i zdefiniuję „próbkowanie w górę” jako proces wstawiania zer między próbkami wejściowymi oraz „interpolację” jako połączony proces próbkowania w górę i filtrowania w celu usunięcia aliasów m - 1 ( m jest współczynnikiem interpolacji), które wprowadza upsampling. Aby uzyskać wyjaśnienie, w jaki sposób / dlaczego upsampling wprowadza aliasy, zobacz ten wątek .m-1m-1m

Ważne jest, aby zrozumieć, że można użyć dowolnego filtra dolnoprzepustowego, aby pozbyć się aliasów i tym samym zakończyć interpolację. Jednak niektóre filtry mają zalety, gdy są używane w interpolacji. Poniżej omówię różne smaki filtrowania interpolacji.

Filtr FIR

Interpolujące filtry FIR są wydajne, ponieważ łączą upsampling i filtrowanie aliasów w jednym kroku. Jest to najłatwiej widoczne na przykładzie. Załóżmy, że mamy sekwencję danych i chcemy ją interpolować dwa razy. Pierwszym krokiem jest zwiększenie próby dwa razy. Zmienia się od pierwotnej sekwencji danych x 0 , x 1 , . . . x N do x 0 , 0 , x 1 , 0 , . . . x N .x[n]x0,x1,...xN.x0,0,x1,0,...xN.

Załóżmy teraz, że mamy filtr dolnoprzepustowy FIR, , którego użyjemy do usunięcia aliasu. Kiedy zwijamy sekwencję danych o podwyższonej próbce z filtrem, połowa zaczepów filtra jest stymulowana przez próbki niezerowe, a połowa zaczepów jest nieaktywna, ponieważ odpowiadają próbkom zerowym. Połowa, która jest stymulowana, a połowa nieaktywna, obraca się w przód iw tył, gdy filtr przechodzi przez dane. Te dwa zestawy zaworów są czasami nazywane fazami filtrów.h[n]

Ten sam efekt można osiągnąć pośrednio przez wyeliminowanie próbkowania w górę i filtrowanie oryginalnej sekwencji danych za pomocą interpolującego filtra FIR. Interpolujący filtr FIR wytwarza wyników dla każdej próbki wejściowej. Dla wszystkich m wyjść filtr będzie działał na tych samych próbkach wejściowych c e i l ( K / m ) (gdzie K jest liczbą zaczepów filtra, a „ceil” jest funkcją sufitu).mmdomijal(K./m)

Mam nadzieję, że przykład zilustruje, jak to działa. Załóżmy, że mamy filtr sześciostopniowy i interpolujemy dwa razy. Krany filtrów to [1 -2 4 4 -2 1]. Gdybyśmy dosłownie interpolowali, a następnie filtrowali próbki, stuknięcia filtrów byłyby ustawione w linii (po całkowitym zachodzeniu na siebie) w następujący sposób:

0:1x2):-2)0:4x1:40:-2)x0:1
Następna próbka ...

x3):10:-2)x2):40:4x1:-2)0:1
Następna próbka ...

0:1x3):-2)0:4x2):40:-2)x1:1
I tak dalej. Chodzi o to, że filtr interpolujący pomija faktyczne wstawianie zer i po prostu zmienia na przemian zestaw kranów, których używa obecnie. Zatem poprzednia sekwencja wyglądałaby teraz następująco:

x2):-2)x1:4x0:1

x3):1x2):4x1:-2)

x3):-2)x2):4x1:1

Blokada zerowego zamówienia

Interpolator wstrzymania rzędu zerowego to taki, który po prostu powtarza każdą próbkę razy. Więc czynnik dwóch ekstrapolator rzędu zerowego nawróconych interpolator x 0 , x 1 , . . . x N do x 0 , x 0 , x 1 , x 1 , . . . x N , x N . Ta metoda jest atrakcyjna, ponieważ jest niezwykle łatwa do wdrożenia, zarówno pod względem kodowania, jak i obciążenia obliczeniowego.m-1x0,x1,...xN.x0,x0,x1,x1,...xN.,xN.

m

Wstrzymanie pierwszego rzędu

x0,x1,...xN.x0,x0+x12),x1,x1+x2)2),...xN.

[12)112)][13)2)3)12)3)12)]

Filtr trójkątny to dwa splecione ze sobą filtry prostokątne, co odpowiada kwadratowi cynku w dziedzinie częstotliwości. Jest to zdecydowany krok w górę od blokady zerowego rzędu, ale nadal nie jest świetny.

Filtr IIR

Nigdy nie korzystałem z interpolującego filtra IIR, więc niewiele o nich powiem. Zakładam, że obowiązują te same argumenty, co w przypadku zwykłego filtrowania - filtry IIR są bardziej wydajne, mogą być niestabilne, nie mają fazy liniowej itp. Nie wierzę, że mogą łączyć etapy próbkowania i filtrowania tak jak filtr FIR, ale mogę się mylić.

Interpolacja FFT

Wrzucę ten, nawet jeśli nie jest to zbyt powszechne (oczywiście nie sądzę, że trzymanie zera jest powszechne). W tym wątku omówiono ponowne próbkowanie FFT, gdzie ponowne próbkowanie to zarówno interpolacja, jak i dziesiętna.

Wytrzymałość wyższego rzędu

Interpolatory wstrzymania drugiego rzędu są zwykle określane jako „interpolatory kwadratowe”. Są nieliniowe i dlatego nie mogą być implementowane jako filtry FIR, które są liniowe. Nie rozumiem dobrze matematyki za nimi, więc nie będę omawiać ich wyników. Powiem jednak, że uważam, że są one dość powszechne poza przetwarzaniem sygnału.

Istnieją również metody wyższego rzędu (trzy lub więcej). Są to tak zwane „regresje wielomianowe”.

EDYTOWAĆ:

Filtry grzebieniowe integratora kaskady (CIC)

Zapomniałem wspomnieć o filtrach CIC . Filtry CIC są używane z dwóch powodów: używają tylko sumatorów / odejmatorów (nie jest to już tak wielka sprawa, ponieważ mnożenia są szybkie i tanie) i mogą dość skutecznie dokonywać naprawdę dużych zmian częstotliwości próbkowania. Ich wadą jest to, że są one zasadniczo wydajną implementacją kaskadowego filtra prostokątnego, więc mają wszystkie wady filtrów prostokątnych, jak omówiono powyżej. Interpolatory CIC są prawie zawsze poprzedzone kompensującym filtrem FIR, który wstępnie zniekształca sygnał w celu wyeliminowania zniekształceń wprowadzonych przez CIC. Jeśli zmiana częstotliwości próbkowania jest wystarczająco duża, warto kosztować filtr wstępnego zniekształcenia.

Jim Clay
źródło
Fantastyczna ankieta, panie Jim. Aby dodać do kategorii wstrzymania wyższego rzędu, uważam, że jest to również określane jako „regresja wielomianowa”. Biorąc pod uwagę określony zestaw punktów, obliczamy linię, parabolę, sześcienny wielomian wyższego rzędu o najlepszym dopasowaniu. Po uzyskaniu równania możemy łatwo dowiedzieć się, jakie są punkty pośrednie.
Spacey,
Pytania: 1) Nie do końca rozumiem ostatni akapit części dotyczącej filtra FIR. Wspomniałeś, że 2. i 3. wyjście odpowiadające pierwszej próbce wejściowej używa taśm filtrujących 1, 4, 7, a następnie 2, 5, 8. Jednak wspominasz również, że wszystkie są zerami ... więc nie są 2. i 3. wyjściem próbki w tym przypadku tylko zera? 2) Czy ten „FIR Interpolating Filter” wygląda jak, powiedzmy, [1 0 0 3,2 0 0 -2,1 0 0 1,1 0 0] dla m = 3? (Liczby są wymyślone).
Spacey,
@Mohammad Zredagowałem odpowiedź. Mam nadzieję, że to pomoże. I dzięki za informacje na temat regresji wielomianowych.
Jim Clay,
1
@endolith Myślę, że dwa powody: złożoność i ma to sens obliczeniowy tylko wtedy, gdy długość filtra jest większa niż pewna liczba (i nie jestem pewien, co to za liczba). Podejście FFT bardzo dobrze radzi sobie z blokami próbek, ale jeśli masz do czynienia ze strumieniem próbek, musisz również wykonać nakładanie-dodawanie lub nakładanie-zapisywanie, aby zachować ciągłość.
Jim Clay,
1
@endolith Jedną naprawdę fajną rzeczą w podejściu FFT jest to, że korzystanie z dużego filtra praktycznie nie kosztuje.
Jim Clay,
3

Odpowiedź Jima całkiem dobrze to obejmuje. Wszystkie metody upsamplingu mają ten sam podstawowy schemat:

  1. Wstaw zera między próbkami: Powoduje to okresowe powtarzanie pierwotnego widma, ale pozostawia widmo w oryginalnym paśmie całkowicie nienaruszone
  2. Filtr dolnoprzepustowy, aby pozbyć się wszystkich widm lustrzanych

Główną różnicą między metodami jest sposób implementacji filtrowania dolnoprzepustowego. Idealnym upsamplerem byłby idealny filtr dolnoprzepustowy, ale to niepraktyczne. Uwzględnienie problemu w dziedzinie częstotliwości pozwala znaleźć odpowiedni algorytm próbkowania w górę dla określonych wymagań:

  1. Ile zniekształceń amplitudy mogę tolerować w oryginalnym paśmie? Czy to zależy od częstotliwości?
  2. Czy zależy mi na fazie w oryginalnym zespole? Jeśli chcesz zachować fazę, potrzebujesz fazy liniowej FIR. Jeśli nie minimalna faza lepiej sprawdza się w utrzymywaniu „przyczynowości” i ostrych początków.
  3. Ile potrzebuję, aby stłumić odbicia lustrzane? Zasadniczo obrazy lustrzane pojawią się jako dodatkowy szum w paśmie podstawowym.

Interpolatory nieliniowe wysokiego rzędu (splajn, pustelnik, Lagrange) zwykle nie działają dobrze, ponieważ błąd interpolacji jest silnie zależny od sygnału i prawie niemożliwy do odwzorowania na konkretne wymaganie.

Hilmar
źródło
Co rozumiesz przez „czy lepsza praca w utrzymywaniu„ przyczynowości ”?
nibot
0

Rozważając różnicę między próbą i wstrzymaniem (tj. Powtarzaniem wartości próbek) a dopełnieniem zerowym, warto zdać sobie sprawę (jak zauważają Jim i Hilmar), że próbkowanie i wstrzymanie można interpretować jako próbkowanie w górę przez dopełnianie zerowe, a następnie Filtr FIR, którego odpowiedź impulsowa składa się z prostokątnego impulsu.

Na przykład, kiedy upsampling od 2 kHz do 64 kHz (współczynnik 32), możemy to zaimplementować, wstawiając 31 zer między każdą parą próbkowania 2 kHz, a następnie filtrując według filtru FIR, który składa się z 32 jedynek, ze wszystkimi innymi współczynniki zero.

sincτ=0

Okazuje się, że ta sincfunkcja ma swoje wartości null w dokładnie tych harmonicznych częstotliwości próbkowania niższej. W naszym przykładowym zastosowaniu upsamplingu z 2048 Hz do 65536 Hz odpowiedź częstotliwościowa operacji próbkowania i wstrzymania ma wartości zerowe przy 2048 Hz, 4096 Hz itp.

wprowadź opis zdjęcia tutaj

Na tej podstawie dochodzę do wniosku, że każdy filtr interpolujący, który całkowicie tłumi harmoniczne oryginalnej częstotliwości próbkowania, będzie przypominał „próbkuj i przytrzymaj”. Czy to jest poprawne?

1/fa

nibot
źródło
Problem polega na tym, że wartości zerowe są bardzo wąskie, więc większość sygnałów będzie miała energię poza wartościami zerowymi.
Jim Clay,
@JimClay, czy wąskie wartości zerowe nie są idealne do zabijania harmonicznych niższej częstotliwości próbkowania? Zgadzam się, chciałbyś także kilka dodatkowych biegunów około 1 kHz, aby pozbyć się częstotliwości obrazu. Chyba rozwinąłbym moje pytanie: jak zaprojektować dobry filtr interpolacyjny?
nibot
Projektujesz filtr dolnoprzepustowy, którego pasmo przepustowe obejmuje szerokość twojego sygnału, a którego pasmo stop zawiera aliasy, które są wprowadzane podczas próbkowania. Częstotliwości pomiędzy punktem 3dB sygnału a aliasem to twoje pasmo przejściowe. Jeśli twoje pytanie brzmi „jak zaprojektować filtr dolnoprzepustowy?”, Zadaj je w innym pytaniu i możemy to przedyskutować.
Jim Clay
Ogólnie rozumiem, jak projektować filtry, zwykle poprzez jawne umieszczanie biegunów i zer w domenie s, a następnie przekształcanie ich w filtry z domeny. Zastanawiałem się, czy są jakieś specjalne sztuczki dla filtrów interpolacyjnych. Przesłanie, które zabieram, jest takie, że tak naprawdę nie ma żadnych sztuczek - filtry interpolacyjne są jak każdy inny rodzaj filtrów, a ich konstrukcja jest wyborem kompromisu między różnymi względami (tętnienie, faza, opóźnienie grupy, minimalne tłumienie stop-band, złożoność obliczeniowa itp.).
nibot
Z drugiej strony nie wiem nic o projektowaniu filtrów FIR.
nibot