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).mmc e i l ( 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): - 20 : 4x1: 40 : - 2x0: 1
Następna próbka ...
x3): 10 : - 2x2): 40 : 4x1: - 20 : 1
Następna próbka ...
0 : 1x3): - 20 : 4x2): 40 : - 2x1: 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): - 2x1: 4x0: 1
x3): 1x2): 4x1: - 2
x3): - 2x2): 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)1 12)][ 13)2)3)1 23)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.