ฉันจะออกแบบตัวกรองการแก้ไขของ Nyquist ด้วยอัลกอริทึม Parks-McClellan ได้อย่างไร


17

เราสามารถออกแบบตัวกรองการแก้ไขที่ปฏิบัติตามข้อ จำกัด ความถี่โดเมนบางอย่างได้อย่างง่ายดายโดยใช้อัลกอริทึมParks-McClellan อย่างไรก็ตามยังไม่ชัดเจนว่าจะบังคับใช้ข้อ จำกัด ของโดเมนเวลาได้อย่างไร โดยเฉพาะอย่างยิ่งฉันสนใจที่จะสร้างตัวกรอง Nyquist ดังนั้นถ้าฉัน oversampling โดยปัจจัยของNผมต้องการตัวกรองที่จะมีศูนย์นํ้าที่kNสำหรับที่ไม่ใช่ศูนย์จำนวนเต็มk(เพื่อให้แน่ใจว่ากลุ่มตัวอย่างที่เข้ากับ interpolator ของฉันจะปรากฏในลำดับการส่งออก)

ผมเคยเห็นแฮร์ริส1N=2พูดคุยเกี่ยวกับเทคนิคการออกแบบฟิลเตอร์ครึ่งวงคือกรณีพิเศษที่ มีวิธีแก้ปัญหาทั่วไปสำหรับสิ่งนี้หรือไม่? (ฉันรู้ว่าเราสามารถออกแบบตัวกรองได้อย่างง่ายดายด้วยวิธีหน้าต่าง แต่นั่นไม่ได้ให้ตัวควบคุมเดียวกันกับเรา)

[1] การประมวลผลสัญญาณหลายระดับสำหรับระบบสื่อสาร , หน้า 208-209


สำหรับN=2ดูคำตอบของฉัน: การออกแบบตัวกรอง FIR: Window VS Parks-McClellan และอย่างน้อยสี่เหลี่ยม
Olli Niemitalo

คู่ของการอ้างอิงวรรณกรรมที่มี paywalled น่าเสียดายที่: F. Mintzer“ ในครึ่งวงสามวงและตัวกรอง FIR NTH แบนด์และแบนด์ Nth และการออกแบบของพวกเขา” IEEE Trans Acoust., กระบวนการพูดและสัญญาณ, ฉบับที่ ASSP-30 เลขที่ 5, pp. 734–738, ต.ค. 1982 ต. Saramaki และ Y. Neuvo,“ คลาสของตัวกรอง FIR Nyquist (Nth-band) ระดับที่มีสัญญาณรบกวนศูนย์จุดแทรกไม่ได้” IEEE Trans Circuits & Syst., vol. CAS-34, หมายเลข 10, pp. 1182–1190, ตุลาคม 1987
Olli Niemitalo

และบทความนี้ซึ่งดูเหมือนจะเป็นประเด็นสำคัญ: X. Zhang, " การออกแบบตัวกรองเฟสเชิงเส้น FIR ของ Mth-band ," การประชุมนานาชาติครั้งที่ 19 2014 ในการประมวลผลสัญญาณดิจิตอล , ฮ่องกง, 2014, หน้า 7-11 ดอย: 10.1109 / ICDSP.2014.6900776
Olli Niemitalo

คำตอบ:


9

วิธีการออกแบบวิธีหนึ่งแม้ว่าจะ จำกัด เพียงพลังของสองจะเริ่มต้นด้วยตัวกรองฮาลแบนด์หนึ่งแทรกศูนย์ที่กัน (สร้างแบบจำลองสเปกตรัม) จากนั้นปรับด้วยฟิลเตอร์ halfband ตัวที่สองที่มีแถบการเปลี่ยนที่กว้างขึ้น ทำซ้ำจนกว่าคุณจะได้พลังงานที่ต้องการ 2

นี่คือตัวอย่างที่สร้างตัวกรอง lowpass ด้วย Fc = fs / 8 และ zero crossings ทุก 4 ตัวอย่าง:

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

การเปรียบเทียบตัวกรองตัวอย่าง


ฉันจะแนะนำสิ่งเดียวกัน
Phonon

5
+1 สำหรับกราฟที่ยอดเยี่ยม ฉันจะ +1 กราฟที่ยอดเยี่ยมเสมอเพราะมันดีกว่านาน ... มักจะเป็นคำอธิบายที่น่าเบื่อ / ไม่ดี
เทรเวอร์บอยด์สมิ ธ

5

วิธีหนึ่งที่จะได้รับการข้ามศูนย์ที่คุณต้องการคือการออกแบบไฮบริด

เริ่มต้นด้วยตัวกรองครึ่งวง Parks-McLellan / Remez ที่ให้น้ำหนักเท่ากันกับ passband และ stopband เนื่องจากมันเป็นตัวกรองฮาร์ทแบนด์มันจะมีศูนย์ที่ตัวอย่างอื่น จากนั้นคุณสามารถแก้ไขโดเมนเวลาโดย sin (x) / x โดย zero-stuffing ในโดเมนความถี่

ตัวอย่าง: การสร้างตัวกรองความถี่ต่ำ fs / 12 โดยไม่มีการข้ามศูนย์ทุก 6 ตัวอย่าง

% 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

ตัวกรองที่ได้นั้นใกล้เคียงกับตัวต้นแบบ แต่ก็ยังไม่ดีเท่าตัวต้นแบบในแง่ของระลอกคลื่นระนาบ / passband การแก้ไขบาป (x) / x จะแนะนำเสียงเรียกเข้าในระดับต่ำ คุณอาจต้องออกแบบตัวกรองต้นแบบมากเกินไปเล็กน้อยเพื่อให้ได้ระดับการลดทอนที่ต้องการในตัวกรองแบบแทรก


1
+1: แนวคิดที่น่าสนใจ ฉันต้องคิดเรื่องนี้สักหน่อย แม้ว่าฉันจะมีคำถามสองข้อ อันดับแรกมันปลอดภัยหรือไม่ที่จะบอกว่าเราสามารถแปลข้อ จำกัด การออกแบบ Equiripple ของเราเป็นตัวกรองครึ่งวงได้ง่ายๆโดยการปรับสเกล? ประการที่สองแล้วค่าแปลก ๆ ของN เป็นเท่าไหร่?
Oliver Charlesworth

ค่าคี่ของ N สามารถจัดการได้ด้วยการกำจัด FIR คู่โดย 2 เช่นถ้าคุณต้องการเลขศูนย์ทุก 7 ตัวอย่างให้ออกแบบเฟอร์ด้วยเลขศูนย์ทุก 14 จากนั้นจึงกำจัดเลขศูนย์ที่คุณเก็บค่าศูนย์ไว้ ครึ่งบนของคลื่นความถี่จะเป็นนามแฝง แต่ไซเดอร์แบบบูรณาการอาจไม่ได้รับความสนใจในทางปฏิบัติ
Mark Borgerding
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.