Parks-McClellan algoritması ile Nyquist enterpolasyon filtrelerini nasıl tasarlayabilirim?


17

Parks-McClellan algoritmasını kullanarak belirli frekans alanı kısıtlamalarına uyan enterpolasyon filtrelerini kolayca tasarlayabiliriz . Ancak, zaman alanı kısıtlamalarının nasıl uygulanacağı hemen anlaşılamamıştır; özellikle Nyquist filtreleri üretmekle ilgileniyorum. Eğer bir faktörle aşırı örnekleme yapıyorsam N, filtrenin sıfır kNolmayan tamsayı için sıfır geçişe sahip olmasını istiyorum k(bu, enterpolatörüm için giriş örneklerinin çıkış sırasında görünmesini sağlar).

Harris 1'in yarım bant filtreleri tasarlamak için bir teknikten bahsettiğini gördüm , yani özel durum N=2. Bunun genel bir çözümü var mı? (Pencere yöntemiyle filtreleri kolayca tasarlayabileceğimizi biliyorum, ancak bu bize aynı kontrolü vermiyor.)

[1] İletişim Sistemleri için Çok Hızlı Sinyal İşleme , s. 208-209



Maalesef ödeme yapılan birkaç literatür referansı maalesef: F. Mintzer, “Yarım bant, üçüncü bant ve N. Bant FIR filtrelerinde ve tasarımlarında,” IEEE Trans. Akustik., Konuşma ve Sinyal Süreci., Cilt. ASSP-30, hayır. 5, s. 734–738, Ekim 1982. T. Saramaki ve Y. Neuvo, “Sıfır sembollerarası parazitli bir FIR Nyquist (Nth-band) filtresi sınıfı”, IEEE Trans. Circuits & Syst., Cilt. CAS-34, no. 10, sayfa 1182–1190, Ekim 1987.
Olli Niemitalo

Ve bu noktaya çok benzeyen bu makale: X. Zhang, " Mth-band FIR lineer faz filtrelerinin tasarımı ", 2014 19. Uluslararası Dijital Sinyal İşleme Konferansı , Hong Kong, 2014, s. 7-11. doi: 10.1109 / ICDSP.2014.6900776
Olli Niemitalo

Yanıtlar:


9

Bir tasarım yöntemi, ikisinin gücü ile sınırlı olsa da, bir yarım bant filtresi ile başlamak, birbirlerine sıfırlar eklemek (spektral bir kopya oluşturur), daha sonra daha geniş bir geçiş bandına sahip ikinci bir yarım bant filtresi ile kıvrım yapmak olacaktır. Gereken 2 gücüne ulaşıncaya kadar işlemi tekrarlayın.

Aşağıda, her 4 örnekte Fc = fs / 8 ve sıfır geçişli bir düşük geçiş filtresi oluşturan bir örnek verilmiştir:

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

Örnek filtrelerin karşılaştırılması


Ben de aynı şeyi önerecektim.
Phonon

5
Harika grafik için +1. Ben her zaman +1 harika grafikler olacak çünkü onlar çok daha iyi ... genellikle sıkıcı / kötü açıklamalar.
Trevor Boyd Smith

5

İstediğiniz sıfır geçişi elde etmenin bir yolu hibrit bir tasarım yapmaktır.

Geçiş bandına ve stop bandına eşit ağırlık verilen Parks-McLellan / Remez yarım bant filtresiyle başlayın. Bir olduğundan halfband filtresi , bu alternatif örneklere sıfır olacaktır. Daha sonra zaman alanını frekans alanında sıfır doldurma ile sin (x) / x ile enterpolasyon yapabilirsiniz.

Örnek: 6 örnekte bir sıfır geçişli bir fs / 12 düşük geçiş filtresi oluşturmak.

% 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

Ortaya çıkan filtre, durdurma bandı / geçiş bandı dalgalanması açısından prototipe yakındır, ancak o kadar iyi değildir. Sin (x) / x enterpolasyonu bazı düşük seviyeli zil seslerine neden olur. Enterpolasyonlu filtrede gerekli zayıflama seviyesini elde etmek için prototip filtresini biraz fazla tasarlamanız gerekebilir.


1
+1: İlginç bir fikir; Bunu biraz düşünmem gerek. Yine de bana iki soru geliyor. Birincisi, equiripple tasarım kısıtlamalarımızı sadece ölçekleyerek yarım bant filtresine çevirebileceğimizi söylemek güvenli mi? İkincisi, N'nin tek değerleri ne olacak ?
Oliver Charlesworth

N'nin tek değerleri, eşit bir FIR değerini 2 ile sonlandırarak ele alınabilir. Örneğin, her 7 örnekte sıfır istiyorsanız, her 14'te sıfır içeren bir köknar tasarlayın, ardından sıfırları koruyacak şekilde tahmin edin. Spektrumun üst yarısı takma olacaktır, ancak entegre yan loblar pratikte oldukça ihmal edilebilir.
Mark Borgerding
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.