Jak zaprojektować filtry interpolacyjne Nyquist za pomocą algorytmu Parks-McClellan?

17

Możemy łatwo zaprojektować filtry interpolacyjne, które spełniają pewne ograniczenia w dziedzinie częstotliwości za pomocą algorytmu Parks-McClellan . Jednak nie jest od razu jasne, jak egzekwować ograniczenia w dziedzinie czasu; w szczególności jestem zainteresowany generowaniem filtrów Nyquist. Więc jeśli oversampling jest jeden raz N, chcę, aby filtr miał zero przecięć kNdla niezerowej liczby całkowitej k(zapewnia to, że próbki wejściowe do mojego interpolatora pojawią się w sekwencji wyjściowej).

Widziałem, jak Harris 1 mówił o technice projektowania filtrów półpasmowych, czyli o specjalnym przypadku, w którym N=2. Czy istnieje na to ogólne rozwiązanie? (Wiem, że możemy łatwo zaprojektować filtry za pomocą metody okna, ale to nie daje nam takiej samej kontroli).

[1] Multirate Signal Processing for Communication Systems , s. 208–209

Oliver Charlesworth
źródło
Aby N=2zobaczyć moją odpowiedź na: FIR Projekt filtra: Window vs Parks-McClellan i Least-Squares .
Olli Niemitalo
Kilka odnośników do literatury, które są niestety opłacone: F. Mintzer, „O filtrach FIR półpasmowych, trzeciego pasma i n-pasmowych FIR i ich konstrukcji”, IEEE Trans. Acoust., Speech & Signal Process., Vol. ASSP-30, nr 5, s. 734–738, październik 1982. T. Saramaki i Y. Neuvo, „Klasa filtrów FIR Nyquist (pasmo n-te) z zerową interferencją między symbolami”, IEEE Trans. Circuits & Syst., Vol. CAS-34, nr 10, s. 1182–1190, październik 1987.
Olli Niemitalo
I ten artykuł, który wydaje się bardzo do rzeczy: X. Zhang, „ Projektowanie filtrów fazy liniowej FIR w paśmie Mth ”, 19. XIX Międzynarodowa Konferencja na temat cyfrowego przetwarzania sygnałów , Hongkong, 2014, s. 7–11. doi: 10.1109 / ICDSP.2014.6900776
Olli Niemitalo

Odpowiedzi:

9

Jedną z metod projektowania, aczkolwiek ograniczoną do potęg dwóch, byłoby rozpoczęcie od jednego filtra półpasmowego, wstawienie zer co drugi (tworzy replikę spektralną), a następnie splot z drugim filtrem półpasmowym o szerszym paśmie przejściowym. Powtarzaj proces, aż dojdziesz do wymaganej mocy 2.

Oto przykład, który tworzy filtr dolnoprzepustowy z Fc = fs / 8 i zerowymi przecięciami co 4 próbki:

b0=remez(34,[0 .45 .55 1],[1 1 0 0])';
b1=remez(6,[0 .25 .75 1],[1 1 0 0])';
b0up = zeros(1,2*length(b0)-1);
b0up(1:2:end) = b0;
B0up=freqz(b0up);
b2 = conv(b0up,b1);  % length = 34*2+1 + 6 = 75 coefficients

Porównanie przykładowych filtrów

Mark Borgerding
źródło
Chciałem zasugerować to samo.
Phonon
5
+1 za niesamowity wykres. ZAWSZE +1 niesamowite wykresy, ponieważ są one znacznie lepsze niż długie ... często nudne / złe wyjaśnienia.
Trevor Boyd Smith
5

Jedną z metod uzyskania pożądanego przejścia przez zero jest wykonanie projektu hybrydowego.

Zacznij od pół-pasmowego filtra Parks-McLellan / Remez, któremu przypisano taką samą wagę do pasma przepustowego i pasma zatrzymania. Ponieważ jest to filtr półpasmowy , będzie miał zera przy alternatywnych próbkach. Następnie można interpolować dziedzinę czasu przez sin (x) / x przez wypełnianie zerami w dziedzinie częstotliwości.

Przykład: tworzenie filtra dolnoprzepustowego fs / 12 z zerowymi skrzyżowaniami co 6 próbek.

% prototype Remez filter 
taps=18; 
b = remez(taps,[0 .4 .6 1],[1 1 0 0])';  
% force halfband condition of zeros at every other sample
b(2:2:end)=0;  b(taps/2+1)=.5; 

% zero pad the time domain to give the Gibbs ripple some deadspace
B=fft(b,4*(taps+1) ); 
% split the frequency domain into two halves, split the Nyquist bin
Blo = [ B(1:length(B)/2) 0.5*B(length(B)/2+1) ]; 
Bhi = [ 0.5*B(length(B)/2+1) B(length(B)/2+2:length(B))  ]; 

% insert padding at pi to increase size 3x
Bpad = [ Blo zeros(1,3*length(B)-length(Blo)-length(Bhi) ) Bhi];  
bint = real( ifft(Bpad) ); % this has zeros every 6 samples

Powstały filtr jest bliski, ale nie tak dobry jak prototyp pod względem tętnienia stopband / passband. Interpolacja sin (x) / x wprowadza pewne dzwonienie na niskim poziomie. Może być konieczne nieco przeprojektowanie filtra prototypowego, aby uzyskać wymagany poziom tłumienia w filtrze interpolowanym.

Mark Borgerding
źródło
1
+1: ciekawy pomysł; Muszę trochę o tym pomyśleć. Jednak przychodzą mi do głowy dwa pytania. Po pierwsze, czy można bezpiecznie powiedzieć, że możemy przełożyć nasze równorzędne ograniczenia projektowe na filtr półpasmowy po prostu poprzez skalowanie? Po drugie, co z nieparzystymi wartościami N ?
Oliver Charlesworth
Dziwne wartości N mogą być obsługiwane przez zdziesiątkowanie parzystej FIR przez 2. np. Jeśli chcesz zer z 7 próbkami, zaprojektuj jodłę z zerami co 14, a następnie zdziesiątkuj tak, aby zachować zera. Górna połowa widma zostanie aliasowana, ale zintegrowane boczne linie boczne mogą być praktycznie nieistotne w praktyce.
Mark Borgerding,