การออกแบบตัวกรอง FIR: Window vs Parks McClellan และ Squast Squares น้อยที่สุด


21

มีข้อได้เปรียบใด ๆ หรือไม่ที่จะใช้วิธีเข้าหาหน้าต่างเหนือ Parks-McClellan (ย่อมาอีกว่า PMcC) หรืออัลกอริธึม Least Squares สำหรับการออกแบบตัวกรอง FIR ของตัวกรองสัญญาณความถี่ต่ำ สมมติว่าด้วยพลังการคำนวณในปัจจุบันที่ความซับซ้อนของอัลกอริทึมนั้นไม่ได้เป็นปัจจัย

คำถามนี้ไม่ได้เปรียบเทียบ PMcC กับ Least Squares แต่โดยเฉพาะถ้ามีเหตุผลที่จะใช้เทคนิคการออกแบบหน้าต่าง FIR ใด ๆ แทนอัลกอริธึมเหล่านั้นหรือเป็นเทคนิคการเรียงหน้าต่างเพื่อกรองการออกแบบล้าสมัยโดยอัลกอริธึมเหล่านั้น

ด้านล่างเป็นการเปรียบเทียบหนึ่งที่ฉันได้เปรียบเทียบหน้าต่าง Hamming กับแนวทางการออกแบบที่ฉันโปรดปรานกับ Least-Squared โดยใช้จำนวนก๊อกเท่ากัน ฉันขยาย passband ในวิธี Least Squared เพื่อให้ตรงกับ Hamming Window อย่างใกล้ชิดและในกรณีนี้มันค่อนข้างชัดเจนว่า Least-Squared จะมีประสิทธิภาพสูงกว่า (เสนอการปฏิเสธวงดนตรีหยุดมากกว่า) ฉันยังไม่ได้ทำสิ่งนี้กับหน้าต่างทั้งหมดซึ่งทำให้ฉันถามคำถามว่าคุณสามารถทำ PMcC และสี่เหลี่ยมจัตุรัสน้อยที่สุดได้หรือไม่หรือมีแอปพลิเคชั่นอื่นสำหรับตัวกรองความถี่ต่ำ FIR ที่ต้องการแนวทางการปรับหน้าต่าง

ป้อนคำอธิบายรูปภาพที่นี่


2
ฉันอาจแนะนำให้เปรียบเทียบKaiser -windowed sinc ไปและfirpm() firls()
robert bristow-johnson

คำตอบ:


16

ฉันยอมรับว่าวิธีการออกแบบตัวกรองหน้าต่างไม่ใช่หนึ่งในวิธีการออกแบบที่สำคัญที่สุดอีกต่อไปและมันอาจเป็นกรณีที่มีการนำเสนอในตำราดั้งเดิมมากเกินไปอาจเป็นเพราะเหตุผลทางประวัติศาสตร์

อย่างไรก็ตามฉันคิดว่าการใช้งานสามารถพิสูจน์ได้ในบางสถานการณ์ ฉันไม่เห็นด้วยว่าความซับซ้อนในการคำนวณนั้นไม่มีปัญหาอีกต่อไป ขึ้นอยู่กับแพลตฟอร์ม นั่งที่คอมพิวเตอร์ตั้งโต๊ะและออกแบบตัวกรองเราไม่ต้องกังวลกับความซับซ้อน อย่างไรก็ตามในแพลตฟอร์มที่เฉพาะเจาะจงและในสถานการณ์ที่การออกแบบจำเป็นต้องทำในรูปแบบเสมือนเรียลไทม์ความซับซ้อนของการคำนวณเป็นปัญหาและเทคนิคการออกแบบที่ง่าย ๆ จะได้รับความนิยมมากกว่าเทคนิคที่เหมาะสมที่สุดซึ่งมีความซับซ้อนมากขึ้น ตัวอย่างเช่นฉันเคยทำงานในระบบสำหรับ beamforming ซึ่งตัวกรอง (beamformer) จะต้องได้รับการออกแบบใหม่ในทันทีและความซับซ้อนในการคำนวณก็เป็นปัญหา

ฉันยังเชื่อว่าในสถานการณ์จริงเราไม่จำเป็นต้องกังวลเกี่ยวกับความแตกต่างระหว่างการออกแบบที่ดีที่สุดและไม่ดี สิ่งนี้ยิ่งเป็นจริงมากขึ้นหากเราจำเป็นต้องใช้เลขคณิตแบบคงที่กับสัมประสิทธิ์เชิงปริมาณและผลลัพธ์เชิงปริมาณของการดำเนินการทางคณิตศาสตร์

ปัญหาอื่นคือความเสถียรเชิงตัวเลขของวิธีการออกแบบตัวกรองที่ดีที่สุดและการนำไปใช้งาน ฉันเจอหลายกรณีที่อัลกอริทึม Parks-McClellan (ฉันควรจะพูดว่าการใช้งานที่ฉันใช้) ไม่ได้มาบรรจบกัน สิ่งนี้จะเกิดขึ้นหากสเปคนั้นไม่สมเหตุสมผล แต่ก็สามารถเกิดขึ้นได้กับสเปคที่สมเหตุสมผลโดยสิ้นเชิง สิ่งเดียวกันนี้เป็นจริงสำหรับวิธีการออกแบบกำลังสองน้อยที่สุดซึ่งจำเป็นต้องแก้ไขระบบสมการเชิงเส้นซึ่งอาจกลายเป็นปัญหาที่ไม่มีเงื่อนไข ภายใต้สถานการณ์เหล่านี้วิธีการเรียงหน้าต่างจะไม่ทำให้คุณผิดหวัง

ข้อสังเกตเกี่ยวกับการเปรียบเทียบระหว่างวิธีหน้าต่างกับการออกแบบกำลังสองน้อยที่สุด: ฉันไม่คิดว่าการเปรียบเทียบนี้แสดงให้เห็นถึงความเหนือกว่าทั่วไปของวิธีกำลังสองน้อยที่สุดเหนือวิธีการเรียงหน้าต่าง ขั้นแรกคุณดูที่การลดทอนสัญญาณย่านหยุดซึ่งไม่มีเป้าหมายในการออกแบบสำหรับทั้งสองวิธี วิธีการเรียงหน้าต่างนั้นไม่เหมาะสมในทุกแง่มุมและการออกแบบกำลังสองน้อยที่สุดจะลดพลังงานของแถบความถี่หยุดและไม่สนใจขนาดระลอกคลื่นที่หยุดทั้งหมด สิ่งที่สามารถเห็นได้คือขอบผ่านของการออกแบบหน้าต่างนั้นใหญ่กว่าการออกแบบช่องสี่เหลี่ยมที่น้อยที่สุดในขณะที่ขอบวงหยุดนั้นเล็กกว่า ดังนั้นความกว้างของช่วงหัวเลี้ยวหัวต่อของตัวกรองที่ได้รับการออกแบบโดยหน้าต่างจะเล็กลงซึ่งจะทำให้ระลอกคลื่นหยุดสูงขึ้น ความแตกต่างในความกว้างของช่วงการเปลี่ยนภาพอาจมีขนาดเล็ก แต่คุณสมบัติตัวกรองนั้นอ่อนไหวต่อพารามิเตอร์นี้มาก ไม่ต้องสงสัยเลยว่าตัวกรองกำลังสองน้อยที่สุดจะมีประสิทธิภาพเหนือกว่าตัวกรองอื่นเมื่อหยุดพลังงานแบบแบนด์ แต่นั่นไม่ใช่เรื่องง่ายที่จะดูว่าเป็นขนาดระลอก และคำถามก็ยังคงอยู่หากความแตกต่างนั้นจะสร้างความแตกต่างในการใช้งานจริง

ให้ฉันแสดงให้คุณเห็นว่าการเปรียบเทียบดังกล่าวมักจะทำให้ดูวิธีที่พวกเขาต้องการดู ในภาพด้านล่างฉันเปรียบเทียบตัวกรองความถี่ต่ำที่เหมาะสมที่สุดที่น้อยที่สุดที่ออกแบบด้วยฟังก์ชัน Matlab / Octave firls.m(สีน้ำเงิน) กับตัวกรองสัญญาณความถี่ต่ำที่ออกแบบด้วยวิธีหน้าต่างโดยใช้หน้าต่าง Kaiser (สีแดง)

ป้อนคำอธิบายรูปภาพที่นี่

จากรูปเราอาจสรุปได้ว่าตัวกรองที่ออกแบบโดยการเรียงหน้าต่างนั้นดีกว่าตัวกรองที่ดีที่สุดกำลังสองน้อยที่สุดเล็กน้อย นี่เป็นเรื่องที่ไม่สมเหตุสมผลเพราะเราไม่ได้กำหนด "ดีกว่า" และตัวกรองกำลังสองน้อยที่สุดจะต้องมีข้อผิดพลาดการประมาณกำลังสองเฉลี่ยที่น้อยกว่า อย่างไรก็ตามคุณไม่เห็นสิ่งนั้นในรูปโดยตรง อย่างไรก็ตามนี่เป็นเพียงเพื่อสนับสนุนการเรียกร้องของฉันว่าจะต้องระมัดระวังและชัดเจนเมื่อทำการเปรียบเทียบดังกล่าว

โดยสรุปนอกเหนือจากการมีประโยชน์ในการเรียนรู้สำหรับนักเรียน DSP ด้วยเหตุผลด้านการปฏิบัติอย่างแท้จริงฉันคิดว่าแม้จะมีความก้าวหน้าทางเทคโนโลยีตั้งแต่ปี 1970 การใช้วิธีการ Windowing สามารถพิสูจน์ได้ในสถานการณ์จริงและฉันไม่คิดว่าจะ เปลี่ยนเร็ว ๆ นี้


คำตอบที่ดี Matt- คำอธิบาย / คำถามของคู่สมรส: เกี่ยวกับความซับซ้อนคุณสามารถดูตัวอย่างจริงได้หรือไม่? ฉันเห็นว่านี่เป็นปัญหาของการใช้งาน แต่ในการหาสัมประสิทธิ์ฉันไม่สามารถคิดด้วยเหตุผลที่ฉันจะออกแบบบนแพลตฟอร์มที่ด้อยกว่า (ดังนั้นคำถามของฉัน) เกี่ยวกับการเปรียบเทียบสี่เหลี่ยมที่น้อยที่สุดนั้นดีกว่าอย่างชัดเจน สำหรับระลอกและการเปลี่ยนแปลงเดียวกันคุณจะได้รับการลดทอนวงดนตรีที่ดีขึ้น ฉันเพิ่มความกว้างของ passband ให้ตรงกับทั้งสอง ขอบนั้นใหญ่กว่าเล็กน้อยซึ่งเป็นที่ที่ฉันหยุดการจับคู่ แต่อาจเข้าใกล้เพื่อสรุป
Dan Boschen

2
@DanBoschen: แน่นอนในกรณีส่วนใหญ่การออกแบบจะทำแบบออฟไลน์และความซับซ้อนไม่ใช่ปัญหา อย่างไรก็ตามฉันเจอแอพพลิเคชั่นที่ฟิลเตอร์จะต้องได้รับการออกแบบใหม่ในแบบเรียลไทม์ (นั่นเป็นแอพพลิเคชั่น beamforming) ดังนั้นคุณจะมีปัญหาเรื่องความซับซ้อน
Matt L.

1
และสำหรับการประหยัดจำนวนก๊อกที่แท้จริงโดยการออกแบบที่ดีที่สุดเมื่อเทียบกับการออกแบบหน้าต่างผลลัพธ์ที่ฉันเห็นมักจะน่าผิดหวัง บ่อยครั้งที่เพียง 1 หรือ 2 ก๊อกซึ่งสำหรับการใช้งานหลาย ๆ อย่างก็ไม่ได้สร้างความแตกต่าง
Matt L.

1
ตกลงสำหรับการออกแบบออฟไลน์และหากความเสถียรของตัวเลขกลายเป็นไม่มีปัญหา (สำหรับการออกแบบเฉพาะนั้นโดยทั่วไปยังคงเป็นปัญหาอยู่) การใช้หน้าต่างจะไม่เป็นประโยชน์ แต่โดยทั่วไปเราไม่สามารถพึ่งพาการออกแบบออฟไลน์ได้เสมอและที่สำคัญยิ่งกว่านั้นคือเราไม่สามารถหลีกเลี่ยงปัญหาตัวเลขได้เสมอ ดังนั้นฉันคิดว่าคำว่า 'ล้าสมัย' ยังคงแข็งแกร่งเกินไป
Matt L.

3
พูดได้เป็นอย่างดี. สิ่งที่ต้องจำคือวิศวกรรมคือทั้งหมดที่เกี่ยวกับการค้นหาการใช้งานที่ดีพอที่จะตอบสนองความต้องการของคุณ วิธีการของหน้าต่างนั้นง่ายต่อการติดตั้งและใช้งานได้เสมอ วิธีการอื่น ๆ มีการใช้งานที่ซับซ้อนมากขึ้นและอาจมีกรณีที่พวกเขามีความยุ่งยากในการทำงาน ฉันทำงานกับหลาย ๆ ระบบที่จำเป็นต้องออกแบบตัวกรองได้ทันทีและวิธีการของหน้าต่างเป็นสิ่งที่ต้องทำสำหรับสถานการณ์เหล่านั้น
Jason R

7

ตัวกรอง Sinc แบบหน้าต่างสามารถสร้างขึ้นได้อย่างรวดเร็วบนโปรเซสเซอร์ที่มีประสิทธิภาพแทบไม่เพียงพอที่จะเรียกใช้ตัวกรอง FIR ที่เกี่ยวข้อง ตัวกรอง Sinc แบบหน้าต่างสามารถสร้างได้ในเวลาที่มีขอบเขต จำกัด

การสร้างตัวกรอง Sinc แบบง่ายบางหน้าต่างสามารถอธิบายได้อย่างสมบูรณ์ (และตรวจสอบมัลแวร์และอื่น ๆ ) ในโค้ดไม่กี่บรรทัดเมื่อเทียบกับการใช้งานกล่องเครื่องมือแบบทึบ

จำเป็นต้องมีพื้นหลังทางคณิตศาสตร์ที่จำเป็นต้องมีล่วงหน้าเพื่ออธิบายตัวกรอง Sinc แบบหน้าต่างเปรียบเทียบกับสิ่งที่ต้องใช้ในการสร้างรหัสตัวกรอง PMcC ตั้งแต่เริ่มต้น

ระลอกคลื่นเท่ากันในการตอบสนองความถี่ของตัวกรอง PMcC สามารถทำให้เกิดสิ่งประดิษฐ์ในโดเมนเวลาที่แตกต่างกัน (และอาจเป็นที่ต้องการน้อยกว่า) กว่าสิ่งประดิษฐ์ที่สร้างขึ้นโดยตัวกรองแบบหน้าต่างที่เรียบง่าย


1
ใช่จุดที่ดี @ hotpaw2 ระลอก passband นำไปสู่การแทรกข้ามระหว่างสัญลักษณ์ (ต่อท้ายและ echos ชั้นนำ) ขอบคุณ
Dan Boschen

2
เราได้พูดคุยเกี่ยวกับสวนสาธารณะ-McClellan ล่วงหน้าและการสะท้อนการโพสต์บน comp.dsp ในปี 2003 Alexey Lukin โพสต์ตัวอย่างของ MATLAB ที่น้อยที่สุด: f=[0 0.49 0.51 1]; a=[1 1 0 0]; b=remez(300,f,a)ซึ่งยังทำงานใน Octave คำอธิบายก็คือเมื่อใช้ตัวกรองที่สูงชันมากระลอกคลื่นอาจเป็นปกติพอที่จะคล้ายกับโคไซน์ โดเมนเวลาที่เทียบเท่ากับโดเมนความถี่โคไซน์จะเป็น echos หุนหันพลันแล่นสองตัว
Olli Niemitalo

6

ฉันจะแสดงที่นี่หนึ่งประโยชน์ของการออกแบบที่มีหน้าต่างและเคล็ดลับที่จะได้รับประโยชน์เดียวกันจาก Parks – McClellan

สำหรับครึ่งวงดนตรีตัวกรองสี่ส่วน ฯลฯ การกรองหน้าต่างจะรักษาค่าศูนย์โดเมนของฟังก์ชันซินสเกลที่ถูกปรับขนาดซึ่งเป็นตัวกรอง low-pass ต้นแบบต้นแบบในอุดมคติ เลขศูนย์ท้ายลงในค่าสัมประสิทธิ์ลดค่าใช้จ่ายในการคำนวณของตัวกรอง สำหรับตัวกรองครึ่งแบนด์การออกแบบหน้าต่างให้ตัวกรองที่มีค่าสัมประสิทธิ์สม่ำเสมอทุกตัว 0 ยกเว้นค่าสัมประสิทธิ์กลาง (ซึ่งถือว่าเป็นค่าเท่ากัน):

sinc
รูปที่ 1. ฟังก์ชั่น Sinc ที่ขยายในแนวนอนโดยปัจจัยที่ 2 คือตัวกรอง low-pass ต้นแบบครึ่งวงต้นแบบที่ได้รับ 2 เหมาะสำหรับการสุ่มตัวอย่างสูงสุดโดยปัจจัยที่ 2

อย่างไรก็ตาม Parks – McClellan / Remez สามารถถูกหลอกเพื่อให้ได้รับผลประโยชน์แบบเดียวกันโดยการออกแบบโดยใช้ตัวกรองที่มีจำนวนก๊อกเท่ากันโดยมีการกำหนดวงดนตรีผ่านเอกภาพที่เป็นเอกภาพเท่านั้น ค่าสัมประสิทธิ์ที่ได้รับจะถูกใช้เป็นค่าสัมประสิทธิ์คี่ของตัวกรองอีกต่อไป สัมประสิทธิ์กลางของตัวกรองที่ยาวกว่าถูกตั้งค่าเป็น 1 และค่าสัมประสิทธิ์อื่น ๆ เป็น 0 ตัวกรองนี้จะได้รับ 2 ในวงพาสและริปสมมาตรในวงพาสและสต็อป ใน Python:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
c0 = signal.remez(14, [0, 3500.0/8000], [1])
c = np.zeros(c0.size*2-1)
c[0::2] = c0
c[c0.size-1] = 1
freq, response = signal.freqz(c)
plt.semilogy(freq/(2*np.pi), np.abs(response))
plt.show()
plt.plot(range(-c0.size+1, c0.size, 1), c, 'x')
plt.grid(True)
plt.show()

รูปที่ 2
รูปที่ 2 ค่าสัมประสิทธิ์ของตัวกรองครึ่งวงได้รับการออกแบบโดยใช้ทางอ้อม scipy.signal.remez

รูปที่ 3
รูปที่ 3 scipy.signal.remezขนาดพล็อตการตอบสนองความถี่ของตัวกรองครึ่งวงได้รับการออกแบบโดยใช้ทางอ้อม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.