การออกแบบตัวกรองดิจิตอลเป็นหัวข้อที่ใหญ่และเป็นผู้ใหญ่มากและดังที่คุณได้กล่าวถึงในคำถามของคุณมีวัสดุจำนวนมาก สิ่งที่ฉันต้องการลองที่นี่คือให้คุณเริ่มต้นและทำให้เนื้อหาที่มีอยู่สามารถเข้าถึงได้มากขึ้น แทนที่จะเป็นตัวกรองดิจิตัลฉันควรพูดถึงตัวกรองแบบไม่ต่อเนื่องเพราะฉันจะไม่พิจารณาค่าสัมประสิทธิ์และการหาปริมาณของสัญญาณที่นี่ คุณรู้เรื่องตัวกรอง FIR และ IIR อยู่แล้วและคุณก็รู้โครงสร้างตัวกรองบางอย่างเช่น DF I และ II อย่างไรก็ตามให้ฉันเริ่มต้นด้วยพื้นฐานบางอย่าง:
สามารถอธิบายตัวกรองเชิงเส้นเวลาไม่แปรปรวนเชิงเส้น (LTI) แบบไม่ซ้ำโดยสมการผลต่างต่อไปนี้
y(n)=h0x(n)+h1x(n−1)+…+hN−1x(n−N+1)=∑k=0N−1hkx(n−k)(1)
โดยที่คือลำดับเอาต์พุต, x ( n )คือลำดับอินพุต, nคือดัชนีเวลา, h kคือสัมประสิทธิ์ตัวกรอง, และNคือความยาวตัวกรอง (จำนวนก๊อก) ตัวกรองก๊อกชั่วโมงkนอกจากนี้ยังกระตุ้นการตอบสนองของตัวกรองเพราะถ้าสัญญาณอินพุตเป็นแรงกระตุ้นคือx ( n ) = δ ( n )แล้วY ( n ) = H ny(n)x(n)nhkNhkx(n)=δ(n)y(n)=hn(หากหน่วยความจำของตัวกรองได้รับการเริ่มต้นด้วยศูนย์) สมการ (1) อธิบายระบบการตอบสนองต่อแรงกระตุ้นไฟไนต์เอลิเมนต์แบบไม่ จำกัด เวลาเชิงเส้น (FIR) ผลรวมทางด้านขวามือของ (1) คือผลรวมของรูปแบบการแปลงคือสัญญาณที่ได้จากการแปลงสัญญาณอินพุตด้วยการตอบสนองแบบอิมพัลส์ สิ่งนี้เป็นจริงเสมอ แต่สำหรับตัวกรอง IIR เราไม่สามารถคำนวณผลรวม convolutions ได้อย่างชัดเจนเนื่องจากการตอบสนองต่อแรงกระตุ้นนั้นมีความยาวไม่สิ้นสุดนั่นคือมีค่าสัมประสิทธิ์มากมายอนันต์hk. ข้อได้เปรียบที่สำคัญอย่างหนึ่งของตัวกรอง FIR ก็คือพวกมันจะมีความเสถียรเสมอเช่นสำหรับลำดับอินพุตที่มีขอบเขต ข้อดีอีกประการคือตัวกรอง FIR สามารถรับรู้ได้เสมอกับเฟสเชิงเส้นนั่นคือพวกมันจะไม่เพิ่มการบิดเบือนเฟสใด ๆ นอกเหนือจากการหน่วงเวลาที่บริสุทธิ์ นอกจากนี้ปัญหาการออกแบบมักจะง่ายกว่าที่เราจะเห็นในภายหลัง
ตัวกรอง LTI แบบเรียกซ้ำมีการอธิบายโดยสมการแตกต่างดังต่อไปนี้:
y(n)=b0x(n)+b1x(n−1)+…+bMx(n−M)−−a1y(n−1)−…−aNy(n−N)(2)
สมการ (2) แสดงว่าเอาต์พุตไม่เพียง แต่ประกอบด้วยน้ำหนักตัวอย่างและอินพุตล่าช้าเท่านั้น แต่ยังรวมถึงน้ำหนักผลลัพธ์ตัวอย่างที่ผ่านมาด้วย โดยทั่วไปการตอบสนองต่อแรงกระตุ้นของระบบดังกล่าวมีความยาวไม่ จำกัด เช่นระบบที่เกี่ยวข้องคือระบบ IIR อย่างไรก็ตามมีกรณีพิเศษของตัวกรองซ้ำที่มีการตอบสนองต่อแรงกระตุ้น จำกัด โปรดทราบว่าการกระตุ้นการตอบสนองไม่ได้รับอีกต่อไปโดยทั้งค่าสัมประสิทธิ์หรือkเช่นในกรณีของฟิลเตอร์เฟอร์ ข้อดีอย่างหนึ่งของตัวกรอง IIR ก็คือตัวกรองแบบชันที่มีการลดทอนสัญญาณ Stopband สูงสามารถรับรู้ได้ว่ามีค่าสัมประสิทธิ์ (และความล่าช้า) น้อยกว่าในกรณี FIR นั่นคือมีประสิทธิภาพในการคำนวณมากกว่า แต่หนึ่งต้องระมัดระวังกับทางเลือกของค่าสัมประสิทธิ์ที่kbkakak เนื่องจากตัวกรอง IIR ไม่เสถียรนั่นคือลำดับของเอาต์พุตสามารถถูก จำกัด ได้แม้ว่าจะมีลำดับอินพุตที่ถูกล้อมรอบก็ตาม
ตัวกรองสามารถออกแบบตามข้อกำหนดในโดเมนเวลา (ตัวอย่าง) หรือในโดเมนความถี่หรือทั้งสองอย่าง เนื่องจากคุณได้กล่าวถึงความถี่ตัดคำในคำถามของคุณฉันถือว่าคุณสนใจข้อมูลจำเพาะในโดเมนความถี่มากกว่า ในกรณีนี้คุณต้องดูการตอบสนองความถี่ของระบบ FIR และ IIR การตอบสนองความถี่ของระบบคือการแปลงฟูริเยร์ของการตอบสนองของแรงกระตุ้นโดยสมมติว่ามีอยู่ (ซึ่งเป็นกรณีของระบบที่เสถียร) การตอบสนองความถี่ของตัวกรอง FIR คือ
H( ej θ) = ∑k = 0ยังไม่มีข้อความ- 1ชั่วโมงkอี- j k θ(3)
θ
θ = 2 πฉฉs
ฉฉs
H( ej θ) = ∑Mk = 0ขkอี- j θ1 + ∑ยังไม่มีข้อความk = 1akอี- j θ(4)
ak= 0k = 1 , … , N
ตอนนี้มาดูวิธีการออกแบบตัวกรองอย่างรวดเร็ว สำหรับตัวกรอง FIR คุณสามารถใช้การแปลงฟูริเยร์แบบผกผันของการตอบสนองความถี่ที่ต้องการเพื่อรับการตอบสนองแบบแรงกระตุ้นของตัวกรองซึ่งสอดคล้องกับสัมประสิทธิ์ตัวกรองโดยตรง เนื่องจากคุณประมาณการตอบสนองที่ต้องการโดยการตอบสนองต่อแรงกระตุ้นที่มีความยาว จำกัด คุณควรใช้หน้าต่างที่เรียบเพื่อตอบสนองต่อแรงกระตุ้นที่ได้รับเพื่อลดการแกว่งในการตอบสนองความถี่จริงเนื่องจากปรากฏการณ์ของกิ๊บส์ วิธีนี้เรียกว่าวิธีการสุ่มตัวอย่างด้วยความถี่
สำหรับตัวกรองมาตรฐานอย่างง่ายเช่นตัวกรอง lowpass, highpass, bandpass หรือ bandstop (และตัวกรองอื่น ๆ ) และคุณยังสามารถวิเคราะห์การคำนวณการตอบสนองต่อแรงกระตุ้นได้อย่างแม่นยำโดยทำการแปลงฟูเรียร์ผกผันของการตอบสนองที่ต้องการ:
ชั่วโมงk= 12 π∫π- πH( ej θ) ej k θdθ
อินทิกรัลนี้ง่ายต่อการประเมินสำหรับการตอบสนองที่ต้องการค่าคงที่ทีละชิ้นเช่นในกรณีของตัวกรองที่เลือกความถี่ สิ่งนี้จะช่วยให้คุณตอบสนองต่อแรงกระตุ้นที่ไม่มีสาเหตุที่ยาวนานอย่างไม่สิ้นสุดซึ่งจำเป็นต้องมีหน้าต่างและเลื่อนไปมาเพื่อให้แน่นอนและเป็นสาเหตุ วิธีการนี้เป็นวิธีการออกแบบหน้าต่าง
แน่นอนว่ามีวิธีการออกแบบตัวกรอง FIR อื่น ๆ อีกมากมาย วิธีการเชิงตัวเลขที่สำคัญอย่างหนึ่งคืออัลกอริธึมการแลกเปลี่ยน Parks-McClellan ที่มีชื่อเสียงซึ่งออกแบบตัวกรองที่ดีที่สุดด้วยค่าคงที่ passband และ stopband มันเป็นวิธีการประมาณเชิงตัวเลขและมีการใช้งานซอฟต์แวร์จำนวนมากเช่นใน Matlab และ Octave
ssZ
แน่นอนว่ามีวิธีการที่น่าสนใจและมีประโยชน์มากมายขึ้นอยู่กับประเภทของคุณสมบัติที่คุณมี แต่ฉันหวังว่าสิ่งนี้จะช่วยให้คุณเริ่มต้นได้ หนังสือที่ดี (และฟรี) ที่ครอบคลุมวิธีการออกแบบตัวกรองขั้นพื้นฐาน (และอีกมากมาย) คือการประมวลผลสัญญาณไปยังการประมวลผลโดย Orfanidis คุณสามารถค้นหาตัวอย่างการออกแบบได้ที่นี่ หนังสือคลาสสิกที่ยอดเยี่ยมอีกเล่มหนึ่งคือการออกแบบตัวกรองดิจิตอลโดย Parks and Burrus